Skip to content
APIv1
Menu

The Shipment object

Every field of the Shipment object, its enums, and the rules for nulls, dates and units.

View as markdown

GET /v1/shipments and GET /v1/shipments/{reference} return the same object. The OpenAPI document is the authoritative schema.

Rules

  • Every key is always present. An unknown value is null; an empty list is [].
  • null means "not known yet" or "does not apply to this shipment"; it is never an error. A value that is null today can be filled in tomorrow.
  • Milestone dates are local calendar dates: yyyy-MM-dd, local to the place, with an optional local HH:mm. No time zone; do not convert them. They sort correctly as text.
  • Timestamps (createdAt, updatedAt, cancelledAt) are ISO 8601 in UTC.
  • Units are as recorded, not normalised. A weight is { "value": 1082, "unit": "KG" } on one shipment and { "value": 7600, "unit": "LB" } on another, and units can differ within one shipment.
  • Enum values are case-sensitive. Match them exactly.

Annotated example

An ocean DDP shipment, abridged. Complete examples are on Shipment types.

JSON
{
  "reference": "QB10293",
  "status": "Active",                 // Active | Delivered | Cancelled
  "serviceType": "OceanDDP",
  "mode": "Ocean",                    // Ocean | Air | Land
  "incoterms": "EXW",                 // who arranges origin pickup; FOB | EXW | null
  "tags": ["PO-8841"],                // the customer's own PO numbers
  "descriptionOfGoods": "Yoga mats",
  "insured": true,
  "bookingConfirmedByCarrier": true,

  "origin":          { "name": "Shenzhen Lotus Sports Goods Co., Ltd.", "type": "ShippingParty", "city": "Shenzhen", "countryCode": "CN", "code": null, /* … */ },
  "portOfLoading":   { "name": "Yantian", "type": "Seaport", "code": "CNYTN", "countryCode": "CN", /* … */ },
  "portOfDischarge": { "name": "Long Beach", "type": "Seaport", "code": "USLGB", "countryCode": "US", /* … */ },   // can be null
  "destination":     { "name": "ONT8", "type": "FulfillmentCenter", "fulfillmentCenter": "Amazon", "countryCode": "US", /* … */ },

  "carrier": { "name": "COSCO", "type": "ShippingLine" },   // null for land
  "booking": {
    "bookingNumber": null,
    "masterBill": "COSU6412345670",   // ocean master B/L, or air MAWB
    "houseBill": "SZX2607001",        // ocean house B/L, or air HAWB
    "cargoCutoff": "2026-07-05",
    "shippingInstructionCutoff": null,
    "destinationPortFreeDays": null,
    "emptyContainerReturnFreeDays": null
  },
  "parcels": { "carrier": "UPS", "trackingNumbers": ["1Z84R2E70312345678"] },   // null when none
  "amazon":  { "fbaIds": ["FBA18K4TQ9ZB"], "referenceIds": ["7KQ2M9XA"] },       // null when none

  "cargo": {
    "totalWeight": { "value": 1082, "unit": "KG" },
    "totalVolume": { "value": 6.486, "unit": "CubicMeter" },
    "chargeableWeight": null,         // air and courier only
    "stackable": null,
    "containers": [{ "number": "CSNU1234567", "type": "FortyFtHighCube", "sealNumber": "CN8812045" }],   // shared container on LCL/DDP/DDU
    "packages": [{ "type": "Box", "quantity": 62, "hazardous": false,
                   "weight": { "value": 17.45, "unit": "KG" },        // per package, not per line
                   "length": { "value": 48, "unit": "Centimeter" }, "width": { /* … */ }, "height": { /* … */ } }]
  },

  "milestones": [
    { "type": "Pickup", "place": { /* … */ }, "warehouseType": null, "cargoReadyDate": "2026-07-03",
      "arrival": null,
      "departure": { "date": "2026-07-03", "time": null, "actual": true },
      "completed": true,
      "transportToNext": { "mode": "Truck", "vessel": null, "voyageNumber": null, "flightNumber": null, "carrier": null } },
    { "type": "IntermediaryWarehouse", "warehouseType": "ConsolidationWarehouse", "place": null /* always null */, /* … */ },
    { "type": "OriginPort", /* … */ "transportToNext": { "mode": "Voyage", "vessel": "COSCO SHIPPING ANDES", "voyageNumber": "027E", /* … */ } },
    { "type": "DestinationPort", "arrival": { "date": "2026-07-28", "time": "08:00", "actual": true }, /* … */ },
    { "type": "IntermediaryWarehouse", "warehouseType": "DeconsolidationWarehouse", "place": null, /* … */ },
    { "type": "Delivery", "arrival": { "date": "2026-08-04", "time": null, "actual": false } /* estimate */, "transportToNext": null }
  ],

  "currentMilestoneIndex": 3,         // the DestinationPort milestone: the last one completed
  "cancelledAt": null,
  "createdAt": "2026-06-28T10:12:00Z",
  "updatedAt": "2026-07-29T06:40:00Z"
}

