AI UnderwriterAPI reference

Documents

Upload borrower documents and read extraction output.

List documents

GET /applications/{id}/documents

GET/applications/{id}/documents

curl

curl -X GET "https://underwriter.kita.ai/api/v1/applications/{id}/documents" \
  -H "Authorization: ApiKey $KITA_UW_API_KEY"

Path parameters

FieldTypeDescription
idrequiredstringApplication UUID or human `app_id`, for example `APP-1042`.

Query parameters

FieldTypeDescription
includestringPass `download_url` to attach one-hour signed download URLs. One of: download_url.

Response · 200

FieldTypeDescription
dataobject[]
  data[].idstring(uuid)
  data[].file_namestring
  data[].statusstringDocument 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_urlstring(uri)Present only when requested with `?include=download_url`. Valid for one hour.
  data[].kita_rawobjectRaw extraction output.
  data[].recommendationsobject[]
  data[].inconsistenciesobject[]
  data[].created_atstring(date-time)

Errors

FieldTypeDescription
401errorInvalid API key.
404errorNot 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.

POST/applications/{id}/documents

curl

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

FieldTypeDescription
idrequiredstringApplication UUID or human `app_id`, for example `APP-1042`.

Request body · multipart/form-data

FieldTypeDescription
filefile[]
filesfile[]

Response · 201

FieldTypeDescription
dataobject[]
  data[].idstring(uuid)
  data[].file_namestring
  data[].statusstringDocument 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_urlstring(uri)Present only when requested with `?include=download_url`. Valid for one hour.
  data[].kita_rawobjectRaw extraction output.
  data[].recommendationsobject[]
  data[].inconsistenciesobject[]
  data[].created_atstring(date-time)

Errors

FieldTypeDescription
400errorMalformed request.
403errorThe key is valid but lacks the scope this endpoint requires.
404errorNot 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.

GET/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

FieldTypeDescription
idrequiredstringApplication UUID or human `app_id`, for example `APP-1042`.
docIdrequiredstring

Response · 200

FieldTypeDescription
dataobject
  data.idstring(uuid)
  data.file_namestring
  data.statusstringDocument 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_urlstring(uri)Present only when requested with `?include=download_url`. Valid for one hour.
  data.kita_rawobjectRaw extraction output.
  data.recommendationsobject[]
  data.inconsistenciesobject[]
  data.created_atstring(date-time)

Errors

FieldTypeDescription
401errorInvalid API key.
404errorNot 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.

DELETE/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

FieldTypeDescription
idrequiredstringApplication UUID or human `app_id`, for example `APP-1042`.
docIdrequiredstring

Response · 200

FieldTypeDescription
dataobject
  data.deletedboolean

Errors

FieldTypeDescription
403errorThe key is valid but lacks the scope this endpoint requires.
404errorNot found, or belongs to another organization.

Get one document transcript

GET /applications/{id}/documents/{docId}/transcript

Plain-text transcript reconstructed from Reducto layout blocks.

GET/applications/{id}/documents/{docId}/transcript

curl

curl -X GET "https://underwriter.kita.ai/api/v1/applications/{id}/documents/{docId}/transcript" \
  -H "Authorization: ApiKey $KITA_UW_API_KEY"

Path parameters

FieldTypeDescription
idrequiredstringApplication UUID or human `app_id`, for example `APP-1042`.
docIdrequiredstring

Query parameters

FieldTypeDescription
formatstringDefaults to `txt` over HTTP. The MCP tool defaults to `json`. One of: txt, json.

200 The transcript.

Errors

FieldTypeDescription
401errorInvalid API key.
404errorNot found, or belongs to another organization.

Get every transcript in the file

GET /applications/{id}/transcripts

GET/applications/{id}/transcripts

curl

curl -X GET "https://underwriter.kita.ai/api/v1/applications/{id}/transcripts" \
  -H "Authorization: ApiKey $KITA_UW_API_KEY"

Path parameters

FieldTypeDescription
idrequiredstringApplication UUID or human `app_id`, for example `APP-1042`.

Query parameters

FieldTypeDescription
formatstring`json` returns structured per-document text and counts. `txt` returns a single text dump. One of: txt, json.

200 The transcripts.

Errors

FieldTypeDescription
401errorInvalid API key.
404errorNot found, or belongs to another organization.

On this page