HomeProductsAWB Intelligence API
Product — REST API

The AWB Intelligence API for developers

A single REST endpoint that accepts scanned AWBs, digital PDFs, photographed waybills, or raw FWB Cargo-IMP text — and returns fully structured JSON with all 29 FWB sections parsed, validated against IATA and Thai Customs databases, with per-field confidence scores. Sub-2-second latency. 97%+ extraction accuracy. Built for Thai air freight.

29
FWB Sections Parsed
97%+
Field-Level Accuracy
<2s
Average Latency
99.9%
Uptime SLA
How It Works

From document to structured data in 4 steps

Upload any AWB document. Receive clean, validated JSON. No templates to configure, no training required.

1
📤

POST Your Document

Upload a scanned PDF, photograph, or raw FWB Cargo-IMP text to a single REST endpoint via multipart form or base64.

2
🔍

KabyTech-OCR Extracts

Our cognitive OCR engine reads the document and extracts data from all 29 IATA Cargo-IMP FWB sections automatically.

3

Validate & Cross-Check

Every field is validated against IATA airline prefixes, airport codes, HS tariff codes, and Thai Customs databases in real time.

4
📦

Receive Clean JSON

Get structured JSON with every field, per-field confidence scores, validation flags, and warnings — ready for your system.

Request
curl -X POST \
  https://api.kabytech.co.th/v1/parse \
  -H "Authorization: Bearer kt_live_..." \
  -H "Content-Type: multipart/form-data" \
  -F "file=@mawb-176-15515964.pdf" \
  -F "validate=true" \
  -F "include_confidence=true"
Response 200 OK · 1.4s
{
  "awb_number": "176-1551 5964",
  "confidence": 0.978,
  "shipper": {
    "name": "KARGO GLOBAL LOGISTICS",
    "confidence": 0.99
  },
  "consignee": {
    "name": "EXCEL MARITIME",
    "confidence": 0.97
  },
  "routing": {
    "origin": "BKK",
    "destination": "MAA",
    "via": "DXB"
  },
  "flight": "EK0375/10SEP",
  "pieces": 5,
  "gross_weight": 57.72,
  "goods_desc": "AIRBAG INFLATOR",
  "dg_class": "UN3268",
  "sections_parsed": 29,
  "validation": {
    "check_digit": "PASS",
    "iata_prefix": "PASS",
    "airport_codes": "PASS"
  }
}
Live Code Example

One POST request. Complete AWB data.

Send any AWB document to a single endpoint and receive a comprehensive JSON response with every field extracted, validated, and scored for confidence. No templates, no pre-configuration, no per-airline setup.

The response includes the full AWB number with check-digit verification, shipper and consignee details with addresses, multi-leg routing, flight information, piece count and weight, goods description, dangerous goods classification, and all charge sections — each with its own confidence score.

Confidence scores per field Validation flags Check-digit verification DG classification Multi-leg routing Webhook support
Complete FWB Coverage

All 29 IATA Cargo-IMP sections parsed

Every section defined in the IATA Cargo-IMP FWB/16 standard is extracted and returned as structured JSON. No field left behind.

