POST /convert
Upload one or more PDF statements.
Multipart request. Uploaded files are parsed and reconciled synchronously in memory. Requires a paid API key. Returns 200 with the completed Job when at least one document converted, 422 when all failed, or 429 when the allowance is exhausted. Maximum 20 files per request, 25 MB each.
GET /jobs/{job_id}
Fetch job state.
Retrieves a conversion job by its id while held in memory. Returns 200 with the Job object, or 404 once the retention window has expired (1 hour by default) or if it does not exist.
DELETE /jobs/{job_id}
Erase conversion immediately.
Erases the conversion from memory before its retention window ends. Returns 204 on success, or 404 if it does not exist.
POST /jobs/{job_id}/unlock
Supply the password for an encrypted document.
Retries the locked documents of an existing job in place. The job id and every document id are preserved, so edits already made to other files in the batch survive. 200 if anything unlocked, 401 if the password was wrong (the document stays needs_password and is retryable), 409 if nothing is locked.
GET /jobs/{job_id}/documents/{doc_id}/download
Stream the converted file as parsed.
Responds with the file body and Content-Disposition: attachment. Use this when the client has made no edits.
GET /jobs/{job_id}/download
Download every statement in the job at once.
mode=combined merges the batch into one file carrying Source and Account columns — and, for XLSX, a Summary sheet with each statement’s totals and balance check. mode=zip returns an archive of the individual files instead.
POST /jobs/{job_id}/documents/{doc_id}/export
Re-export using client-edited rows.
Send the corrected transaction array back and the file is rendered from those rows instead of the original extraction. Streams the file the same way download does.
GET /quota
Remaining allowance for the caller.
Anonymous callers are identified by IP. Metered in pages, not files, on a rolling window. Returns used, limit, remaining and resets_at — an ISO timestamp. A 429 also carries a Retry-After header in seconds.
GET /banks
List recognised banking institutions.
The institutions recognised by name for automatic date order and decimal convention handling.
GET /health
Liveness probe.
Returns status and the deployed version string. Available at /health (root) and /api/v1/health.