API-first extraction means the default path for a document is fully automated: it arrives by API or email, runs through extract and validate, and returns structured data to your system — with no human opening a screen. The UI isn't the product; it exists only for the exceptions.
A lot of "document AI" is really a fancier data-entry screen — a person still opens each document, checks the fields, and clicks save. That's a UI-first design with automation bolted on. API-first flips it: the integration is the primary interface, the screen is the fallback. You send a document to an endpoint (or forward it to an intake address) and get back a validated record; you only open the app when something was flagged.
What the happy path looks like
A document is posted to the API (or emailed to a dedicated intake address). It's read, extracted, and validated against air-freight logic. If it clears, the structured record is returned — as JSON or XML over the API, as FWB/16 or FWB/17 EDI, or as a spreadsheet — and delivered to wherever your data goes. No queue, no click.
POST /v1/documents # or forward to an intake address ← 202 accepted, document id GET /v1/documents/{id} # poll, or receive a webhook → status: cleared → record: { awb_number, origin, dest, chargeable_weight, ... } → formats: JSON · XML · FWB/16 · FWB/17 · CSV · XLSX # a person only appears for an exception
With , you can pull validated AWB data into your systems through one API.
Start hereWhy the exception queue is the only UI you need
The screen's job is narrow: show the documents that failed a check, the specific field, and why — so a reviewer fixes one field and returns it to the flow. It isn't for reading documents that were fine. That's the exceptions-only model, and it's what lets the same team handle far more volume — their attention scales with the number of problems, not the number of documents.
What you build against
Because the record is the same across formats, you integrate once. Pull results from the API, receive the EDI on your existing rails, or take a spreadsheet — the data agrees because it all reads from one validated record. The integration doesn't change when you add a format or a carrier.