Kita

API reference

Endpoints for document processing and optional workflows.

Base URL: https://api.kita.ai/api/v1. Authenticate with a Bearer API key.

ResourceUse it to
DocumentsUpload, poll, retrieve, list, delete, or merge documents.
BatchSubmit separate documents and retrieve batch results.
TransactionsReplace transactions, revert edits, or rerun validation.
VerificationCompare completed documents or inspect authenticity.
ExportsDownload Excel output.
WebhooksRegister signed callbacks.
Folders & custom schemasGroup documents and configure extraction fields.

Use Results for response fields and Integration guide for permissions and retries.

Documents

List documents

List documents in your organization, newest first. Requires document:read.

GET/documents

curl

curl -X GET "https://api.kita.ai/api/v1/documents" \
  -H "Authorization: Bearer $KITA_API_KEY"

Query parameters

  • pageinteger
  • limitinteger
  • statusstring
    One of: pending, processing, completed, failed.
  • document_typestring

Response shape (illustrative) · 200

{
  "success": true,
  "pagination": {
    "page": 42,
    "limit": 42,
    "total": 42,
    "pages": 42
  },
  "documents": [
    {
      "id": 42,
      "file_name": "<file_name>",
      "completed_at": "2026-05-14T10:00:00Z",
      "processing": {}
    }
  ]
}

Errors400 What these mean

Upload and process a document

Upload a file, base64, or URL for processing (supports webhook_url). Provide one of file, file_base64, or file_url. Requires document:write. The document_id (an integer) in the response identifies the document in the path of every other document endpoint.

POST/documents

curl

curl -X POST "https://api.kita.ai/api/v1/documents" \
  -H "Authorization: Bearer $KITA_API_KEY" \
  -F "file=@./statement.pdf" \
  -F "document_type=bank_statement"
Request fields

multipart/form-data

  • filefile
    Multipart upload; maximum 100 MB. Accepts PDF, PNG, JPG/JPEG, TIFF/TIF, BMP, TXT, CSV, XLSX, and XLS. Extraction depends on document type.
  • document_typestringrequired
    Values are case-insensitive and common aliases are normalized automatically, including afs to audited_financial_statement and gis to general_information_sheet. One of: certificate_of_employment, credit_card_statement, credit_report, loan_statement, passbook, remittance_slip, tin_id, audited_financial_statement, and 47 more.
  • passwordstring
    PDF password, if encrypted.
  • webhook_urlstring(uri)
    URL that receives a POST when processing completes or fails.

Response shape (illustrative) · 202

{
  "document_id": 42,
  "status": "pending"
}

Errors400 · 403 What these mean

Merge several files into one document

Merge multiple files into one document for processing. Send a JSON body with an array of 2–50 files to merge and process as one document.

POST/documents/merge

curl

curl -X POST "https://api.kita.ai/api/v1/documents/merge" \
  -H "Authorization: Bearer $KITA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "files": [
    {
      "file_url": "https://example.com/file.pdf",
      "file_base64": "<file_base64>",
      "filename": "<filename>"
    }
  ],
  "document_type": "certificate_of_employment"
}'
Request fields

application/json

  • filesobject[]required
    Array of 2–50 objects, each with file_url or file_base64 + filename.
  • file_urlstring(uri)
  • file_base64string
  • filenamestring
  • document_typestringrequired
    Values are case-insensitive and common aliases are normalized automatically, including afs to audited_financial_statement and gis to general_information_sheet. One of: certificate_of_employment, credit_card_statement, credit_report, loan_statement, passbook, remittance_slip, tin_id, audited_financial_statement, and 47 more.
  • output_filenamestring
    Custom filename for the merged PDF. Defaults to auto-generated.
  • webhook_urlstring(uri)
    Completion callback URL; same payload shape as single-document uploads.

Response shape (illustrative) · 202

{
  "document_id": 42,
  "status": "pending"
}

Errors400 What these mean

Check processing status

Poll using document_id, not the queue job_id. Stop on completed or failed. A completed job includes processing output in result; retrieve the document for normalized output.

GET/documents/jobs/{document_id}

curl

curl -X GET "https://api.kita.ai/api/v1/documents/jobs/42" \
  -H "Authorization: Bearer $KITA_API_KEY"

Response shape (illustrative) · 200

