ParseParse
Use CasesDocsAPI Reference
Log InGet Started Free

The async contract

Watch an extraction happen

Every integration comes down to one thing: extraction is asynchronous. Play the run below, scrub through it, or step it beat by beat.

sample-invoice.pdf0/3 pages0/20 fieldst+0.00s
01

Upload. One POST carries the file. Nothing has been read yet.

Document

waiting for the file
Page 1 of 3

Console

$

Result

building on the server

// nothing yet - the engine has not found a field

Timeline

POSTPOST /v1/extractyou
extractextraction (server)server
GET :idGET /v1/extractions/:idyou, on a loop
webhookwebhook_urlinstead of polling
POST exportPOST /v1/extractions/:id/exportyou
0s2s4s6s8s10s12s

Pass webhook_url and Parse calls you when it finishes, so you never poll at all.

running
  1. 1. Upload. One POST carries the file. Nothing has been read yet.
  2. 2. Accepted. The server answers immediately with an id and the status "processing". Your connection is free to go.
  3. 3. Reading. Out of sight, the AI extraction engine works through the document page by page and locates each field.
  4. 4. Polling. Ask for that id every couple of seconds. It keeps answering "processing", and that is the expected answer.
  5. 5. Completed. The same call finally answers "completed", with the structured data attached.
  6. 6. Export. Need a spreadsheet instead? Ask the same extraction for CSV or Excel.
Start Free - 100 Pages

No credit card required - 100 pages/month free

Two calls, and that is the integration

Submit the file, keep the id, and ask for it until the status changes. Everything else - schemas, exports, webhooks - is built on those two calls.

Read the quickstart
terminal
# 1. submit - the call returns straight away
curl -X POST https://api-parse.conversiontools.io/v1/extract \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@invoice.pdf"

# 202  { "id": "ext_9f2c41d7", "status": "processing" }

# 2. poll that id until it stops saying "processing"
curl https://api-parse.conversiontools.io/v1/extractions/ext_9f2c41d7 \
  -H "Authorization: Bearer YOUR_API_KEY"

# 200  { "status": "completed", "data": { ... } }

Submitting is not waiting

POST /v1/extract returns an id right away. If your code sits and waits for data on that call, it is waiting for something that was never coming.

Poll the id, not the file

GET /v1/extractions/:id answers "processing" until it answers "completed". A couple of seconds between calls is plenty.

Or let it call you

Pass webhook_url when you submit and Parse posts the finished extraction to your endpoint. No loop to write.

Try it with your own document

The free tier covers 100 pages a month, and no credit card is needed to start.

Start extractingAPI reference
Parse

AI-powered document data extraction

Conversion ToolsPowered by Conversion Tools

Use cases

  • Data Extraction API
  • PDF Parsing API
  • Invoice extraction
  • Receipt parsing
  • Purchase order extraction
  • Bank statement to JSON
  • Tax form extraction
  • Contract data extraction
  • Bill of lading extraction

Developers

  • How it works
  • Quickstart
  • Documentation
  • API Reference
  • Blog

Account

  • Log in
  • Contact
  • Security
  • Privacy Policy
  • Terms of Service
  • Refund Policy
© 2026 Conversion Tools