Air waybill extraction API

Upload an air waybill. Get structured JSON—validated.

A developer API that turns MAWB/HAWB PDFs and scans into a fixed schema, with IATA Mod-7 check digits and weight sanity checks built in.

Public playground & Creem checkout: coming soon. Local playground lives under the API host (not this static site).

One schema

Same JSON for Master (MAWB) and House (HAWB). Not courier labels. Not general document AI.

Mod-7 + weights

IATA AWB check digit and chargeable_kg ≥ gross_kg run on every response.

Review flags

Failed checks or low confidence set needs_review: true—so bad rows don’t land silently.

Who this is for

Freight forwarders, customs brokers, and cargo TMS teams that already receive air-waybill PDFs (or phone photos) and need fields in a database or workflow—not another generic OCR playground.

Core fields

FieldNotes
document_typeAlways air_waybill
awb_levelmawb | hawb | unknown
awb_number11-digit airline AWB (XXX-XXXXXXXX)
hawb_numberHouse number when present
issue_dateISO date when readable
shipper_name / consignee_nameParty names
airport_dep / airport_destPrefer IATA three-letter codes
flight_number / flight_dateWhen printed on the form
piecesPiece count
gross_kg / chargeable_kgWeights in kg
charges_paymente.g. prepaid / collect when present
field_confidencePer-field confidence hints
validationsRule results (Mod-7, weights)
needs_reviewtrue when validators fail or confidence is low

Validations (product, not garnish)

More detail: AWB check digit (Mod-7) · MAWB vs HAWB

Curl example

Public host (API not deployed yet)

curl -sS -X POST "https://getdocapi.com/v1/extract/awb" \
  -H "Authorization: Bearer <api_key>" \
  -F "file=@./sample-mawb.pdf;type=application/pdf"

Local skeleton today: http://127.0.0.1:8787/v1/extract/awb (no auth). Domain getdocapi.com is owned; public HTTPS deploy is still pending.

Example response

{
  "document_type": "air_waybill",
  "awb_level": "mawb",
  "awb_number": "071-12760786",
  "hawb_number": null,
  "issue_date": "2006-05-27",
  "shipper_name": "…",
  "consignee_name": "…",
  "airport_dep": "DXB",
  "airport_dest": "ADD",
  "flight_number": null,
  "flight_date": null,
  "pieces": "60",
  "gross_kg": "2520",
  "chargeable_kg": "2520",
  "charges_payment": "prepaid",
  "field_confidence": { "awb_number": 0.95 },
  "validations": {
    "awb_check_digit_ok": true,
    "chargeable_gte_gross": true
  },
  "needs_review": false
}

Pricing teaser

Free

100 / month

  • No card required
  • Playground + API

Credit packs

from $12

  • $12 → 100 docs
  • $50 → 500 docs

Full pricing → · Checkout via Creem — coming soon.

Accuracy note

On a self-built 31-document bench (public blanks, vendor examples, and open challenge fixtures—not a third-party certification), DeepSeek-assisted extraction scored approximately: AWB number ~96%, airports ~92%, pieces ~96%, gross weight ~93%, chargeable weight ~92%. These numbers are internal eval only. They are not audited by IATA, carriers, or an independent lab. Production SLAs are TBD.

FAQ

MAWB vs HAWB—do I need two endpoints?

No. One endpoint, one schema. See MAWB vs HAWB extraction.

Does this replace EDI / FWB?

No. If you already receive clean FWB/EDI, keep using it. This API fills the PDF and scan gap—pre-alerts, emailed copies, phone photos.

Courier labels (DHL/UPS/FedEx)?

Out of scope for v1. Those are parcel waybills / shipping labels, not IATA air waybills.

Ocean B/L or ASN?

Out of scope. Different document family; may come later as separate extractors.


API overview Pricing API access — coming soon