Every document API endpoint with parameters, responses, fields, and copyable examples.
OpenAPI coverage
The operation list below is read from the published OpenAPI contract. Use it as a compact index when comparing generated clients, request methods, operation IDs, and documented response codes.
Method
Path
Operation
Responses
GET
/api/v1/ping
Check API authenticationping
200
GET
/api/v1/documents
List documentslistDocuments
200429
POST
/api/v1/documents
Upload a documentuploadDocument
201422409429402
POST
/api/v1/x402/extractions
Upload a document with x402 paymentcreateAnonymousX402Extraction
200201400402409422429503
GET
/api/v1/x402/extractions/{document}
Retrieve an anonymous x402 extractiongetAnonymousX402Extraction
200403404429
GET
/api/v1/documents/{document}
Retrieve a documentgetDocument
200403404
DELETE
/api/v1/documents/{document}
Delete a documentdeleteDocument
204403404
GET
/api/v1/documents/{document}/thumbnail
Download document thumbnailgetDocumentThumbnail
200403404
GET
/api/v1/documents/{document}/previews
List document previewslistDocumentPreviews
200403404
GET
/api/v1/documents/{document}/extractions
List document extractionslistDocumentExtractions
200403404
GET
/api/v1/previews/{preview}
Download a preview filegetPreview
200403404
Common headers
Each request is scoped to the account behind the API token. Upload retries should include an idempotency key so a network retry does not create another document.
Header
Required
Value
Description
Authorization
Yes
Bearer <token>
Account-scoped API token created in the exdata app. The token must have the ability required by the endpoint.
Idempotency-Key
Uploads only
String, max 255 characters
Unique key for one logical upload. Reusing the same key and same payload returns the stored response.
X-Request-ID
No
String, max 128 characters
Optional caller request ID. exdata echoes this value, or a generated request ID, in error responses.
GET/api/v1/ping
Ping
Use this endpoint for a lightweight token check during integration setup, deploy checks, or uptime probes that should not upload files.
Returns paginated documents for the token's account. Use this endpoint for status dashboards, reconciliation, support tooling, and scheduled backfills.
Parameter
Location
Required
Type
Description
sort
Query
No
created_at or -created_at
Sort by creation time. Use -created_at for newest first.
per_page
Query
No
Integer, 1-100
Number of documents per page. Defaults to 100.
Status
Response
Description
200
Paginated document list
data contains document objects. links and meta contain Laravel pagination data.
Additional context you already know, such as the mailbox, source workflow, or customer note.
custom_types[]
Form data
No
Array of strings
Optional type extensions for your workflow. Standard types are invoice, credit-note, reminder, salary-statement, bank-statement, contract, balance-sheet, tax-assessment-note, timesheet, letter, and other. Add custom values only when your integration needs extra document categories.
requester
Form data
No
String or null
Integration name, user reference, workflow ID, or source system.
locale
Form data
No
String or null
Supported locale such as en or de.
allow_ai_processing
Form data
No
Boolean
Legacy processing flag. Most integrations omit this field.
Status
Response
Description
201
Document resource
The document was accepted. A pending extraction run is included when processing is queued.
402
Insufficient credits error
The document was created, then blocked because the account does not have enough credits.
403
Error envelope
The token does not have documents:write, or the account is suspended.
409
Error envelope
The idempotency key is still processing or was reused with a different upload payload.
422
Validation error
The file or form field failed validation.
429
Error envelope
Upload rate limit exceeded, including sandbox daily upload limits for test-mode tokens.
The tables below define the fields used by endpoint responses. The extraction field reference lists every normalized extraction key separately.
Document object
Field
Type
When present
Description
id
Integer
Always
Document ID.
mode
live or test
Always
Whether the document was created by a live or test-mode token.
status
pending, completed, error, or blocked
Always
Current document processing status.
processing_stage
String or null
Always
Current stage such as queued, extracting, or completed.
processing_error
String or null
Always
Human-readable processing failure message when status is error.
blocked_reason
String or null
Always
Machine-readable reason when status is blocked, for example insufficient_credits.
scanner_status
clean, rejected, or null
Always
Upload scanner decision when available.
scanner_provider
String or null
Always
Scanner provider or configured scanning backend.
scanner_message
String or null
Always
Scanner explanation when available.
scanned_at
Date-time or null
Always
When file scanning completed.
processing_started_at
Date-time or null
Always
When processing work started.
processed_at
Date-time or null
Always
When processing reached a terminal state.
filename
String
Always
Original uploaded filename.
file_format
String
Always
Detected or stored file extension, for example pdf.
file_size
Integer
Always
File size in bytes.
additional_text
String or null
Always
Optional upload context supplied through the text form field.
additional_text_plain
String or null
Always
Plain-text version of additional_text.
custom_types
Array of strings or null
Always
Type extensions supplied at upload time.
requester
String or null
Always
Caller reference supplied at upload time.
locale
String or null
Always
Locale hint supplied at upload time.
number_of_pages
Integer or null
Always
Detected page count when available.
extracted_text
String or null
Always
Extracted document text when OCR/text extraction is available.
extracted_text_plain
String or null
Always
Plain-text version of extracted_text.
origin
api, app, or null
Always
Where the document was created.
ai_processing
Boolean
Always
Whether extraction processing is enabled for this document.
is_e_invoice
Boolean
Always
Whether the document was recognized as an e-invoice.
thumbnail
URL or null
Always
Download URL for the generated thumbnail.
previews
Array or null
Always
Preview objects for completed documents when previews are loaded.
extractions
Object or null
Always
Extraction fields for completed documents when extractions are loaded.
latest_extraction_run
Extraction run or null
Always
Latest extraction attempt metadata.
created_at
Date-time
Always
Document creation timestamp.
updated_at
Date-time
Always
Last document update timestamp.
Extraction run object
Field
Type
Description
id
Integer
Extraction run ID.
mode
live or test
Billing/reporting mode for the run.
source
api, app, or null
Where the run was started.
status
pending, processing, completed, blocked, or error
Run status.
blocked_reason
String or null
Machine-readable block reason.
error_code
String or null
Machine-readable failure code.
error_message
String or null
Failure message for operators or support tooling.
extraction_schema_version
String or null
Extraction schema version used by this run.
extractor_version
String or null
Extractor implementation version.
ai_prompt_version
String or null
AI prompt version used by this run.
normalization_version
String or null
Normalization version used after extraction.
started_at
Date-time or null
When extraction processing started.
completed_at
Date-time or null
When extraction processing completed.
created_at
Date-time or null
When the run record was created.
Preview object
Field
Type
Description
id
Integer
Preview ID used by the preview download endpoint.
filename
String
Generated preview filename.
file_format
String
Preview file extension, for example png.
file_size
Integer
Preview file size in bytes.
preview
URL
Download URL for the preview binary.
Extraction field object
Field
Type
Description
value
String, array, object, or null
Normalized value for system mapping. Amounts are dot-decimal strings, dates use YYYY-MM-DD, currency uses ISO 4217, and tax_breakdowns uses an array of tax rows.
candidates
Array or null
Raw or derived candidate values considered for the field. Use these in review UIs, support tools, and debugging.
Error envelope
Field
Type
Description
message
String
Human-readable error message.
code
String
Machine-readable error code such as validation_failed or insufficient_credits.
request_id
String
Request identifier for support and log correlation.
errors
Object
Validation field errors. Present on 422 responses.
retry_after
Integer or null
Retry delay in seconds. Present on some rate-limit responses.
available_credits
Integer
Available credits. Present on insufficient-credit upload responses.
required_credits
Integer
Credits required for the upload. Present on insufficient-credit upload responses.
document
Document object
Blocked document created before credit reservation failed. Present on insufficient-credit upload responses.
account_daily_document_limit
Integer
Sandbox account daily upload limit. Present on test-mode limit responses.
user_daily_document_limit
Integer
Sandbox user daily upload limit. Present on test-mode limit responses.
token_daily_document_limit
Integer
Sandbox token daily upload limit. Present on test-mode limit responses.