Shipment

FieldTypeDescription
referencestringCubic reference. Unique, stable, and the identifier used in GET /shipments/{reference}.
statusstringDerived status; the first matching rule wins. Cancelled: cancelledAt is set. Delivered: the Delivery milestone has an actual arrival. Active: everything else. For where an active shipment is, read currentMilestoneIndex and milestones. Values: Active, Delivered, Cancelled.
serviceTypestringThe service booked. Express variants have the same shape as their base type. DDP/DDU are door-to-door services with duties paid/unpaid. LandTruck is a legacy value found only on historical shipments; new land shipments use LandTruckFTL or LandTruckLTL. Values: OceanFCL, OceanFCLExpress, OceanLCL, OceanLCLExpress, OceanDDU, OceanDDP, AirFreight, AirCourier, AirDDU, AirDDP, LandTruckFTL, LandTruckLTL, LandRailFCL, LandRailLCL, LandTruck.
modestringTransport mode of the main leg, implied by serviceType. Values: Ocean, Air, Land.
incotermsstring | nullWho arranges the origin pickup. EXW: Cubic collects the cargo from the supplier. FOB: the supplier delivers the cargo to the port of loading. It says nothing about duties or door delivery, and it coexists with a DDP/DDU serviceType. null when not recorded. Values: FOB, EXW.
tagsstring[]The customer's own tags on the shipment — in practice purchase order numbers. Filter on one with the tag query parameter. Empty when none.
descriptionOfGoodsstring | nullFree-text description of the goods.
insuredbooleanWhether the shipment is insured.
bookingConfirmedByCarrierbooleanWhether the carrier has confirmed the booking.
originPlace | nullWhere the cargo is collected.
portOfLoadingPlace | nullPort of loading: the seaport or airport where the main leg starts. null when the route has no port (for example land shipments, or courier shipments that list only pickup and delivery).
portOfDischargePlace | nullPort of discharge: the seaport or airport where the main leg ends. Some routes have no DestinationPort milestone; then this is the Delivery milestone's place if that is a port (door-to-port shipments), otherwise null. Never assume it is set.
destinationPlace | nullWhere the cargo is delivered. May itself be a port (door-to-port), an Amazon fulfilment centre, or an address.
carrierCarrier | nullThe main carrier: the shipping line for ocean, the airline for air, the courier company for AirCourier. Always null for land shipments, and null on other shipments until known. Individual legs carry their own carrier in milestones[].transportToNext.
bookingBookingBooking and bill-of-lading details. The object is always present; land and courier shipments usually have every member null. null means "not known yet" or "does not apply to this shipment"; it is never an error. A value that is not known yet can appear on a later read.
parcelsParcels | nullLast-mile parcel tracking. null when there is none. Present on courier shipments and on many DDP/DDU shipments.
amazonAmazon | nullAmazon inbound identifiers. null when there are none.
cargoCargoWhat is being shipped. The object is always present. Units vary between shipments and even between members of one shipment; convert yourself if you need a single unit.
milestonesMilestone[]The route, in order, from Pickup to Delivery. The milestone types present vary by shipment: never look a milestone up by index, and never assume a given type exists (some routes have no DestinationPort, courier shipments may have only Pickup and Delivery).
currentMilestoneIndexintegerIndex in milestones of the last milestone with completed: true — where the shipment is, or the milestone it last left. 0 when no milestone is completed yet. The shipment is on its way to the next milestone once this one has an actual departure.
cancelledAtstring | nullWhen the shipment was cancelled. ISO 8601, UTC. null unless cancelled.
createdAtstringWhen the shipment was created. ISO 8601, UTC.
updatedAtstringWhen anything on the shipment last changed. ISO 8601, UTC. The list is sorted by this, newest first; store the greatest value seen and pass it as updatedSince to poll for changes.

