Outputs

One clean record.
Every format reads from it.

Extraction lands in one clean, normalized record — parties, routing, weights, charges, and line items — and JSON, EDI, and spreadsheets are all built from that same record, so they can't disagree with each other.

Pull it as JSON over the API, generate a Cargo-IMP FWB message, or drop it into a spreadsheet. One source of truth, several shapes on the way out.

30 free scans to start · no card required · then pay per scan or pick a plan

Normalized record
999-12345675MAWB · ICN → FRA
98.6confidence
ShipperNORTHWIND TRADERS CO LTD
ConsigneeCONTOSO FREIGHT GMBH
RouteICN → FRA
Pieces4
Gross weight618.0 kg
Chargeable weight760.0 kg
HS code8517.62
Consolidationfalse
Line items1
One record, read out as JSON, EDI, or a spreadsheet below — the formats never re-key it, they render it.
The idea

One record is the source of truth.

Every document produces a single normalized record — the parties, the routing, the weights, the charges, and each line item, in one canonical shape. The formats you receive are not separate extractions run three times; they are three renderings of that one record. Change nothing, and JSON, EDI, and CSV describe the identical shipment because they read the identical source.

Extract once

The document is read into one normalized record — no per-format keying.

Validate once

Freight-native checks and per-field confidence attach to that record.

Render many

JSON, EDI, and spreadsheet views are generated from the same record.

Stay in sync

Because they share a source, the formats can't drift apart from each other.

The formats

Pick the shape your systems already speak.

The same record, three ways out. Each example below is rendered from the record above — the AWB number, route, weights, and codes line up across all of them.

GET /api/v1/documents/dx_8f2c11 · response (abridged)Validated
{
  "awb_number": "999-12345675",
  "origin": "ICN", "destination": "FRA",
  "shipper": "NORTHWIND TRADERS CO LTD",
  "consignee": "CONTOSO FREIGHT GMBH",
  "pieces": 4, "gross_weight_kg": 618.0, "chargeable_weight_kg": 760.0,
  "is_consolidation": false,
  "confidence": { "document": 0.986, "awb_number": 0.999, "route": 0.994 },
  "validation": [
    { "check": "awb_mod7",        "result": "pass" },
    { "check": "route_city_match", "result": "pass" },
    { "check": "volumetric_recompute", "result": "pass", "divisor": 6000 }
  ],
  "routing": "auto_cleared"  // per-field confidence + validation attached to every response
}

Bearer-authenticated with Owner-issued awbg_… keys. Poll every ~5s — a document typically extracts in 10–40s. XML is available on the same endpoint; payloads shown abridged.

Today
JSONXMLFWB/16FWB/17CSVXLSX
How the FWB path works

We generate the message. You send it.

AWBGuru renders a standards-shaped Cargo-IMP FWB message from the record and hands it back to you — it never touches a carrier network. You transmit it through the rails you already run, on your own credentials. That keeps the airline relationship, and the transmission log, entirely on your side.

Message generated, not transmitted

AWBGuru returns the FWB/16 or FWB/17 message text. Sending it to a carrier is your step, over your own connection — we hold no airline credentials.

Built to grow into more standards

FWB v16 and v17 are available today. The same architecture is designed to accept FHL, Cargo-XML (XFWB / XFHL), and ONE Record as they're added — without re-plumbing your integration.

Every format reads the record produced by MAWB data extraction and proven by air waybill validation — extraction reads the fields, validation proves them, and outputs render them.

FAQ

Outputs, answered.

Why can't the JSON, EDI, and CSV disagree with each other?

Because they aren't three separate extractions. One document produces one normalized record; JSON, EDI, and the spreadsheet are all rendered from that single record, so a value that reads one way in the API reads the same way in the FWB message and the CSV.

Do you transmit the FWB message to the airline for me?

No. AWBGuru generates and returns the Cargo-IMP FWB message; you transmit it through your own rails. We hold no airline credentials and connect to no carrier network on your behalf.

Which formats are available today?

JSON and XML over the API, EDI FWB/16 and FWB/17, and CSV and XLSX spreadsheets. The architecture is built to accept FHL, Cargo-XML (XFWB/XFHL), and ONE Record as they're added.

How do I know an extraction is finished?

Poll the document endpoint every few seconds with your bearer key; a document typically extracts in roughly 10 to 40 seconds. When it resolves, the response carries the record plus per-field confidence and validation results.

See your own waybills come out clean.

Start with 30 free scans — no card. Extract one record and pull it as JSON, an FWB message, or a spreadsheet.