API reference
Endpoints for document processing and optional workflows.
Base URL: https://api.kita.ai/api/v1. Authenticate with a Bearer API key.
| Resource | Use it to |
|---|---|
| Documents | Upload, poll, retrieve, list, delete, or merge documents. |
| Batch | Submit separate documents and retrieve batch results. |
| Transactions | Replace transactions, revert edits, or rerun validation. |
| Verification | Compare completed documents or inspect authenticity. |
| Exports | Download Excel output. |
| Webhooks | Register signed callbacks. |
| Folders & custom schemas | Group 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.
/documentscurl
curl -X GET "https://api.kita.ai/api/v1/documents" \
-H "Authorization: Bearer $KITA_API_KEY"Query parameters
pageintegerlimitintegerstatusstringOne 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.
/documentscurl
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
filefileMultipart upload; maximum 100 MB. Accepts PDF, PNG, JPG/JPEG, TIFF/TIF, BMP, TXT, CSV, XLSX, and XLS. Extraction depends on document type.document_typestringrequiredValues are case-insensitive and common aliases are normalized automatically, includingafstoaudited_financial_statementandgistogeneral_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.passwordstringPDF 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.
/documents/mergecurl
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[]requiredArray of 2–50 objects, each withfile_urlorfile_base64+filename.file_urlstring(uri)file_base64stringfilenamestringdocument_typestringrequiredValues are case-insensitive and common aliases are normalized automatically, includingafstoaudited_financial_statementandgistogeneral_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_filenamestringCustom 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.
/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.
/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.
/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.
/documents/{document_id}/transactionscurl
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[]requireddatestringdescriptionstringdebitnumbercreditnumberbalancenumbercategorystringis_outlierbooleanoutlier_reasonstring | nullrevalidatebooleantrue(default) re-runs validation and metrics inline; setfalseto callPOST /revalidateseparately.
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.
/documents/{document_id}/transactions/revertcurl
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.
/documents/{document_id}/transactions/revalidatecurl
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/{batch_id} for status.
/batchcurl
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[]requiredfile_urlstring(uri)file_base64stringfilenamestringdocument_typestringrequiredValues are case-insensitive and common aliases are normalized automatically, includingafstoaudited_financial_statementandgistogeneral_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.
/batch/uploadcurl
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[]requireddocument_typestringrequiredValues are case-insensitive and common aliases are normalized automatically, includingafstoaudited_financial_statementandgistogeneral_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.
/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.
/batch/{batch_id}/resultscurl
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.
/verifycurl
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[]required2–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.
/verify/singlecurl
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.
/documents/{document_id}/exportcurl
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.
/documents/{document_id}/custom-exportcurl
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


