Kita CaptureAPI reference
Verification
Cross-document verification and per-document authenticity reports.
Cross-document verification
POST /verify
Compare 2 to 50 already-processed documents against each other. Runs 34 cross-checks including name consistency, income-to-deposit matching, employer verification and financial cross-references.
This does not re-process documents. It analyses the fraud detection and extraction data computed during initial processing.
POST
/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 body · application/json
| Field | Type | Description |
|---|---|---|
document_idsrequired | integer[] |
Response · 200
| Field | Type | Description |
|---|---|---|
document_count | integer | |
documents | object[] | Per-document fraud summary. |
documents[].id | integer | |
documents[].file_name | string | |
documents[].document_type | string | Types are normalized automatically. `bank-statement`, `Bank Statement` and `bank_statement` are all accepted, and common aliases resolve: `gis` maps to `general_information_sheet`, `afs` to `audited_financial_statement`. One of: bank_statement, bank_statement_summary, bank_certificate, payslip, credit_card_statement, credit_report, loan_statement, passbook, and 29 more. |
documents[].authenticity_score | integer | 0 to 100. |
documents[].risk_level | string | `low` is a score of 80 or above, `medium` 50 to 79, `high` below 50. One of: low, medium, high. |
documents[].integrity_checks | object[] | |
documents[].integrity_checks[].key | string | |
documents[].integrity_checks[].label | string | |
documents[].integrity_checks[].status | string | One of: pass, warn, fail, not_run. |
documents[].signal_summary | object | Counts of signals by severity. |
documents[].signal_summary.total_signals | integer | |
documents[].signal_summary.critical_count | integer | |
documents[].signal_summary.high_count | integer | |
documents[].signal_summary.medium_count | integer | |
documents[].signal_summary.low_count | integer | |
document_summary | object | Count of documents by type. |
cross_doc_score | integer | 0 to 100 cross-document consistency score. |
signals | object[] | Cross-check results, such as name matching and income verification. |
signals[].key | string | Stable identifier for the check, for example `name_consistency`. |
signals[].severity | string | One of: critical, high, medium, low. |
signals[].confidence | number | 0 to 1. |
signals[].reason | string | Human-readable explanation of what was found. |
signals[].status | string | Whether the finding reads as good or as a concern. |
field_verifiability | object | Which fields can be verified, per document type. |
corroboration | object | Field by field, which documents confirm each value. |
missing_ids | integer[] | Requested document IDs that were not found. Present only when some are missing. |
Errors
| Field | Type | Description |
|---|---|---|
400 | error | The request was rejected. See `error` for the machine-readable code. |
404 | error | Resource does not exist, or belongs to another organization. |
Single-document authenticity
POST /verify/single
Full fraud detection and authenticity report for one document.
POST
/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 body · application/json
| Field | Type | Description |
|---|---|---|
document_idrequired | integer |
Response · 200
| Field | Type | Description |
|---|---|---|
authenticity_score | integer | 0 to 100 overall authenticity score. |
risk_level | string | `low` is a score of 80 or above, `medium` 50 to 79, `high` below 50. One of: low, medium, high. |
category_scores | object | Per-category breakdown: metadata, layout, editing, visual quality, and content-specific. |
integrity_checks | object[] | |
integrity_checks[].key | string | |
integrity_checks[].label | string | |
integrity_checks[].status | string | One of: pass, warn, fail, not_run. |
signals | object[] | |
signals[].key | string | Stable identifier for the check, for example `name_consistency`. |
signals[].severity | string | One of: critical, high, medium, low. |
signals[].confidence | number | 0 to 1. |
signals[].reason | string | Human-readable explanation of what was found. |
signals[].status | string | Whether the finding reads as good or as a concern. |
signal_summary | object | Counts of signals by severity. |
signal_summary.total_signals | integer | |
signal_summary.critical_count | integer | |
signal_summary.high_count | integer | |
signal_summary.medium_count | integer | |
signal_summary.low_count | integer | |
type_specific_signals | object | null | Document-type-specific validation, such as invoice arithmetic or receipt totals. `null` when the type has none. |
meta | object | Execution metadata. |
Errors
| Field | Type | Description |
|---|---|---|
400 | error | The request was rejected. See `error` for the machine-readable code. |
404 | error | Resource does not exist, or belongs to another organization. |