Header (Sections 1-2)
Section 1
AWB
AWB Consignment Detail
4 fields — prefix, serial, origin, destination
Section 2
QTY
Quantity Detail
3 fields — shipment code, pieces, weight
Core identification fields
Parties (Sections 3-7)
Section 3
FLT
Flight Booking Detail
4 fields — carrier, flight no, date, ULD
Section 4
RTG
Routing
6 fields — airport codes, carrier codes, on-carriage
Section 5
SHP
Shipper Information
8 fields — name, address, city, country, phone, account
Section 6
CNE
Consignee Information
8 fields — name, address, city, country, phone, account
Section 7
AGT
Agent Information
6 fields — name, city, IATA code, CASS address, account
Routing & Special (Sections 8-9)
Section 8
SPH
Special Handling Codes
Multiple — PER, DGR, AVI, HEA, etc.
Section 9
NFY
Also Notify
6 fields — name, address, city, country, contact
Handling & notification
Cargo Detail (Sections 10-13)
Section 10
SSR
Special Service Request
Free text — special instructions
Section 11
OSI
Other Service Information
Free text — supplementary info
Section 12
HTS
Harmonised Commodity Code
2 fields — HS code, country qualifier
Section 13
RTD
Rate Description
12 fields — rate class, commodity, charge weight, rate, total
Charges & Valuation (Sections 14-16)
Section 14
CVD
Charge / Valuation Declaration
6 fields — currency, declared value, customs value, insurance
Section 15
OTH
Other Charges
4 fields — charge code, entitlement, amount, P/C indicator
Section 16
PPD / COL
Prepaid / Collect Totals
8 fields — weight charge, valuation, tax, total
Execution (Sections 17-18)
Section 17
ISS
Shipment Reference
4 fields — date, place, signature, authorization
Section 18
CER
Customs/Origin Certification
3 fields — certificate number, customs ref, origin
Signatures & certification
Reference & Regulatory (Sections 19-29)
Section 19
OCI
Other Customs Information
4 fields — country, info ID, customs info, supplementary
Section 20
CDC
Charge Declarations
3 fields — P/C indicators for weight, other, valuation
Section 21
REF
Reference Number
2 fields — reference type, reference number
Section 22
CSD
Customs Status Declaration
3 fields — status code, entry point, entry date
Section 23
CNS
Consignment Security
3 fields — security status, reason, issued by
Section 24
NOM
Nominated Handling Party
4 fields — name, place, IATA code, contact
Section 25
COR
Corrective Action
3 fields — action type, details, reference
Section 26
CON
Consolidation Detail
3 fields — HAWB count, total weight, consolidation ID
Section 27
DIM
Dimensions
5 fields — length, width, height, pieces, volume weight
Section 28
ULD
ULD Description
4 fields — ULD type, serial, owner code, contour
Section 29
DNG
Dangerous Goods
8 fields — UN number, class, packing group, proper shipping name
Input Formats

Accept any document type your team uses

No need to standardize your incoming documents. The API handles them all.

📄
PDF
Scanned or digital PDFs. Multi-page supported.
📸
JPEG / PNG
Phone photos or screenshots. Auto deskew & enhance.
🖼️
TIFF
High-res scans from enterprise scanners.
📝
FWB Text
Raw IATA Cargo-IMP FWB/16 message text.
📋
Base64
Inline base64-encoded documents via JSON body.
ResolutionMinimum 150 DPI for scanned documents. 300 DPI recommended for best accuracy.
LanguagesThai + English. Mixed-language documents handled natively. No language hint required.
Multi-pageMulti-page PDFs automatically detected. Each page processed and merged into a single result.
File SizeUp to 25 MB per request. Larger files supported via async endpoint with webhook callback.
Batch ModeUpload up to 50 documents in a single batch request. Results delivered via webhook.
Auto EnhancementAutomatic deskewing, noise removal, and contrast adjustment for low-quality scans.
Validation Results — 176-1551 5964
✈️ AWB Check Digit 15515964 mod 7 = 0 PASS
🏷️ IATA Airline Prefix 176 = Emirates (EK) PASS
📍 Airport Codes BKK, DXB, MAA PASS
📦 HS Code (Thai Customs) 8708.95.00 PASS
🏢 Tax ID Validation 0105548032111 PASS
⚠️ DG Classification UN3268 Class 9 REVIEW
⚖️ Weight / Pieces Check 5 pcs / 57.72 KG PASS
6/7 checks passed · 1 review flag
Validation Engine

Every field cross-checked against live databases

The API doesn't just extract data — it validates every field against authoritative sources in real time. AWB numbers are verified with check-digit algorithms. Airline prefixes are matched against the IATA airline code registry. Airport codes are validated against the full IATA location database.

For Thai operations, HS commodity codes are cross-referenced against the Thai Customs tariff database, and Tax IDs are validated against the Revenue Department registry. Dangerous goods classifications trigger automatic DG review flags with UN number verification.

AWB check-digit IATA airline prefixes Airport code registry Thai HS tariff codes Tax ID verification DG UN number check Weight consistency
SDK & Integration

Integrate in minutes, not weeks

Official SDKs for popular languages, OpenAPI 3.0 spec, and webhook support. Choose your stack.

Python
Node.js
PHP
Java
from kabytech import KabyTechClient

client = KabyTechClient("kt_live_...")

# Parse an AWB document
result = client.parse(
  file="mawb-176-15515964.pdf",
  validate=True,
  include_confidence=True
)

