Skip to content

Guides

DCSA event feed

The same tracking events in the industry-standard DCSA format, so a client that already speaks the standard plugs in without a mapping table.

DCSA (Digital Container Shipping Association) publishes the industry standard for container tracking APIs. TrackingMCP serves your shipment events in that exact format, so if your systems already consume DCSA Track and Trace from a carrier or another provider, they can consume ours with no mapping work.

If you are integrating from scratch, you do not need this feed: the native /v1 container endpoints carry the same events plus everything DCSA has no field for. This page is for teams that already have a DCSA consumer and want to point it at us.

One thing to understand before anything else

The v2 in the path is the DCSA standard version, not a second version of our API. Everything native stays on /v1.

PathServes
/v2/eventsDCSA Track and Trace 2.2
/v3/eventsDCSA Track and Trace 3.0.0-Beta-1

Pick the path matching the standard version your consumer speaks. On these two paths the API-Version header belongs to DCSA as well: send API-Version: 2 on /v2 and API-Version: 3 on /v3, or omit it. To pin our contract version here, use X-API-Version instead.

Calling it

Same host, same key, same bearer auth as everything else:

curl https://api.trackingmcp.com/v2/events \
  -H "Authorization: Bearer tmcp_YOUR_API_KEY"

The response is a bare JSON array of DCSA event objects for the containers on your account, newest first. That bare array is the standard’s shape, so there is no { ok, data } envelope here.

Three query parameters cover the common cases: equipmentReference filters to one container number, eventType to one DCSA category (SHIPMENT, TRANSPORT or EQUIPMENT), and limit caps the page. The full parameter and response tables live on the reference page.

Two answers to the questions everyone asks

Where is emptyIndicatorCode? It appears only on EQUIPMENT events, and only when the carrier reported the fill state. The standard defines it as a strict EMPTY | LADEN enum with no unknown member, so when the line did not say, we omit the field rather than invent a value. Treat its absence as “not reported”.

Does this feed cost the same? Yes. A call here meters exactly like a /v1 call, against the same key and the same limits, and answers with the same X-Usage headers.