---
title: "Intermodal Booking Status Update Webhook"
method: POST
path: "/v1/webhook/intermodal-status"
tags: ["Use case / Intermodal [partner]", "Webhooks / Inbound"]
---

# Intermodal Booking Status Update Webhook

`POST /v1/webhook/intermodal-status`

Inbound webhook to receive intermodal booking status updates from the external intermodal booking system.

## Request body

- union
  - IntermodalBookingStatusPayload
    - `updates` IntermodalBookingUpdate[], required
      - `match` BookingMatchTarget
        - `matches_all` BookingMatch[]
          - `booking_reference` FieldMatchInput
            - `matches_any` string[]
          - `name` FieldMatchInput
            - `matches_any` string[]
      - `id` string, uuid, nullable — ID of the booking in Qargo
      - `event_time` string, date-time — Time of the event in UTC using ISO 8601 format
      - `status` IntermodalStatuses
        - `booking_status` 'TO_REQUEST' | 'REQUESTED' | 'BOOKED' | 'CANCELLED' | 'REJECTED'
        - `execution_statuses` IntermodalExecutionStatus[], nullable — Operational movement statuses reported during execution, in chronological order. At least one of `booking_status`, `execution_statuses`, or `failure` must be set.
          - `event_time` string, date-time, required — Time of the event in UTC
          - `ok` boolean, required — Is the status ok
          - `type` union, required — Type of the status
            - string
            - 'GATE_IN' | 'CLEARED_CUSTOMS' | 'CHECKED_IN' | 'ON_BOARD' | 'DEPARTED' | 'ARRIVED' | 'DISCHARGED' | 'GATE_OUT'
          - `remark` string, nullable — extra remark about the status
        - `failure` ErrorStatus
          - `error_type` 'USER_INPUT_ERROR' | 'INTERNAL_ERROR' | 'NOT_SUPPORTED', required
          - `error_message` string, nullable — (User visible) error message
      - `stop_timestamps` IntermodalStopTimestampsGroup
        - `departure` IntermodalStopTimestamps
          - `eta_timestamp` string, date-time, nullable — Estimated time of arrival at the stop (ISO 8601 format with a timezone offset, e.g. `Z` or `+02:00`).
          - `actual_start_timestamp` string, date-time, nullable — Actual time the stop started (arrival at the stop - ISO 8601 format with a timezone offset, e.g. `Z` or `+02:00`).
          - `actual_end_timestamp` string, date-time, nullable — Actual time the stop ended (departure from the stop - ISO 8601 format with a timezone offset, e.g. `Z` or `+02:00`).
        - `arrival` IntermodalStopTimestamps
          - `eta_timestamp` string, date-time, nullable — Estimated time of arrival at the stop (ISO 8601 format with a timezone offset, e.g. `Z` or `+02:00`).
          - `actual_start_timestamp` string, date-time, nullable — Actual time the stop started (arrival at the stop - ISO 8601 format with a timezone offset, e.g. `Z` or `+02:00`).
          - `actual_end_timestamp` string, date-time, nullable — Actual time the stop ended (departure from the stop - ISO 8601 format with a timezone offset, e.g. `Z` or `+02:00`).
      - `booking_reference` string, nullable — Operator's booking reference. Reference is filled in here, the field itself is not used to match the booking in Qargo.
      - `references` IntermodalBookingReferences
        - `arrival_reference_number` string, nullable — Booking reference for the arrival conveyance at the port of discharge.
        - `departure_reference_number` string, nullable — Booking reference for the departure conveyance at the port of loading.
      - `skip_dispatch` boolean, nullable — Marks the booking as final. Prevents further updates from being sent when the booking is updated in Qargo.
      - `external_id` string, nullable — Identifier of the booking in your own system. When supplied, Qargo stores it as the identifier for this booking, taking precedence over `booking_reference`. The value is only recorded on updates that also carry `booking_reference` or set the status to `BOOKED`.
      - `booking_id` string, uuid, nullable — Unique technical Qargo id for the booking. Replaced by `id`, please use `id` instead.
      - `timestamp` string, date-time, nullable — Time of the event. Replaced by `event_time`, please use `event_time` instead.
  - string

## Response `200`

Successful Response

- unknown

## Other responses

- `400` — Bad Request — invalid input or malformed request
- `401` — Unauthorized — missing or invalid authentication credentials
- `403` — Forbidden — insufficient permissions for this operation
- `422` — Validation Error
- `429` — Too Many Requests — rate limit exceeded. See the `Retry-After` header
- `500` — Internal Server Error
- `503` — Service Unavailable — temporarily unable to handle the request

---

[API](https://skmtc.dev/qargo/apis/qargo-tms-api.md) · [All operations](https://skmtc.dev/qargo/apis/qargo-tms-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/qargo/qargo-tms-api/revisions/17297902e7ce/schema)