print(result.awb_number)  # "176-1551 5964"
print(result.shipper.name) # "KARGO GLOBAL LOGISTICS"
print(result.confidence)   # 0.978
const { KabyTech } = require('@kabytech/sdk');

const client = new KabyTech('kt_live_...');

// Parse an AWB document
const result = await client.parse({
  file: './mawb-176-15515964.pdf',
  validate: true,
  includeConfidence: true
});

console.log(result.awbNumber);  // "176-1551 5964"
console.log(result.shipper.name);// "KARGO GLOBAL LOGISTICS"
use KabyTech\Client;

$client = new Client('kt_live_...');

// Parse an AWB document
$result = $client->parse([
  'file' => 'mawb-176-15515964.pdf',
  'validate' => true,
  'include_confidence' => true
]);

echo $result->awb_number;  // "176-1551 5964"
echo $result->shipper->name;// "KARGO GLOBAL LOGISTICS"
import co.th.kabytech.KabyTechClient;
import co.th.kabytech.model.ParseResult;

KabyTechClient client = new KabyTechClient("kt_live_...");

// Parse an AWB document
ParseResult result = client.parse(
  new File("mawb-176-15515964.pdf"),
  ParseOptions.builder()
    .validate(true)
    .includeConfidence(true)
    .build()
);

System.out.println(result.getAwbNumber());
// "176-1551 5964"
📖
OpenAPI 3.0 Spec

Full OpenAPI spec available for auto-generating client code in any language. Import into Postman, Insomnia, or your CI/CD pipeline.

🔔
Webhook Callbacks

Register webhook URLs to receive results asynchronously. Ideal for batch processing and high-volume operations.

🔐
API Key Authentication

Bearer token auth with key rotation, rate limiting, and usage analytics. Test keys and production keys separated.

📊
Usage Dashboard

Real-time dashboard showing API calls, success rates, average latency, and monthly usage against your plan quota.

Pricing

Simple, transparent pricing

Start with a free trial. Upgrade when you're ready. All plans include all 29 FWB sections and validation.

Starter
฿9,900
per month
  • 500 API calls / month
  • All 29 FWB sections
  • PDF, image & FWB text input
  • IATA validation
  • Confidence scores
  • Email support
  • Python & Node.js SDK
Start Free Trial
Enterprise
Custom
volume pricing
  • Unlimited API calls
  • All Professional features
  • On-premise deployment option
  • Custom model training
  • Dedicated account manager
  • SLA 99.95% uptime guarantee
  • SSO / SAML integration
  • 24/7 phone support
Contact Sales
FAQ

Common questions

What document formats does the API accept?
The API accepts scanned PDFs (single and multi-page), digital/native PDFs, JPEG images, PNG images, TIFF scans, and raw IATA Cargo-IMP FWB/16 text. Documents can be uploaded as multipart form data or inline as base64-encoded content in a JSON body. Minimum recommended resolution for scanned documents is 150 DPI, with 300 DPI recommended for optimal accuracy.
How accurate is the extraction?
The API achieves 97%+ field-level accuracy across all 29 FWB sections. Critical fields like AWB number, shipper, consignee, routing, and weight achieve 99%+ accuracy. Every field includes a confidence score (0.0 to 1.0) so your application can flag low-confidence results for human review. Accuracy improves further with higher-quality scans (300 DPI or digital PDFs).
Does the API handle Thai-language documents?
Yes. The KabyTech-OCR engine natively supports both Thai and English text, including mixed-language documents. Thai shipper names, addresses, and goods descriptions are extracted accurately. No language hint parameter is required — the engine automatically detects and handles both languages.
What is the typical response time?
Average response time is under 2 seconds for single-page documents. Multi-page PDFs (2-5 pages) typically complete in 3-5 seconds. For high-volume batch processing, use the async endpoint with webhook callbacks — results are delivered as each document completes. The API maintains a 99.9% uptime SLA with servers located in Thailand for lowest latency.
Can I try the API before committing to a paid plan?
Absolutely. Every plan starts with a 30-day free trial that includes 50 API calls — no credit card required. You can also book a live demo where we'll process your actual AWB documents in real time so you can evaluate accuracy against your specific document types and formats.

Ready to parse your first AWB?

Start your 30-day free trial with 50 API calls. No credit card required. Or book a live demo with your actual documents.