Place

FieldTypeDescription
namestring | nullDisplay name: the company or site name for a ShippingParty, the port or airport name for ports, the fulfilment centre code (for example ONT8) for a FulfillmentCenter.
typestringKind of place. ShippingParty is a supplier, consignee or warehouse address; ManualAddress is a free-typed address. Values: ShippingParty, FulfillmentCenter, Seaport, Airport, InlandTerminal, ManualAddress.
citystring | nullCity.
statestring | nullState, province or region, where the country uses one.
countryCodestring | nullISO 3166-1 alpha-2 country code.
codestring | nullUN/LOCODE for a Seaport or InlandTerminal (for example USLGB), IATA code for an Airport (for example ORD). null for every other type.
fulfillmentCenterstring | nullThe fulfilment network the place belongs to (for example Amazon) when type is FulfillmentCenter; otherwise null.
coordinatesCoordinates | nullWhere the place is on the map, or null when not known.

Coordinates

FieldTypeDescription
latnumberLatitude.
lonnumberLongitude.

Carrier

FieldTypeDescription
namestringCarrier name.
typestringKind of carrier. Values: ShippingLine, Airline, Courier.

Booking

FieldTypeDescription
bookingNumberstring | nullThe carrier's booking number. Often null even on ocean shipments.
masterBillstring | nullMaster bill number: the ocean master bill of lading (MBL) or the air master air waybill (MAWB). Searchable with search.
houseBillstring | nullHouse bill number: the ocean house bill of lading (HBL) or the air house air waybill (HAWB).
cargoCutoffstring | nullLatest date the cargo can be delivered to the port or terminal for the booked departure. Local calendar date at the place it refers to, yyyy-MM-dd. It has no time zone; do not convert it.
shippingInstructionCutoffstring | nullLatest date the shipping instructions can be submitted to the carrier. Local calendar date at the place it refers to, yyyy-MM-dd. It has no time zone; do not convert it.
destinationPortFreeDaysinteger | nullFree days at the port of discharge before storage/demurrage charges start.
emptyContainerReturnFreeDaysinteger | nullFree days to return the empty container before detention charges start.

Parcels

FieldTypeDescription
carrierstring | nullThe parcel carrier. Known values: UPS, FedEx, DHL, TNT, DPD_UK, DPD_DE. This is an open set — new values can appear without notice, so do not reject unknown ones.
trackingNumbersstring[]The parcel carrier's tracking numbers.

Amazon

FieldTypeDescription
fbaIdsstring[]Amazon FBA shipment IDs.
referenceIdsstring[]Amazon reference IDs.

Cargo

