Skip to main content
WEBHOOK

Headers

X-WM-Signature
string
required

Legacy body-only HMAC-SHA256. No replay protection. Migrate to V2.

Pattern: ^sha256=[0-9a-f]{64}$
Example:

"sha256=2b8c0d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c"

X-WM-Signature-V2
string
required

HMAC-SHA256(secret, timestamp.deliveryId.event.rawRequestBody).

Pattern: ^sha256=[0-9a-f]{64}$
X-WM-Timestamp
string
required

Send time in Unix seconds. Accept within 300 seconds of the receiver clock.

Pattern: ^[0-9]+$
X-WM-Event
enum<string>
required

Always chokepoint.disruption for this body. The other events (country.risk_surge, news.breaking, market.move, natural.hazard) send the same headers and signature with the payloads documented at https://www.worldmonitor.app/docs/api-shipping-v2#delivery-format.

Available options:
chokepoint.disruption
X-WM-Delivery-Id
string
required

Unique delivery identifier (whd_ + 32 hex chars). Use it to dedupe retries and process deliveries idempotently.

Pattern: ^whd_[0-9a-f]{32}$
Example:

"whd_1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d"

Body

application/json
subscriberId
string
required

The wh_-prefixed subscription receiving this alert.

chokepointId
string
required

Chokepoint that breached the threshold (e.g. suez).

score
number
required

Current disruption score of the chokepoint, 0-100.

alertThreshold
number
required

The subscription's configured alert threshold, 0-100.

triggeredAt
string<date-time>
required

ISO-8601 timestamp when the alert fired.

reason
enum<string>
required

First matching rule in this order; score_threshold when none matches.

Available options:
ais_congestion_spike,
navigational_warning,
transit_drop,
score_threshold
details
object

Name, status, warning and AIS counts, congestion, war-risk tier, transit change, previous score, feed time.

Response

2XX

Any 2xx acknowledges receipt. A non-2xx response or a delivery timeout marks the delivery failed.