POST
Submit a document for extraction
Request · Response · Guide: Split & classify
Always returns 202 Accepted with a job_id; results are retrieved via GET /v1/jobs/ or delivered to callback_url when the job settles.Supported input types: application/pdf, image/png, image/jpeg, image/tiff. Any other content type is rejected with 415.

Authorizations

x-api-key
string
header
required

API key for authentication

Body

multipart/form-data
file
file
required

The document. Must be application/pdf, image/png, image/jpeg, or image/tiff.

schema
string

Optional extraction schema as a JSON string. When omitted, the default pipeline generates one and returns it under result.schema with generated: true. The object must match the engine's DocumentSchema shape: required 'document_type', plus optional 'tables' and 'form_fields', where each form field requires 'field_name' (the verbatim label printed on the document), 'field_type' (text | number | date | checkbox | radio | dropdown | signature | handwriting | graph | image | logo | stamp | qr_code | textarea | currency | unknown) and 'page_index' (1-indexed). A schema that parses but does not match that shape fails later on the job, with the engine's validation errors under error.detail.

Example:

"{\"document_type\":\"insurance_claim_form\",\"form_fields\":[{\"field_name\":\"Policy Number\",\"field_type\":\"text\",\"page_index\":1}]}"

provider
string

Optional model-provider hint (e.g. gemini).

pipeline
string

Reserved for contracted pipelines. Omit it to use the default pipeline, which generates a schema when none is supplied. An unknown value is rejected with 422.

include_ocr
string
default:false

When true, the result includes per-page OCR output under result.pages. Defaults to false.

callback_url
string

Optional HTTPS URL to receive the extraction.job.settled webhook when the job settles. A blank value is treated as omitted.

client_ref
string

Opaque caller-supplied reference, echoed on the job and webhook payload.

Maximum string length: 256

Response

Job accepted and queued.

job_id
string
required
Example:

"job_01J9ZK3V6Q8W"

status
enum<string>
required
Available options:
queued
Example:

"queued"

created_at
string<date-time>
required
poll_url
string<uri-reference>
required

URL of GET /v1/jobs/{job_id}.