CargoAi CargoCOPILOT API
AI extraction endpoints that turn an air waybill image or raw shipment email text into structured JSON that can be fed straight into the quote, book and eAWB endpoints, removing manual re-keying between parties.
AI extraction endpoints that turn an air waybill image or raw shipment email text into structured JSON that can be fed straight into the quote, book and eAWB endpoints, removing manual re-keying between parties.
openapi: 3.1.0
info:
title: Solutions
version: '1.0'
x-cargoai-api-family: CargoCOPILOT
x-provenance:
harvestedFrom: CargoAi CargoCONNECT developer portal (ReadMe) — per-operation oasDefinition embedded
in each reference page
fetchDate: '2026-07-30'
httpStatus: 200
sourceInfoTitle: Solutions
sourceInfoVersion: '1.0'
note: Operations reproduced verbatim from the provider-published OpenAPI 3.1 definition. No operation,
path, parameter, schema or server was authored by API Evangelist.
operations:
- sourceURL: https://cargoai.readme.io/reference/awb-extraction
httpStatus: 200
operation: POST /ai/awb
- sourceURL: https://cargoai.readme.io/reference/shipment-extraction
httpStatus: 200
operation: POST /ai/shipment
servers:
- url: https://api.cargoai.co/solutions
security:
- sec0: []
components:
securitySchemes:
sec0:
type: apiKey
name: x-api-key
in: header
paths:
/ai/awb:
post:
summary: AWB Data Extraction
description: AI Powered - Transform AWB image data into structured AWB information and remove manual
data entry from your AWB transmission process.
operationId: awb-extraction
parameters:
- name: x-api-key
in: header
description: API Key
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
type: object
required:
- email
- data
- type
properties:
email:
type: string
description: Requester email address
data:
type: string
description: Base64 encoded image for IMAGE
type:
type: string
description: media type (image accepted only)
enum:
- IMAGE
examples:
request example:
value:
email: ops@forwarder.com
type: IMAGE
data: <base64-encoded-awb-image>
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value: "{\n \"awb\": {\n \"shipper\": {\n \"name\": \"Shipper's\
\ name\",\n \"account_number\": \"0000\",\n \"phone\": \"+00000000000\"\
,\n \"fax\": null,\n \"email\": \"Shipper's email\",\n \
\ \"address\": {\n \"line1\": \"1462 Test street\",\n \
\ \"line2\": \"\",\n \"place\": \"\",\n \"city\"\
: {\n \"code\": \"\",\n \"name\": \"Paris\"\n\
\ },\n \"postal_code\": \"00000\",\n \
\ \"state_province\": \"\",\n \"country\": {\n \"\
code\": \"FR\",\n \"name\": \"France\"\n }\n \
\ },\n \"eori\": \"\"\n },\n \"consignee\": {\n \
\ \"name\": \"Consignee's name\",\n \"account_number\": null,\n\
\ \"phone\": \"+00000000000\",\n \"fax\": null,\n \
\ \"email\": \"\",\n \"address\": {\n \"line1\": \"1463\
\ Test road\",\n \"line2\": \"\",\n \"place\": \"\"\
,\n \"city\": {\n \"code\": \"\",\n \
\ \"name\": \"Singapore\"\n },\n \"postal_code\"\
: \"0000000\",\n \"state_province\": \"\",\n \"country\"\
: {\n \"code\": \"SG\",\n \"name\": \"Singapore\"\
\n }\n },\n \"eori\": \"\"\n },\n \
\ \"notify\": {\n \"name\": \"\",\n \"account_number\": null,\n\
\ \"phone\": null,\n \"fax\": null,\n \"email\":\
\ \"\",\n \"address\": {\n \"line1\": \"\",\n \
\ \"line2\": \"\",\n \"place\": \"\",\n \"city\"\
: {\n \"code\": \"\",\n \"name\": \"\"\n \
\ },\n \"postal_code\": \"\",\n \"state_province\"\
: \"\",\n \"country\": {\n \"code\": \"\",\n \
\ \"name\": \"\"\n }\n },\n \"\
eori\": \"\"\n },\n \"routingDetails\": [\n {\n \
\ \"from_airport_code\": \"CDG\",\n \"to_airport_code\": \"AMS\"\
,\n \"carrier_code\": \"00\",\n \"flight_number\": \"\
687\",\n \"flight_date\": \"2025-08-20\"\n },\n \
\ {\n \"from_airport_code\": \"AMS\",\n \"to_airport_code\"\
: \"SIN\",\n \"carrier_code\": \"00\",\n \"flight_number\"\
: \"768\",\n \"flight_date\": \"2025-08-22\"\n }\n \
\ ],\n \"chargesDeclaration\": {\n \"currency_code\": \"EUR\"\
,\n \"charge_code\": \"PP\",\n \"weight_or_valuation\": \"P\"\
,\n \"other\": \"X\",\n \"values_for_carriage\": 0,\n \
\ \"values_for_custom\": 0,\n \"values_for_insurance\": 0\n \
\ },\n \"rates\": [\n {\n \"number_of_pieces\":\
\ 5,\n \"gross_weight\": {\n \"value\": 354.1,\n\
\ \"uom\": \"K\"\n },\n \"volume\"\
: {\n \"value\": 0,\n \"uom\": \"\"\n \
\ },\n \"slac\": 0,\n \"rate_class_code\":\
\ \"Q\",\n \"commodity_item_number\": \"\",\n \"chargeable_weight\"\
: 357,\n \"rate_or_charge\": 4.02,\n \"charge_amount\"\
: 1435.14,\n \"nature_and_quantity_of_goods\": \"PERSONAL GOODS\",\n\
\ \"dims\": [\n {\n \"pcs\"\
: 1,\n \"length\": 80,\n \"width\":\
\ 60,\n \"height\": 40,\n \"weight\"\
: 0,\n \"Volume\": 0,\n \"uom\": \"\
CMT\"\n },\n {\n \"pcs\"\
: 1,\n \"length\": 80,\n \"width\":\
\ 60,\n \"height\": 60,\n \"weight\"\
: 0,\n \"Volume\": 0,\n \"uom\": \"\
CMT\"\n },\n {\n \"pcs\"\
: 1,\n \"length\": 80,\n \"width\":\
\ 60,\n \"height\": 60,\n \"weight\"\
: 0,\n \"Volume\": 0,\n \"uom\": \"\
CMT\"\n },\n {\n \"pcs\"\
: 1,\n \"length\": 80,\n \"width\":\
\ 60,\n \"height\": 60,\n \"weight\"\
: 0,\n \"Volume\": 0,\n \"uom\": \"\
CMT\"\n },\n {\n \"pcs\"\
: 1,\n \"length\": 120,\n \"width\"\
: 80,\n \"height\": 90,\n \"weight\"\
: 0,\n \"Volume\": 0,\n \"uom\": \"\
CMT\"\n }\n ],\n \"uld\": [],\n \
\ \"hsc\": null\n }\n ],\n \"execution\": {\n\
\ \"date\": \"2025-08-20\",\n \"place\": \"Paris\",\n \
\ \"shipper_signature\": \"Shipper's Signature\",\n \"carrier_signature\"\
: \"Carrier's Signature\"\n },\n \"oci\": {\n \"origin_country_code\"\
: \"FR\"\n },\n \"agent\": {\n \"iata\": \"0000000\",\n \
\ \"cass\": \"0000\",\n \"name\": \"Agent's name\",\n \
\ \"place\": \"LYON\"\n },\n \"handling\": {\n \"shc\"\
: \"\",\n \"other_info\": \"\",\n \"sci\": \"X\"\n },\n\
\ \"otherCharges\": null\n },\n \"awb_number\": \"000-00000000\",\n \
\ \"confidenceScore\": 0.9\n}"
schema:
type: object
properties:
awb:
type: object
properties:
shipper:
type: object
properties:
name:
type: string
example: Shipper's name
account_number:
type: string
example: '0000'
phone:
type: string
example: '+00000000000'
fax: {}
email:
type: string
example: Shipper's email
address:
type: object
properties:
line1:
type: string
example: 1462 Test street
line2:
type: string
example: ''
place:
type: string
example: ''
city:
type: object
properties:
code:
type: string
example: ''
name:
type: string
example: Paris
postal_code:
type: string
example: '00000'
state_province:
type: string
example: ''
country:
type: object
properties:
code:
type: string
example: FR
name:
type: string
example: France
eori:
type: string
example: ''
consignee:
type: object
properties:
name:
type: string
example: Consignee's name
account_number: {}
phone:
type: string
example: '+00000000000'
fax: {}
email:
type: string
example: ''
address:
type: object
properties:
line1:
type: string
example: 1463 Test road
line2:
type: string
example: ''
place:
type: string
example: ''
city:
type: object
properties:
code:
type: string
example: ''
name:
type: string
example: Singapore
postal_code:
type: string
example: '0000000'
state_province:
type: string
example: ''
country:
type: object
properties:
code:
type: string
example: SG
name:
type: string
example: Singapore
eori:
type: string
example: ''
notify:
type: object
properties:
name:
type: string
example: ''
account_number: {}
phone: {}
fax: {}
email:
type: string
example: ''
address:
type: object
properties:
line1:
type: string
example: ''
line2:
type: string
example: ''
place:
type: string
example: ''
city:
type: object
properties:
code:
type: string
example: ''
name:
type: string
example: ''
postal_code:
type: string
example: ''
state_province:
type: string
example: ''
country:
type: object
properties:
code:
type: string
example: ''
name:
type: string
example: ''
eori:
type: string
example: ''
routingDetails:
type: array
items:
type: object
properties:
from_airport_code:
type: string
example: CDG
to_airport_code:
type: string
example: AMS
carrier_code:
type: string
example: '00'
flight_number:
type: string
example: '687'
flight_date:
type: string
example: '2025-08-20'
chargesDeclaration:
type: object
properties:
currency_code:
type: string
example: EUR
charge_code:
type: string
example: PP
weight_or_valuation:
type: string
example: P
other:
type: string
example: X
values_for_carriage:
type: integer
example: 0
default: 0
values_for_custom:
type: integer
example: 0
default: 0
values_for_insurance:
type: integer
example: 0
default: 0
rates:
type: array
items:
type: object
properties:
number_of_pieces:
type: integer
example: 5
default: 0
gross_weight:
type: object
properties:
value:
type: number
example: 354.1
default: 0
uom:
type: string
example: K
volume:
type: object
properties:
value:
type: integer
example: 0
default: 0
uom:
type: string
example: ''
slac:
type: integer
example: 0
default: 0
rate_class_code:
type: string
example: Q
commodity_item_number:
type: string
example: ''
chargeable_weight:
type: integer
example: 357
default: 0
rate_or_charge:
type: number
example: 4.02
default: 0
charge_amount:
type: number
example: 1435.14
default: 0
nature_and_quantity_of_goods:
type: string
example: PERSONAL GOODS
dims:
type: array
items:
type: object
properties:
pcs:
type: integer
example: 1
default: 0
length:
type: integer
example: 80
default: 0
width:
type: integer
example: 60
default: 0
height:
type: integer
example: 40
default: 0
weight:
type: integer
example: 0
default: 0
Volume:
type: integer
example: 0
default: 0
uom:
type: string
example: CMT
uld:
type: array
items:
type: object
properties: {}
hsc: {}
execution:
type: object
properties:
date:
type: string
example: '2025-08-20'
place:
type: string
example: Paris
shipper_signature:
type: string
example: Shipper's Signature
carrier_signature:
type: string
example: Carrier's Signature
oci:
type: object
properties:
origin_country_code:
type: string
example: FR
agent:
type: object
properties:
iata:
type: string
example: '0000000'
cass:
type: string
example: '0000'
name:
type: string
example: Agent's name
place:
type: string
example: LYON
handling:
type: object
properties:
shc:
type: string
example: ''
other_info:
type: string
example: ''
sci:
type: string
example: X
otherCharges: {}
awb_number:
type: string
example: 000-00000000
confidenceScore:
type: number
example: 0.9
default: 0
'400':
description: '400'
content:
application/json:
examples:
Missing mandatory field:
value: "{\n \"error\": {\n \"type\": \"INVALID_REQUEST\",\n \"description\"\
: \"data: cannot be blank.\"\n }\n}"
Invalid type:
value: "{\n \"error\": {\n \"type\": \"INVALID_REQUEST\",\n \"description\"\
: \"type: must be a valid value.\"\n }\n}"
schema:
oneOf:
- title: Missing mandatory field
type: object
properties:
error:
type: object
properties:
type:
type: string
example: INVALID_REQUEST
description:
type: string
example: 'data: cannot be blank.'
- title: Invalid type
type: object
properties:
error:
type: object
properties:
type:
type: string
example: INVALID_REQUEST
description:
type: string
example: 'type: must be a valid value.'
deprecated: false
/ai/shipment:
post:
summary: Shipment Data Extraction (Text, Image)
description: Transform raw email data into accurate shipment information and remove manual data
entry from your quote and book process. By far the easiest way to leverage powerful AI capabilities
to supercharge your workflows.
operationId: shipment-extraction
parameters:
- name: x-api-key
in: header
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
type: object
required:
- email
- data
- type
properties:
email:
type: string
data:
type: string
description: raw text email for RAWTEXT type, or base64 encoded image for IMAGE and
MULTI types
type:
type: string
description: RAWTEXT (email only), IMAGE (image only), or MULTI (email + image)
subject:
type: string
emailBody:
type: string
description: email body data for MULTI type
examples:
email only:
value:
email: test@gmail.com
data: 'Hello, Please take the following reservation according to the quotation below:
Delivery Thursday 28/10, Origin CDG, Destination BKK, NON GERBABLE, Weight: 500KG
- 2m3, Type of goods: Fresh products +2+8°C (no dry ice) Best regards.'
type: RAWTEXT
image only:
value:
email: ''
data: '{{base64_encoded_image}}'
subject: ''
type: IMAGE
email + image:
value:
email: ''
data: '{{base64_encoded_image}}'
emailBody: '{{email_chain}}'
subject: ''
type: MULTI
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value: "{\n\t\"origin\": \"CDG\",\n\t\"destination\": \"BKK\",\n\t\"date\": \"2024-10-28\"\
,\n\t\"loadType\": \"PER\",\n\t\"weight\": 500,\n\t\"volume\": 2,\n\t\"dimensions\"\
: [\n\t\t{\n\t\t\t\"pieces\": 2,\n\t\t\t\"length\": 140,\n\t\t\t\"width\": 100,\n\t\
\t\t\"height\": 120,\n\t\t\t\"weight\": 250,\n\t\t\t\"lengthUnit\": \"\",\n\t\t\t\"\
weightUnit\": \"kg\",\n\t\t\t\"stackable\": false\n\t\t}\n\t]\n}"
schema:
type: object
properties:
origin:
type: string
example: CDG
destination:
type: string
example: BKK
date:
type: string
example: '2024-10-28'
loadType:
type: string
example: PER
weight:
type: integer
example: 500
default: 0
volume:
type: integer
example: 2
default: 0
dimensions:
type: array
items:
type: object
properties:
pieces:
type: integer
example: 2
default: 0
length:
type: integer
example: 140
default: 0
width:
type: integer
example: 100
default: 0
height:
type: integer
example: 120
default: 0
weight:
type: integer
example: 250
default: 0
lengthUnit:
type: string
example: ''
weightUnit:
type: string
example: kg
stackable:
type: boolean
example: false
default: true
'400':
description: '400'
content:
application/json:
examples:
Result:
value: "{\n \"customer\": null\n}"
schema:
type: object
properties:
customer: {}
deprecated: false
security: []