---
updatedAt: 2026-01-22T15:08:31.000Z
agentTools:
  projectIndex: https://developers.opentrack.co/llms.txt
---

# Export Booking Visibility via API

OpenTrack allows you to get full visibility on your bookings from the earliest stages via API.

# Get key info, early enough for decision-making

Get itinerary, receiving windows, ETDs and ETAs even before containers have been pulled or assigned. This helps you better plan and execute origin operations.

For example, if you’ve pulled the container before you realized that the cutoff changed, then you’re sitting on a couple of days of storage fees you hadn’t planned for.

Whereas if you get notified proactively about receiving window changes from OpenTrack, you can delay pulling the container and avoid paying the extra storage.

# How it works

1. Track a Booking Reference Number using a [POST request to the /master-bills endpoint](https://developers.opentrack.co/reference/trackmasterbill). Just put the Booking Number in place of the Master Bill number.
2. When a booking has no containers yet, the `containers` array includes one `container` object without a `containerId`. It carries booking-level data like ETD/ETA, early return dates, and cutoffs.
3. To get notified when some data changes on your early-stage bookings, you can [register](https://developers.opentrack.co/reference/registerwebhook) or [update](https://developers.opentrack.co/reference/updatewebhook) your webhook to subscribe to the event `shipment.itinerary.updated` . This includes the same payload sampled below.
4. Once containers are assigned, container objects will appear as usual in the `containers` array.

# Track a booking early

## POST or GET /master-bills

[Send a Booking Number or Master Bill using the /master-bills endpoint](https://developers.opentrack.co/reference/trackmasterbill) to start tracking and retrieve early-stage export data.

### Example response

Note: No **`containerId`** included here.

```json
{
    "createdAt": "2025-10-01T20:27:47.967Z",
    "number": "SCAC1234567890",
    "scacCode": "SCAC",
    "referenceNumbers": [],
    "settings": null,
    "status": "TRACKED",
    "account": {
        "domain": "domain.com",
        "region": null
    },
    "containers": [
        {
            "timestamp": "2025-10-02T10:58:32.756Z",
            "createdAt": "2025-10-01T20:47:47.967Z",
            "scacCode": "COSU",
            "etaAtTerminal": "2025-11-01T20:00:00.000Z",
            "etdFromOrigin": "2025-10-15T00:00:00.000Z",
            "tradeType": "export",
            "railEarlyReturnDate": "2025-10-03T05:00:00.000Z",
            "railCutoff": "2025-10-06T21:00:00.000Z",
            "earlyReturnDate": "2025-10-08T05:00:00.000Z",
            "cutoffDate": "2025-10-12T21:00:00.000Z",
            "shippingInstructionCutoff": "2025-10-11T21:00:00.000Z",
            "status": "BOOKED",
            "portOfLoading": "HOUSTON, TX",
            "containerSize": "40' High Cube",
            "containerType": "DRY",
            "originPort": {
                "name": "HOUSTON, TX",
                "timezone": "America/Chicago",
                "state": "Texas",
                "country": "United States",
                "coordinates": {
                    "latitude": 29.647709920655355,
                    "longitude": -95.01239408754086
                },
                "unlocode": "USHOU",
                "type": "port"
            },
            "portOfDischarge": "SOUTHAMPTON",
            "destinationPort": {
                "name": "SOUTHAMPTON",
                "timezone": "Europe/London",
                "state": "England",
                "country": "United Kingdom",
                "coordinates": {
                    "latitude": 50.909704,
                    "longitude": -1.4357131
                },
                "unlocode": "GBSOU",
                "type": "port"
            },
            "terminalAtOriginPort": {
                "name": "Bayport",
                "firmsCode": "V136",
                "address": "12619 Port Rd, Seabrook, TX 77586, USA"
            },
            "destination": "Southampton",
            "finalDestination": {
                "name": "Southampton",
                "timezone": "Europe/London",
                "type": "locality",
                "state": "England",
                "country": "United Kingdom",
                "coordinates": {
                    "latitude": 50.90970040000001,
                    "longitude": -1.4043509
                }
            },
            "holds": [],
            "history": [],
            "masterBillNumber": "1234567890",
            "account": {
                "domain": "domain.com",
                "region": null
            },
            "customFields": [],
            "timeline": []
        }
    ]
}
```

<br />

# Get notified on changes

The data property of the payload is identical to the payload returned by GET [v1/master-bills](https://developers.opentrack.co/reference/getmasterbillstatus) representing the current state of the container. The payload also includes an object with the changes between the previous object and the current snapshot.

Subscribe your [webhook](https://developers.opentrack.co/reference/registerwebhook) to the event `shipment.itinerary.updated`.

* Fires when early-stage data change (e.g., earlyReturnDate, cutoffDate, railCutoff, shippingInstructionCutoff, ETD/ETA).
* Use this to notify operations and customer teams about significant changes in receiving windows or ETDs (e.g. to delay container pulls if receiving windows move to avoid unexpected storage).

### Example response

```json
{
  "event": "shipment.itinerary.updated",
  "data": {
    "timestamp": "2026-01-22T13:40:54.884Z",
    "createdAt": "2026-01-22T13:40:54.735Z",
    "scacCode": "ONEY",
    "tradeType": "import",
    "earlyReturnDate": "2024-10-20T21:00:00.000Z",
    "cutoffDate": "2024-10-25T13:00:00.000Z",
    "railCutoff": "2024-10-19T10:00:00.000Z",
    "railEarlyReturnDate": "2024-10-19T07:00:00.000Z",
    "status": "BOOKED",
    "terminalAtOriginPort": {
      "name": "Norfolk International Terminals",
      "firmsCode": "L005"
    },
    "holds": [],
    "history": [],
    "masterBillNumber": "RICEJZ939500",
    "account": {
      "domain": "a7Q7.first-parking.com",
      "region": null
    },
    "customFields": [],
    "timeline": [],
    "containers": [
      {
        "timestamp": "2026-01-22T13:40:54.884Z",
        "createdAt": "2026-01-22T13:40:54.735Z",
        "scacCode": "ONEY",
        "tradeType": "import",
        "earlyReturnDate": "2024-10-20T21:00:00.000Z",
        "cutoffDate": "2024-10-25T13:00:00.000Z",
        "railCutoff": "2024-10-19T10:00:00.000Z",
        "railEarlyReturnDate": "2024-10-19T07:00:00.000Z",
        "status": "BOOKED",
        "terminalAtOriginPort": {
          "name": "Norfolk International Terminals",
          "firmsCode": "L005"
        },
        "holds": [],
        "history": [],
        "masterBillNumber": "RICEJZ939500",
        "account": {
          "domain": "a7Q7.first-parking.com",
          "region": null
        },
        "customFields": [],
        "timeline": [],
        "containerSize": "40' High Cube",
        "containerType": "DRY"
      },
    ]
  },
  "changes": {
    "earlyReturnDate": {
      "current": "2024-10-20T21:00:00.000Z",
      "previous": null
    },
    "cutoffDate": {
      "current": "2024-10-25T13:00:00.000Z",
      "previous": null
    },
    "railCutoff": {
      "current": "2024-10-19T10:00:00.000Z",
      "previous": null
    },
    "railEarlyReturnDate": {
      "current": "2024-10-19T07:00:00.000Z",
      "previous": null
    }
  },
}
```

**Follow these links to learn more about using webhooks in OpenTrack:**

* [List webhooks registered in your account](https://developers.opentrack.co/reference/listwebhooks)
* [Update a webhook](https://developers.opentrack.co/reference/updatewebhook)
* [Register a webhook](https://developers.opentrack.co/reference/registerwebhook)
* [Receiving webhooks](https://developers.opentrack.co/reference/registerwebhook#receiving-webhooks)