Blog
Container Status Codes Explained with a Tracking API
If you have ever tried to track a shipping container and got lost in cryptic messages like GATE OUT FULL, LOADED ON VESSEL, or EMPTY AVAILABLE, you are not alone.
Container status codes may appear simple at first glance, but behind each line lies an operational meaning that can impact your planning, invoicing, and customer communication.
This explains how container status codes work, how carriers and terminals utilize them.
What Are Container Status API Codes?
Container status API codes describe where a container is and what is happening to it in the shipping industry.
They are mostly derived from EDI events (for example, EDIFACT IFTMCS or ANSI X12 315 messages) used by shipping lines, terminals, and inland depots.
In practice, you see them as short text updates in tracking portals and APIs.
Common container status codes tell you:
Is the container empty or full
Is it at the depot, terminal, on the road, or on the vessel
Has it been released, loaded, discharged, or returned
Is there a delay, hold, or customs issue
For logistics teams, these codes are not just “info messages”; they drive demurrage and detention, trucking dispatch, yard planning, and customer updates.
Common Codes Container tracking API return:
Exact text depends on the carrier, but these are some of the most common status concepts and how to read them:
Gate Moves
Gate In Full: A full container has entered a terminal or depot. Exports: The shipper delivered the loaded box to the port. Imports: sometimes used when a full container enters an inland depot.
Gate Out Full – The full container has left the terminal or depot. Exports: usually means it left an inland location heading to a port. Imports: indicates the cargo is leaving the port toward the consignee.
Gate In Empty – An empty container was returned. This is crucial for detention calculation.
Gate Out Empty – An empty box was picked up for loading.
Vessel-Related Statuses
Loaded on Vessel / On Board – The container is physically on the vessel. This is the moment when many shippers consider cargo as “shipped.”
Discharged / Unloaded – The container has been taken off the vessel at a port.
Transshipment – The container is being moved from one vessel to another at an intermediate port. Delays often appear here.
Availability and Holds
Available for Pickup – The container is free to be collected from the terminal or depot.
Customs Hold / Inspection – The container is under customs control and cannot be released yet.
Document Hold / Line Hold – There is a documentation issue, payment problem, or lien that prevents release.
Delivery and Finalization
Out for Delivery – Often used in inland legs when the truck or rail has picked up the container.
Delivered – The container has arrived at the final delivery point (e.g., warehouse, factory).
Empty Returned – The empty container has been returned, closing the cycle and usually stopping detention charges.
In JsonCargo, these events are unified and normalized so your systems do not need to understand 15 ways of saying “available for pickup” across different carriers.
How Carriers and Terminals Generate Status Codes?
Behind each simple description is a technical event:
Terminal operating systems (TOS) log every move of the container (crane operations, gate operations, yard moves).
Carriers receive EDI feeds from terminals and rail operators and convert them into standardized event messages.
Tracking APIs and portals, then convert those messages into human-readable status lines.
Explaining Raw Status Codes returned by the API:
If you are building your own solution on top of container tracking data, you should think in terms of business events instead of raw data.
For example, you can map different raw texts into standard internal flags like:
export_gate_in– container arrived at the origin terminalloaded_on_vessel– container is on boardvessel_departed– main transport leg startedvessel_arrived– vessel reached destination portimport_gate_out– container left the destination portempty_returned– cycle closed
JsonCargo helps here by already grouping events into logical phases and providing structured fields like:
Current status/phase
Latest event timestamp
Location details (port code, terminal, country)
Transport leg information when available
This makes it much easier to build alerts, dashboards, performance reports, and customer emails without manually decoding raw carrier messages.
API Integration & Dev Tools: Where do developers start?
If you’re working with container status codes and want to build business logic on top of them, JSONCargo already did the heavy lifting. The fastest way to start is simple: get an API key, check the API documentation, and start using the API endpoint for container tracking.
There is no need to interpret raw carrier messages; the API endpoints return unified container phases, timestamps, and normalized location fields in JSON that map cleanly into ERPs, CRMs, and TMS platforms.
Frequently Asked Questions About Container Tracking Data:
1. Do you provide other data, like predictive ETA or voyage estimation?
Alongside container status codes, JSONCargo also returns ETA and voyage estimation fields when available. These data points combine multiple carrier and port data sources to estimate arrival times and improve planning. You can find the API response examples and sample requests in our API documentation.
2. Do container tracking APIs charge extra beyond subscription pricing plans?
Some providers add additional costs for premium carriers, higher call volumes, or access to historical events. On the other hand, in JSONCargo, we avoid this confusion by delivering normalized phases, timestamps, and real-time container tracking through a single platform and a single subscription once you activate your API key and follow the api documentation.
3. Do you provide notifications, real-time alerts, or webhooks for container statuses and milestone updates?
We do not provide notifications or webhooks. ETA estimates, voyage information, container statuses, milestones, and all other real-time container tracking data are pulled by your system through our API endpoints.