{
  "document_id": 42,
  "document_type": "certificate_of_employment",
  "status": "pending",
  "processing_time_seconds": 0
}

Errors404 What these mean

Retrieve a document result

Read document metadata and normalized output in document.result after completion. Requires document:read.

GET/documents/{document_id}

curl

curl -X GET "https://api.kita.ai/api/v1/documents/42" \
  -H "Authorization: Bearer $KITA_API_KEY"

Response shape (illustrative) · 200

{
  "success": true,
  "document": {
    "id": 42,
    "file_name": "<file_name>",
    "completed_at": "2026-05-14T10:00:00Z",
    "processing": {}
  }
}

Errors404 What these mean

Delete a document

Soft-delete a document. Requires document:delete.

DELETE/documents/{document_id}

curl

curl -X DELETE "https://api.kita.ai/api/v1/documents/42" \
  -H "Authorization: Bearer $KITA_API_KEY"

200 Success.

Errors404 What these mean

Transactions

Edit transactions

Replace the transaction array on a processed document. A full replacement, not a patch. Available for bank_statement and passbook. Requires document:write.

PUT/documents/{document_id}/transactions

curl

curl -X PUT "https://api.kita.ai/api/v1/documents/42/transactions" \
  -H "Authorization: Bearer $KITA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "transactions": [
    {
      "date": "<date>",
      "description": "<description>",
      "debit": 0,
      "credit": 0
    }
  ]
}'
Request fields

application/json

  • transactionsobject[]required
  • datestring
  • descriptionstring
  • debitnumber
  • creditnumber
  • balancenumber
  • categorystring
  • is_outlierboolean
  • outlier_reasonstring | null
  • revalidateboolean
    true (default) re-runs validation and metrics inline; set false to call POST /revalidate separately.

Response shape (illustrative) · 200

{
  "success": true,
  "transactions": [
    {
      "date": "<date>",
      "description": "<description>",
      "debit": 0,
      "credit": 0
    }
  ],
  "metrics": {},
  "balance_checks": {}
}

Errors400 · 404 What these mean

Revert to the original extraction

Discard all edits and restore the original extracted transactions, resetting metrics and validation to their original state.

POST/documents/{document_id}/transactions/revert

curl

curl -X POST "https://api.kita.ai/api/v1/documents/42/transactions/revert" \
  -H "Authorization: Bearer $KITA_API_KEY"

Response shape (illustrative) · 200

{
  "success": true,
  "transactions": [
    {
      "date": "<date>",
      "description": "<description>",
      "debit": 0,
      "credit": 0
    }
  ],
  "metrics": {},
  "balance_checks": {}
}

Errors400 · 404 What these mean

Re-run balance validation

Re-run validation and metrics after edits.

POST/documents/{document_id}/transactions/revalidate

curl

curl -X POST "https://api.kita.ai/api/v1/documents/42/transactions/revalidate" \
  -H "Authorization: Bearer $KITA_API_KEY"

Response shape (illustrative) · 200

{
  "success": true,
  "transactions": [
    {
      "date": "<date>",
      "description": "<description>",
      "debit": 0,
      "credit": 0
    }
  ],
  "metrics": {},
  "balance_checks": {}
}

Errors404 What these mean

Batch

Submit a batch

Create batch: pass documents array with file_url + document_type. Process up to 100 documents per request (paid plans). Poll GET /batch/&#123;batch_id} for status.

POST/batch

curl

curl -X POST "https://api.kita.ai/api/v1/batch" \
  -H "Authorization: Bearer $KITA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "documents": [
    {
      "document_type": "certificate_of_employment"
    }
  ]
}'
Request fields

application/json

  • documentsobject[]required
  • file_urlstring(uri)
  • file_base64string
  • filenamestring
  • document_typestringrequired
    Values are case-insensitive and common aliases are normalized automatically, including afs to audited_financial_statement and gis to general_information_sheet. One of: certificate_of_employment, credit_card_statement, credit_report, loan_statement, passbook, remittance_slip, tin_id, audited_financial_statement, and 47 more.

Response shape (illustrative) · 202

{
  "batch_id": "<batch_id>"
}

Errors400 · 403 What these mean

Submit a batch as file uploads

Batch upload multiple files as multipart form-data.

POST/batch/upload

curl

