Updated Payload for NO_CONTAINERS / NO_EVENTS API responses
What's new
NO_CONTAINERS (200) api responses
When sending a tracking request for a BL or BK reference very early on, it is possible that no container is yet attached to the shipping reference. In this case, the api will send a NO_CONTAINERS
response with no data in the payload.
In some cases, while no container number is attached to the shipment, the carrier still shares partial key milestone data such as POL and POD or ETD and ETA.
This data will now be contained in the route object of NO_CONTAINERS
api responses.

example of a Yang Ming Booking Reference without Container Data
NO_EVENTS (200) api responses
The same logic applies to NO_EVENTS api responses.
Important Notes:
-
Empty Tables:
Previously, thecontainers
andcontainers.events
tables were never empty in the API response. They can now be empty if no data is available. -
New Metadata Warnings:
To keep you informed, we’ve introduced new warnings in themetadata
object:NO_EVENTS
: The shipping line shared container data but not event details.NO_CONTAINERS
: No container information was received from the shipping line.
These updates ensure greater transparency and more meaningful insights, even when shipping data is incomplete.
Examples
NO_EVENTS
NO_EVENTS
Previous Response:
{
"errorCode": 200,
"message": "NO_EVENTS",
"details": [
"Request completed successfully. The line provided information on containers, but did not provide information on events"
],
"time": "2025-01-20T10:14:27Z"
}
Updated Response:
{
"metadata": {
"shipmentType": "CT",
"shipmentNumber": "DFSU1942290",
"sealine": "TXZJ",
"sealineName": "T.S. Lines",
"shippingStatus": "UNKNOWN",
"updatedAt": "2025-01-20T09:03:21Z",
"warnings": [
"NO_EVENTS",
"NO_POL",
"NO_POD"
]
},
"locations": [],
"route": {
"prepol": {
"location": null,
"date": null,
"actual": null,
"predictiveEta": null
},
"pol": {
"location": null,
"date": null,
"actual": null,
"predictiveEta": null
},
"pod": {
"location": null,
"date": null,
"actual": null,
"predictiveEta": null
},
"postpod": {
"location": null,
"date": null,
"actual": null,
"predictiveEta": null
}
},
"vessels": [],
"facilities": [],
"containers": [
{
"number": "DFSU1942290",
"isoCode": null,
"status": "UNKNOWN",
"events": []
}
],
"routeData": {
"routeSegments": [],
"coordinates": null,
"ais": {
"status": "NOT_ON_BOARD",
"data": null
}
}
}
NO_CONTAINERS
NO_CONTAINERS
Previous Response:
{
"errorCode": 200,
"message": "NO_CONTAINERS",
"details": [
"Request completed successfully. The line did not provide container information"
],
"time": "2025-01-20T10:16:15Z"
}
Updated Response:
{
"metadata": {
"shipmentType": "BL",
"shipmentNumber": "EUKOULAW1993277",
"sealine": "EUKO",
"sealineName": "Eukor",
"shippingStatus": "DELIVERED",
"updatedAt": "2025-01-20T08:48:22Z",
"warnings": [
"NO_CONTAINERS"
]
},
"locations": [
{
"name": "Ulsan",
"state": "Ulsan",
"country": "South Korea",
"countryCode": "KR",
"locode": "KRUSN",
"coordinates": {
"lat": 35.53722,
"lng": 129.31667
},
"timezone": "Asia/Seoul"
},
{
"name": "Antwerp",
"state": "Flanders",
"country": "Belgium",
"countryCode": "BE",
"locode": "BEANR",
"coordinates": {
"lat": 51.22047,
"lng": 4.40026
},
"timezone": "Europe/Brussels"
}
],
"route": {
"prepol": {
"location": null,
"date": null,
"actual": null,
"predictiveEta": null
},
"pol": {
"location": {
"name": "Ulsan",
"state": "Ulsan",
"country": "South Korea",
"countryCode": "KR",
"locode": "KRUSN",
"coordinates": {
"lat": 35.53722,
"lng": 129.31667
},
"timezone": "Asia/Seoul"
},
"date": "2024-11-10T00:00:00+09:00",
"actual": true,
"predictiveEta": null
},
"pod": {
"location": {
"name": "Antwerp",
"state": "Flanders",
"country": "Belgium",
"countryCode": "BE",
"locode": "BEANR",
"coordinates": {
"lat": 51.22047,
"lng": 4.40026
},
"timezone": "Europe/Brussels"
},
"date": "2024-12-31T00:00:00+01:00",
"actual": true,
"predictiveEta": null
},
"postpod": {
"location": null,
"date": null,
"actual": null,
"predictiveEta": null
}
},
"vessels": [],
"facilities": [],
"containers": [],
"routeData": {
"routeSegments": [],
"coordinates": null,
"ais": {
"status": "NOT_ON_BOARD",
"data": null
}
}
}
These 2 cases will translate to webhooks. shipment.added.to.endpoint and shipment.any.change events will be sent.