---
title: "DCSA Track & Trace 2.2 event feed"
method: GET
path: "/v2/events"
---

# DCSA Track & Trace 2.2 event feed

`GET /v2/events`

## Request

- Base URL: `https://api.trackingmcp.com`
- URL: `https://api.trackingmcp.com/v2/events`
- Auth: HTTP bearer

Standards-aligned event feed (DCSA T&T 2.2.0). Returns a bare JSON array of event objects for the containers on your account, newest first. Filter with the DCSA query parameters. IMPORTANT — two fields customers ask about:

1. `emptyIndicatorCode` is present ONLY on EQUIPMENT events and ONLY when the carrier reported the fill state. Per DCSA it is a required `EMPTY | LADEN` enum with no 'unknown' member, so rather than fabricate a value we OMIT the field when the line didn't report it (most equipment events). Do NOT rely on it as your end-of-shipment trigger — many carriers (e.g. MSC) never stamp it on the empty return. Where the carrier described the move only in words ('Empty received at CY'), we now infer `EMPTY` from that phrase, but coverage is still partial.

2. There is NO container-level status in this feed — it is events only. `delivered` / `returned_empty` are CONTAINER statuses, not events; read them from `GET /v1/containers/{id}` (the `status` field). To detect end-of-shipment, poll the container status: `delivered` = laden box handed to the consignee at the destination port; `returned_empty` = the empty box was returned to the depot (the true, terminal end of shipment, which happens AFTER `delivered`).

## Query parameters

- `equipmentReference` string
- `eventType` 'SHIPMENT' | 'TRANSPORT' | 'EQUIPMENT'
- `limit` integer

## Response `200`

DCSA event array (the `API-Version` response header reports the T&T version, e.g. 2.2.0).

- DcsaEvent[]
  - `eventID` string, uuid, required
  - `eventCreatedDateTime` string, date-time
  - `eventType` 'SHIPMENT' | 'TRANSPORT' | 'EQUIPMENT', required
  - `eventClassifierCode` 'ACT' | 'PLN' | 'EST', required: ACT = actual (happened), EST = estimated, PLN = planned. Never assume a PLN/EST move has occurred.
  - `eventDateTime` string, date-time, required
  - `equipmentEventTypeCode` 'LOAD' | 'DISC' | 'GTIN' | 'GTOT' | 'STUF' | 'STRP' | 'PICK' | 'DROP' | 'INSP' | 'RSEA' | 'RMVD': EQUIPMENT events only. E.g. GTOT (gate-out), GTIN (gate-in), LOAD, DISC, PICK, DROP.
  - `emptyIndicatorCode` 'EMPTY' | 'LADEN': EQUIPMENT events only. Present ONLY when the carrier reported the fill state (a minority of events). Absent when not reported — DCSA has no 'unknown' value and we do not fabricate one. Not a reliable end-of-shipment signal; use the container `status` field instead.
  - `emptyIndicatorSource` 'carrier' | 'not_reported': Extension, EQUIPMENT events only. carrier when the line reported emptyIndicatorCode, not_reported when it did not (emptyIndicatorCode is then absent). We never fill the gap ourselves.
  - `equipmentReference` string: Container number.
  - `ISOEquipmentCode` string, nullable
  - `transportEventTypeCode` 'ARRI' | 'DEPA': TRANSPORT events only. E.g. ARRI (arrival), DEPA (departure).
  - `shipmentEventTypeCode` string, nullable: SHIPMENT events only.
  - `transportCall` object, nullable: Location / vessel / voyage of the call.

## Other responses

- `401`: Missing or invalid API key.

---

[API](https://skmtc.dev/trackingmcp/apis/trackingmcp-rest-api.md) · [All operations](https://skmtc.dev/trackingmcp/apis/trackingmcp-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/trackingmcp/apis/trackingmcp-rest-api/revisions/6bb8d8172ceb?raw)
