Documents
Upload borrower documents and read extraction output.
List documents
GET /applications/{id}/documents
/applications/{id}/documentscurl
curl -X GET "https://underwriter.kita.ai/api/v1/applications/{id}/documents" \
-H "Authorization: ApiKey $KITA_UW_API_KEY"Path parameters
| Field | Type | Description |
|---|---|---|
idrequired | string | Application UUID or human `app_id`, for example `APP-1042`. |
Query parameters
| Field | Type | Description |
|---|---|---|
include | string | Pass `download_url` to attach one-hour signed download URLs. One of: download_url. |
Response · 200
| Field | Type | Description |
|---|---|---|
data | object[] | |
data[].id | string(uuid) | |
data[].file_name | string | |
data[].status | string | Document extraction status. `awaiting` and `processing` are the only non-terminal states; `low_confidence` means extraction finished but the result wants a human look. One of: awaiting, processing, verified, low_confidence, missing. |
data[].download_url | string(uri) | Present only when requested with `?include=download_url`. Valid for one hour. |
data[].kita_raw | object | Raw extraction output. |
data[].recommendations | object[] | |
data[].inconsistencies | object[] | |
data[].created_at | string(date-time) |
Errors
| Field | Type | Description |
|---|---|---|
401 | error | Invalid API key. |
404 | error | Not found, or belongs to another organization. |
Upload documents
POST /applications/{id}/documents
Upload one or more files to an existing application. Accepts a single file
field or repeated file / files fields. Each file is stored immediately
and processed asynchronously.
/applications/{id}/documentscurl
curl -X POST "https://underwriter.kita.ai/api/v1/applications/{id}/documents" \
-H "Authorization: ApiKey $KITA_UW_API_KEY" \
-F 'file=["@file.pdf"];type=application/json' \
-F 'files=["@file.pdf"];type=application/json'Path parameters
| Field | Type | Description |
|---|---|---|
idrequired | string | Application UUID or human `app_id`, for example `APP-1042`. |
Request body · multipart/form-data
| Field | Type | Description |
|---|---|---|
file | file[] | |
files | file[] |
Response · 201
| Field | Type | Description |
|---|---|---|
data | object[] | |
data[].id | string(uuid) | |
data[].file_name | string | |
data[].status | string | Document extraction status. `awaiting` and `processing` are the only non-terminal states; `low_confidence` means extraction finished but the result wants a human look. One of: awaiting, processing, verified, low_confidence, missing. |
data[].download_url | string(uri) | Present only when requested with `?include=download_url`. Valid for one hour. |
data[].kita_raw | object | Raw extraction output. |
data[].recommendations | object[] | |
data[].inconsistencies | object[] | |
data[].created_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. |
Get a document
GET /applications/{id}/documents/{docId}
Returns the document including kita_raw, recommendations and
inconsistencies. Poll this until status leaves awaiting or processing.
/applications/{id}/documents/{docId}curl
curl -X GET "https://underwriter.kita.ai/api/v1/applications/{id}/documents/{docId}" \
-H "Authorization: ApiKey $KITA_UW_API_KEY"Path parameters
| Field | Type | Description |
|---|---|---|
idrequired | string | Application UUID or human `app_id`, for example `APP-1042`. |
docIdrequired | string |
Response · 200
| Field | Type | Description |
|---|---|---|
data | object | |
data.id | string(uuid) | |
data.file_name | string | |
data.status | string | Document extraction status. `awaiting` and `processing` are the only non-terminal states; `low_confidence` means extraction finished but the result wants a human look. One of: awaiting, processing, verified, low_confidence, missing. |
data.download_url | string(uri) | Present only when requested with `?include=download_url`. Valid for one hour. |
data.kita_raw | object | Raw extraction output. |
data.recommendations | object[] | |
data.inconsistencies | object[] | |
data.created_at | string(date-time) |
Errors
| Field | Type | Description |
|---|---|---|
401 | error | Invalid API key. |
404 | error | Not found, or belongs to another organization. |
Delete a document
DELETE /applications/{id}/documents/{docId}
Deletes one document and its stored file, then recomputes file completeness.
The MCP tool requires confirm: true.
/applications/{id}/documents/{docId}curl
curl -X DELETE "https://underwriter.kita.ai/api/v1/applications/{id}/documents/{docId}" \
-H "Authorization: ApiKey $KITA_UW_API_KEY"Path parameters
| Field | Type | Description |
|---|---|---|
idrequired | string | Application UUID or human `app_id`, for example `APP-1042`. |
docIdrequired | string |
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. |
Get one document transcript
GET /applications/{id}/documents/{docId}/transcript
Plain-text transcript reconstructed from Reducto layout blocks.
/applications/{id}/documents/{docId}/transcriptcurl
curl -X GET "https://underwriter.kita.ai/api/v1/applications/{id}/documents/{docId}/transcript" \
-H "Authorization: ApiKey $KITA_UW_API_KEY"Path parameters
| Field | Type | Description |
|---|---|---|
idrequired | string | Application UUID or human `app_id`, for example `APP-1042`. |
docIdrequired | string |
Query parameters
| Field | Type | Description |
|---|---|---|
format | string | Defaults to `txt` over HTTP. The MCP tool defaults to `json`. One of: txt, json. |
200 The transcript.
Errors
| Field | Type | Description |
|---|---|---|
401 | error | Invalid API key. |
404 | error | Not found, or belongs to another organization. |
Get every transcript in the file
GET /applications/{id}/transcripts
/applications/{id}/transcriptscurl
curl -X GET "https://underwriter.kita.ai/api/v1/applications/{id}/transcripts" \
-H "Authorization: ApiKey $KITA_UW_API_KEY"Path parameters
| Field | Type | Description |
|---|---|---|
idrequired | string | Application UUID or human `app_id`, for example `APP-1042`. |
Query parameters
| Field | Type | Description |
|---|---|---|
format | string | `json` returns structured per-document text and counts. `txt` returns a single text dump. One of: txt, json. |
200 The transcripts.
Errors
| Field | Type | Description |
|---|---|---|
401 | error | Invalid API key. |
404 | error | Not found, or belongs to another organization. |

