Carrier invoices, rate confirmations & BOLs → clean JSON in one API call.
Send a freight document to /v1/extract and get a typed
document_type, carrier and MC/DOT numbers, PRO number, load id,
origin and destination, linehaul, fuel surcharge, accessorials, total and a
per-field confidence score — in seconds. Built for freight brokers and 3PLs.
No manual data entry, no models to train or maintain.
$ curl -X POST https://protonapi.dev/v1/extract \
-H "X-API-Key: $PROTONAPI_KEY" \
-F "file=@carrier-invoice.pdf"
{
"document_type": "carrier_invoice",
"carrier": {"name": "Lone Star Freight Lines", "mc_number": "MC-837462"},
"invoice_number": "LF-88231",
"pro_number": "PRO-4471902",
"origin": {"city": "Houston", "state": "TX"},
"destination": {"city": "Atlanta", "state": "GA"},
"linehaul": 2450.00,
"fuel_surcharge": 368.50,
"total": 2968.50,
"currency": "USD",
"discrepancies": [{"field": "total", "severity": "high"}],
"confidence": 0.94
}
import requests
resp = requests.post(
"https://protonapi.dev/v1/extract",
headers={"X-API-Key": PROTONAPI_KEY},
files={"file": open("carrier-invoice.pdf", "rb")},
)
data = resp.json()
print(data["document_type"], data["total"], data["currency"])
# carrier_invoice 2968.50 USD
How it works
From freight document to structured data in three steps.
Get your API key
Sign up free and receive a key instantly — 100 pages/month included.
POST your document
Send a carrier invoice, rate confirmation or BOL as PDF or image to /v1/extract.
Get clean JSON
A freight-aware schema — carrier, PRO number, linehaul, accessorials, total — you can drop straight into your TMS.
Why Proton API
Built for brokers and 3PLs who hate manual freight data entry.
Freight-aware schema
Document type, carrier and MC/DOT numbers, PRO number, load id, shipper, consignee, origin, destination, linehaul, fuel surcharge, accessorials and total — consistent across documents.
Discrepancy flags
Every response can flag mismatches (for example a total that does not match linehaul plus surcharges) with a severity, so you catch billing problems before they are paid.
Per-field confidence
Overall and per-field confidence values let you auto-commit clean documents and route the rest to a review queue.
Batch + export built in
POST many documents at once, then export the results as CSV or XLSX for reconciliation.
No ML to maintain
We handle the vision and parsing pipeline. You just make an HTTP call.
Webhooks & usage metering
Get batch results delivered by webhook, and track pages, quota and keys from your self-serve dashboard.
Pricing
Start free. Upgrade when your volume grows.
Free
- 100 pages / month
- 5 requests / minute
- 1 API key
- 7-day logs
- Community support
Pro
- 2,500 pages / month
- 60 requests / minute
- 5 API keys
- 30-day logs
- Overage $0.05 / page
- Email support
Business
- 10,000 pages / month
- 300 requests / minute
- 20 API keys
- 90-day logs
- Overage $0.04 / page
- Priority support
FAQ
Frequently asked questions
Which freight documents are supported?
Carrier invoices, rate confirmations, bills of lading and delivery receipts, returned with a typed document_type.
Which file types are supported?
PDF and common image formats (PNG, JPEG, WEBP, TIFF) up to 20 MB per file.
What does the JSON response contain?
A freight schema: document_type, carrier (MC/DOT), invoice and PRO numbers, load id, parties, origin/destination, linehaul, fuel surcharge, accessorials[], subtotal, tax, total and confidence (overall and per field).
Can I process a batch of documents?
Yes — POST /v1/extract/batch accepts multiple files and returns a job id you can export as CSV or XLSX, with an optional webhook when it finishes.
How is usage counted?
By pages of successfully processed documents per billing period. Free is a hard cap; Pro and Business allow metered overage.
Do I need a credit card to start?
No. The Free tier includes 100 pages per month and requires no payment method.
Turn your first carrier invoice into JSON in under five minutes.
Create an account, copy your key and make your first request.
Get started free