curl -X POST "https://api.kita.ai/api/v1/batch/upload" \
  -H "Authorization: Bearer $KITA_API_KEY" \
  -F 'files=["@file.pdf"];type=application/json' \
  -F "document_type=certificate_of_employment"
Request fields

multipart/form-data

  • filesfile[]required
  • document_typestringrequired
    Values are case-insensitive and common aliases are normalized automatically, including afs to audited_financial_statement and gis to general_information_sheet. One of: certificate_of_employment, credit_card_statement, credit_report, loan_statement, passbook, remittance_slip, tin_id, audited_financial_statement, and 47 more.

Response shape (illustrative) · 202

{
  "batch_id": "<batch_id>"
}

Errors400 · 403 What these mean

Check batch status

Poll status, progress_percent, and per-document state.

GET/batch/{batch_id}

curl

curl -X GET "https://api.kita.ai/api/v1/batch/{batch_id}" \
  -H "Authorization: Bearer $KITA_API_KEY"

Response shape (illustrative) · 200

{
  "batch_id": "<batch_id>",
  "status": "<status>",
  "total_documents": 42,
  "completed": 42
}

Errors404 What these mean

Get batch results

Get full extracted data for all documents.

GET/batch/{batch_id}/results

curl

curl -X GET "https://api.kita.ai/api/v1/batch/{batch_id}/results" \
  -H "Authorization: Bearer $KITA_API_KEY"

Response shape (illustrative) · 200

{
  "batch_id": "<batch_id>",
  "documents": [
    {
      "id": 42,
      "file_name": "<file_name>",
      "completed_at": "2026-05-14T10:00:00Z",
      "processing": {}
    }
  ]
}

Errors404 What these mean

Verification

Cross-document verification

Cross-document verification across 2–50 processed documents. Returns per-document authenticity summaries, a cross-document consistency score (0–100), and field-level corroboration.

POST/verify

curl

curl -X POST "https://api.kita.ai/api/v1/verify" \
  -H "Authorization: Bearer $KITA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "document_ids": [
    42
  ]
}'
Request fields

application/json

  • document_idsinteger[]required
    2–50 IDs of already-completed documents in your org.

Response shape (illustrative) · 200

{
  "document_count": 42,
  "documents": [
    {
      "id": 42,
      "file_name": "<file_name>",
      "document_type": "certificate_of_employment",
      "authenticity_score": 42
    }
  ],
  "document_summary": {},
  "cross_doc_score": 42
}

Errors400 · 404 What these mean

Single-document authenticity

Returns the full fraud_detection block for one document, with no cross-document analysis.

POST/verify/single

curl

curl -X POST "https://api.kita.ai/api/v1/verify/single" \
  -H "Authorization: Bearer $KITA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "document_id": 42
}'
Request fields

application/json

  • document_idintegerrequired

Response shape (illustrative) · 200

{
  "authenticity_score": 42,
  "risk_level": "<risk_level>",
  "category_scores": {},
  "integrity_checks": [
    {
      "key": "<key>",
      "label": "<label>",
      "status": "pass"
    }
  ]
}

Errors400 · 404 What these mean

Exports

Download a single document as Excel

Download a multi-sheet Excel workbook built from the document's type-specific schema (audited_financial_statement, credit report, SLIK). For audited_financial_statement, the export is a 17-sheet workbook (company info, statements, notes, ratios, risk flags, and more).

A document type with no export schema returns 400 INVALID_EXPORT_TYPE. A document that hasn't finished processing returns DOCUMENT_NOT_PROCESSED.

GET/documents/{document_id}/export

curl

curl -X GET "https://api.kita.ai/api/v1/documents/42/export" \
  -H "Authorization: Bearer $KITA_API_KEY"
Response JSON Schema · 200
{
  "type": "string",
  "format": "binary"
}

Errors400 · 404 What these mean

Download an organization-specific workbook

Download the workbook defined by your organization configuration. Requires document:read, processed data, and custom exports enabled for the organization.

GET/documents/{document_id}/custom-export

curl

curl -X GET "https://api.kita.ai/api/v1/documents/42/custom-export" \
  -H "Authorization: Bearer $KITA_API_KEY"
Response JSON Schema · 200
{
  "type": "string",
  "format": "binary"
}

Errors400 · 403 · 404 What these mean