FieldTypeDescription
totalWeightWeight | nullTotal gross weight of the shipment.
totalVolumeVolume | nullTotal volume of the shipment.
chargeableWeightWeight | nullChargeable weight. Air and courier shipments only; always null for ocean and land.
stackableboolean | nullWhether the cargo can be stacked. null when not recorded.
containersContainer[]Ocean (and rail) containers. Empty for air, courier and truck shipments. On FCL shipments these are the customer's own containers. On LCL, DDP and DDU shipments the container is a shared consolidation container: its number is useful for tracking the vessel leg, but the box and its other contents do not belong to the customer — do not count it as "their container".
packagesPackage[]Package lines. Each line is quantity identical packages. May be empty, notably on FCL shipments.

Container

FieldTypeDescription
numberstring | nullContainer number (ISO 6346). null until a container is assigned, which can be well after booking. Searchable with search.
typestring | nullContainer size and kind. Values: TwentyFt, FortyFt, FortyFtHighCube, FortyFtTempControl, FortyFiveFtHighCube.
sealNumberstring | nullSeal number.

Package

FieldTypeDescription
typestring | nullKind of package. Values: Pallet, Box.
quantityinteger | nullNumber of identical packages on this line.
hazardousboolean | nullWhether the packages contain hazardous goods.
weightWeight | nullWeight of one package.
lengthLength | nullLength of one package.
widthLength | nullWidth of one package.
heightLength | nullHeight of one package.

Weight

FieldTypeDescription
valuenumberMagnitude, in unit.
unitstringKilograms or pounds. Values: KG, LB.

Length

FieldTypeDescription
valuenumberMagnitude, in unit.
unitstringUnit of value. Values: Centimeter, Inch, Millimeter, Meter.

Volume

FieldTypeDescription
valuenumberMagnitude, in unit.
unitstringCubic metres or cubic feet. Values: CubicMeter, CubicFeet.

Milestone

FieldTypeDescription
typestringRole of the milestone. For air shipments OriginPort, TransshipmentPort and DestinationPort are airports. A Delivery milestone's place may itself be a port (door-to-port). Values: Pickup, OriginPort, TransshipmentPort, DestinationPort, InlandTerminal, BorderCrossing, IntermediaryWarehouse, Delivery.
placePlace | nullWhere the milestone is. Always null for IntermediaryWarehouse and BorderCrossing milestones — only their type is given.
warehouseTypestring | nullKind of warehouse, on IntermediaryWarehouse milestones. CFS is a container freight station. null on every other milestone type. Values: CFS, ConsolidationWarehouse, DeconsolidationWarehouse.
cargoReadyDatestring | nullWhen the supplier has the cargo ready for collection. Set on the Pickup milestone only. Local calendar date at the place it refers to, yyyy-MM-dd. It has no time zone; do not convert it.
arrivalMilestoneDate | nullArrival at this milestone. null on the Pickup milestone and whenever no date is known.
departureMilestoneDate | nullDeparture from this milestone. null on the Delivery milestone and whenever no date is known.
completedbooleanWhether the shipment has reached this milestone: picked up for Pickup, arrived for every other type.
transportToNextTransportToNext | nullThe leg leaving this milestone. null on the last milestone.

ETA is a milestone's arrival while actual is false: the DestinationPort milestone for the port of discharge, the Delivery milestone for final delivery.

MilestoneDate

FieldTypeDescription
datestringLocal calendar date, yyyy-MM-dd.
timestring | nullLocal time, 24-hour HH:mm. null when only the date is known.
actualbooleantrue: it happened on this date. false: this is an estimate (ETA/ETD) and can change on any later read.

TransportToNext

FieldTypeDescription
modestring | nullHow the cargo moves on this leg. Voyage is a sea leg. Values: Truck, Voyage, Flight, Rail.
vesselstring | nullVessel name. Voyage legs only.
voyageNumberstring | nullVoyage number. Voyage legs only.
flightNumberstring | nullFlight number. Flight legs only; each flight leg of a transshipped air route has its own.
carrierCarrier | nullThe carrier operating this leg. Can differ from the shipment's main carrier, for example on an air route flown by two airlines.