Turn a folder of
documents into a
live API.
Drop a PDF. Get structured JSON. No code, no schema setup, no signup.
It really is this simple.
Three steps. One minute. From folder to live endpoint — without writing a line of glue code.
Pick your namespace.
That name becomes your permanent API URL — you'll never need to change it.
Your URL
api.parseapi.dev
/v1/you/invoices
Upload anything. We figure it out.
PDFs, scans, images, Word docs. We parse them in seconds and auto-detect a JSON schema from the first batch.
Your endpoint is live.
The moment the first document finishes parsing, your URL is callable. Use curl, fetch, requests — anything that speaks HTTP.
Request
$ curl api.parseapi.dev
/v1/you/invoices
→ 200 OK · 14 records
AI gets it wrong?
Fix it in one click.
Every field is editable. Click, correct, save — your API serves the new value instantly.
-
Click any field to edit it inline No re-uploading. No re-running the model.
-
Original AI output is preserved forever Audit trail for every correction, on every record.
-
Webhook fires on every correction Your downstream systems stay in sync automatically.
ACME CORP
123 Market St, San Francisco CA
Invoice #: INV-001
Date: 2024-02-15
Amount due: $1,250.00
Pick your model.
Switch anytime.
We don't lock you into one AI. Route per folder, per document type, or globally. Bring your own key on the Scale plan — your bill stays predictable.
It's curl. That's the whole SDK.
Stable URLs. Predictable JSON. A real OpenAPI spec. Build against ParseApi in any language that speaks HTTP.
# Fetch the latest extraction from your invoices folder curl https://api.parseapi.dev/v1/you/invoices/latest \ -H "Authorization: Bearer pk_live_xxx"
const res = await fetch("https://api.parseapi.dev/v1/you/invoices/latest", { headers: { "Authorization": `Bearer ${process.env.PARSEAPI_KEY}` } }); const { result } = await res.json(); console.log(result.amount); // → 1250.00
import os, requests r = requests.get( "https://api.parseapi.dev/v1/you/invoices/latest", headers={"Authorization": f"Bearer {os.environ['PARSEAPI_KEY']}"}, ) print(r.json()["result"]["amount"]) # → 1250.00
req, _ := http.NewRequest("GET", "https://api.parseapi.dev/v1/you/invoices/latest", nil) req.Header.Set("Authorization", "Bearer "+os.Getenv("PARSEAPI_KEY")) res, _ := http.DefaultClient.Do(req) defer res.Body.Close() // → 200 OK
Invoices today.
Anything tomorrow.
If it's a document, ParseApi handles it. Tell us yours.
Small enough to launch in a minute.
Reliable enough to put in production.
Across all beta tenants
Schema-match on golden set
Upload to JSON, P50
100 pages / month, no card
Start free.
Pay as you grow.
Free
Get started, no card.
- 100 pages / month
- 2 folders
- JSON API + auth
- Editable extractions
Hobby
For solo developers.
- 1,000 pages / month
- 10 folders
- All auth modes
- Priority extraction
- Webhooks
Need scale? See Pro and Scale →
The questions you'd ask
if we were on a call.
How is this different from calling Claude or GPT-4 directly?
Where are my documents stored, and for how long?
Do you train AI models on my data?
Can I switch AI providers later without losing extractions?
Can I self-host this?
What happens after the free tier? Do I get cut off mid-extraction?
What if the model gets a field wrong?
extraction.corrected event so your downstream systems stay in sync.
Stop wrestling
with PDFs.
Spin up your first folder in under a minute. Free forever for 100 pages a month.