Applications
Create, list, update and delete loan applications.
Single-call application intake
POST /intake
Push the borrower, loan terms and any files in one request. Intended for a core banking system or LOS.
Pass external_ref from the integrating system to make retries idempotent.
When an external_ref already exists for the organization, this returns the
existing application with HTTP 200 and idempotent: true, and skips the
duplicate file upload.
/intakecurl
curl -X POST "https://underwriter.kita.ai/api/v1/intake" \
-H "Authorization: ApiKey $KITA_UW_API_KEY" \
-F 'application={"business_name":"<business_name>","borrower_email":"borrower@example.com"};type=application/json'Request body · multipart/form-data
| Field | Type | Description |
|---|---|---|
applicationrequired | object | JSON metadata part. |
application.business_namerequired | string | Borrower business or legal name. |
application.borrower_emailrequired | string(email) | |
application.borrower_phone | string | |
application.loan_type | string | Loan product, such as `SBA 7(a)` or `Term loan`. |
application.loan_amount | number | Requested amount. |
application.application_context | string | Loan purpose or context. |
application.external_ref | string | Idempotency key from the integrating system. |
application.send_outreach | boolean | When true, Kita may email the borrower for missing documents. |
application.track | string | Parametric field for configured loan products. |
application.profile | string | Parametric field for configured loan products. |
application.asset_value | number | |
application.term_months | integer | |
application.scorecard_inputs | object | |
file | file[] | |
files | file[] |
Response · 200
| Field | Type | Description |
|---|---|---|
data | object | |
data.id | string(uuid) | |
data.app_id | string | Human-readable identifier, for example `APP-1042`. |
data.business_name | string | |
data.borrower_email | string(email) | |
data.borrower_phone | string | |
data.loan_type | string | |
data.loan_amount | number | |
data.application_context | string | |
data.external_ref | string | |
data.status | string | Application lifecycle status. One of: submitted, awaiting_docs, underwriting, question_raised, memo_drafted, approved, declined. |
data.document_count | integer | |
data.created_at | string(date-time) | |
data.updated_at | string(date-time) | |
idempotent | boolean | One of: true. |
Errors
| Field | Type | Description |
|---|---|---|
400 | error | Malformed request. |
401 | error | Invalid API key. |
403 | error | The key is valid but lacks the scope this endpoint requires. |
502 | error | Partial intake failure. The application was created but a document upload failed. Retry the upload against `POST /applications/{id}/documents`. |
List applications
GET /applications
Lists applications in the organization, most-recently-active first.
/applicationscurl
curl -X GET "https://underwriter.kita.ai/api/v1/applications" \
-H "Authorization: ApiKey $KITA_UW_API_KEY"Query parameters
| Field | Type | Description |
|---|---|---|
status | string | One of: submitted, awaiting_docs, underwriting, question_raised, memo_drafted, approved, declined. |
limit | integer | |
offset | integer |
Response · 200
| Field | Type | Description |
|---|---|---|
data | object[] | |
data[].id | string(uuid) | |
data[].app_id | string | Human-readable identifier, for example `APP-1042`. |
data[].business_name | string | |
data[].borrower_email | string(email) | |
data[].borrower_phone | string | |
data[].loan_type | string | |
data[].loan_amount | number | |
data[].application_context | string | |
data[].external_ref | string | |
data[].status | string | Application lifecycle status. One of: submitted, awaiting_docs, underwriting, question_raised, memo_drafted, approved, declined. |
data[].document_count | integer | |
data[].created_at | string(date-time) | |
data[].updated_at | string(date-time) |
Errors
| Field | Type | Description |
|---|---|---|
400 | error | Malformed request. |
401 | error | Invalid API key. |
Create an application
POST /applications
Create an application without files. Body fields mirror /intake, except
that idempotency belongs to /intake.
/applicationscurl
curl -X POST "https://underwriter.kita.ai/api/v1/applications" \
-H "Authorization: ApiKey $KITA_UW_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"business_name": "<business_name>",
"borrower_email": "borrower@example.com"
}'Request body · application/json
| Field | Type | Description |
|---|---|---|
business_namerequired | string | Borrower business or legal name. |
borrower_emailrequired | string(email) | |
borrower_phone | string | |
loan_type | string | Loan product, such as `SBA 7(a)` or `Term loan`. |
loan_amount | number | Requested amount. |
application_context | string | Loan purpose or context. |
external_ref | string | Idempotency key from the integrating system. |
send_outreach | boolean | When true, Kita may email the borrower for missing documents. |
track | string | Parametric field for configured loan products. |
profile | string | Parametric field for configured loan products. |
asset_value | number | |
term_months | integer | |
scorecard_inputs | object |
Response · 201
| Field | Type | Description |
|---|---|---|
data | object | |
data.id | string(uuid) | |
data.app_id | string | Human-readable identifier, for example `APP-1042`. |
data.business_name | string | |
data.borrower_email | string(email) | |
data.borrower_phone | string | |
data.loan_type | string | |
data.loan_amount | number | |
data.application_context | string | |
data.external_ref | string | |
data.status | string | Application lifecycle status. One of: submitted, awaiting_docs, underwriting, question_raised, memo_drafted, approved, declined. |
data.document_count | integer | |
data.created_at | string(date-time) | |
data.updated_at | string(date-time) |
Errors
| Field | Type | Description |
|---|---|---|
400 | error | Malformed request. |
401 | error | Invalid API key. |
403 | error | The key is valid but lacks the scope this endpoint requires. |
Get an application
GET /applications/{id}
Includes document_count.
/applications/{id}curl
curl -X GET "https://underwriter.kita.ai/api/v1/applications/{id}" \
-H "Authorization: ApiKey $KITA_UW_API_KEY"Path parameters
| Field | Type | Description |
|---|---|---|
idrequired | string | Application UUID or human `app_id`, for example `APP-1042`. |
Response · 200
| Field | Type | Description |
|---|---|---|
data | object | |
data.id | string(uuid) | |
data.app_id | string | Human-readable identifier, for example `APP-1042`. |
data.business_name | string | |
data.borrower_email | string(email) | |
data.borrower_phone | string | |
data.loan_type | string | |
data.loan_amount | number | |
data.application_context | string | |
data.external_ref | string | |
data.status | string | Application lifecycle status. One of: submitted, awaiting_docs, underwriting, question_raised, memo_drafted, approved, declined. |
data.document_count | integer | |
data.created_at | string(date-time) | |
data.updated_at | string(date-time) |
Errors
| Field | Type | Description |
|---|---|---|
401 | error | Invalid API key. |
404 | error | Not found, or belongs to another organization. |
Update an application
PATCH /applications/{id}
/applications/{id}curl
curl -X PATCH "https://underwriter.kita.ai/api/v1/applications/{id}" \
-H "Authorization: ApiKey $KITA_UW_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"business_name": "<business_name>",
"loan_type": "<loan_type>",
"loan_amount": 0,
"application_context": "<application_context>"
}'Path parameters
| Field | Type | Description |
|---|---|---|
idrequired | string | Application UUID or human `app_id`, for example `APP-1042`. |
Request body · application/json
| Field | Type | Description |
|---|---|---|
business_name | string | |
loan_type | string | |
loan_amount | number | |
application_context | string | |
status | string | Application lifecycle status. One of: submitted, awaiting_docs, underwriting, question_raised, memo_drafted, approved, declined. |
track | string | |
profile | string | |
asset_value | number | |
asset_useful_life_years | number | |
term_months | integer |
Response · 200
| Field | Type | Description |
|---|---|---|
data | object | |
data.id | string(uuid) | |
data.app_id | string | Human-readable identifier, for example `APP-1042`. |
data.business_name | string | |
data.borrower_email | string(email) | |
data.borrower_phone | string | |
data.loan_type | string | |
data.loan_amount | number | |
data.application_context | string | |
data.external_ref | string | |
data.status | string | Application lifecycle status. One of: submitted, awaiting_docs, underwriting, question_raised, memo_drafted, approved, declined. |
data.document_count | integer | |
data.created_at | string(date-time) | |
data.updated_at | string(date-time) |
Errors
| Field | Type | Description |
|---|---|---|
400 | error | Malformed request. |
403 | error | The key is valid but lacks the scope this endpoint requires. |
404 | error | Not found, or belongs to another organization. |
Delete an application
DELETE /applications/{id}
Permanently deletes the application, its documents, storage files and the
orphaned borrower record. This cannot be undone. The MCP tool requires
confirm: true before calling it.
/applications/{id}curl
curl -X DELETE "https://underwriter.kita.ai/api/v1/applications/{id}" \
-H "Authorization: ApiKey $KITA_UW_API_KEY"Path parameters
| Field | Type | Description |
|---|---|---|
idrequired | string | Application UUID or human `app_id`, for example `APP-1042`. |
Response · 200
| Field | Type | Description |
|---|---|---|
data | object | |
data.deleted | boolean |
Errors
| Field | Type | Description |
|---|---|---|
403 | error | The key is valid but lacks the scope this endpoint requires. |
404 | error | Not found, or belongs to another organization. |

