How DocuParse API works
By Othmane M., founder of DocuParse API · Last reviewed: 2026-10-20
Rule-based parsing reads every field, then an AI model checks and corrects the uncertain ones before you get the result.
From upload to JSON
- STEP 01
Upload
You send a PDF, JPG, PNG or CSV through the API, the dashboard, or the demo.
- STEP 02
Queued
The document gets an ID straight away, so your app never waits on an open connection.
- STEP 03
Extraction
Our worker reads the document with OCR, pulls out each field with rules, and reconciles the numbers: line items against the subtotal, subtotal plus tax against the total.
- STEP 04
AI review
An AI model checks and corrects uncertain fields and finalizes the result. On Starter and Free, complex or low-confidence documents get this review; on Pro, every document does.
The result is saved to your dashboard and available from GET /api/v1/documents/{id}. On Starter and Pro it is also pushed to your webhook.
What you get back
Every result uses the same JSON shape. Missing values are null, money is a 2-decimal string, and each response carries a confidence score and a needs_review flag. See the full schema →
How we measure accuracy
97% field-level accuracy
Tested on 500+ real receipts and invoices
Measured field by field (merchant, invoice or receipt number, date, tax, total) against hand-checked values on 500+ real receipts and invoices. Your results depend on document quality, which is why every API response includes a confidence score and a needs_review flag.
- What counts: a field is correct when it matches the hand-checked value exactly (amounts to the cent, dates to the day).
- What it covers: header fields — merchant, invoice or receipt number, date, tax and total.
- What lowers it: blurry or dark photos, handwriting, crumpled receipts and unusual layouts. Those results come back with needs_review set to true.
Your data
Documents are processed to produce your result and stored so you can see them in your dashboard until you delete them. They are not used to train AI models. Security and data handling →