A REST API for everything in the Broadpath platform — container tracking, vessel positions, port intelligence. Bearer auth, JSON in, JSON out, generous rate limits, webhooks for the things you'd rather not poll.
# Fetch a container's latest snapshot curl https://api.broadpathlogistics.com/v1/containers/MEDU9091004 \ -H "Authorization: Bearer bp_live_•••" # Response (200 OK) { "container_id": "MEDU9091004", "carrier": "MSC", "status": "in_transit", "vessel": { "name": "MSC OSCAR", "imo": "9703291" }, "last_location": "Mediterranean Sea", "eta": "2026-05-20", "last_updated": "2026-05-14T03:00Z" }
No client library required — every endpoint is a plain HTTPS call returning JSON. Use whatever HTTP client your stack already has.
Free account, no card needed. Generate a live or test key from the dashboard. Test keys hit cached/synthetic data so you don't burn quota.
Authenticate with a Bearer header. Every response includes x-ratelimit-* headers so you can throttle proactively.
Skip polling. Register an HTTPS endpoint and we'll POST events (container.update, vessel.enter, port.arrival) as they happen.
Bearer tokens. Send your API key in the Authorization header on every request.
Keys can be scoped (read-only, write, admin) and IP-allowlisted from the dashboard.
Per-key limits, with headroom for bursts. Anonymous calls (no key) are heavily throttled.
Hitting limits returns 429 with {"error":"rate_limited"} and a reset epoch.
All endpoints are at https://api.broadpathlogistics.com/v1 and return JSON. Errors follow RFC 7807 problem-details format.
Returns the latest known state of a single container — status, current location, current carrying vessel, ETA, and most recent event.
Object with container_id, carrier, status, last_location, vessel, eta, last_updated.
curl https://api.broadpathlogistics.com/v1/containers/MEDU9091004?shipping_line=MSC \ -H "Authorization: Bearer bp_live_•••" { "container_id": "MEDU9091004", "carrier": "MSC", "status": "in_transit", "last_location": "Mediterranean Sea", "vessel": { "name": "MSC OSCAR", "imo": "9703291", "mmsi": "636016432" }, "origin": "Guayaquil, EC", "destination": "Tripoli, LY", "eta": "2026-05-20", "last_updated": "2026-05-14T03:00Z" }
Full event timeline for a container — every booking confirmation, gate-in, load, transhipment, arrival, customs clearance, and gate-out we've observed.
{
"container_id": "MEDU9091004",
"events": [
{
"type": "departed",
"location": "Guayaquil, EC",
"vessel": "MSC OSCAR",
"occurred_at": "2026-05-04T02:00Z"
},
{
"type": "transhipment",
"location": "Singapore PSA",
"new_vessel": "EVER ACE",
"occurred_at": "2026-05-10T09:00Z"
}
]
}
Start tracking a new container. Spends one credit. Polled daily for 30 days from the call timestamp; can be paused or extended via PATCH.
MEDU9091004).curl -X POST https://api.broadpathlogistics.com/v1/containers \ -H "Authorization: Bearer bp_live_•••" \ -H "Content-Type: application/json" \ -d '{ "container_number": "MEDU9091004", "shipping_line": "MSC", "alias": "Q3 reefer #14" }' # 201 Created
Current AIS snapshot for a vessel by IMO number — position, speed, course, heading, current and next ports.
imo, mmsi, name, flag, lat, lng, sog, cog, heading, nav_status, destination, last_seen.
{
"imo": "9703291",
"mmsi": "636016432",
"name": "MSC OSCAR",
"flag": "PA",
"lat": 30.2,
"lng": 32.5,
"sog": 18.2,
"cog": 145,
"nav_status": "underway",
"destination": "SGSIN",
"last_seen": "2026-05-14T09:30Z"
}
Historical position data, downsampled to a reasonable number of points. Useful for playback, route analysis, dispute evidence.
{
"imo": "9703291",
"hours": 168,
"points": [
["2026-05-07T00:00Z", 14.2, 78.5, 22.1, 92],
["2026-05-08T00:00Z", 18.6, 64.9, 21.7, 95],
// [ts, lat, lng, sog, cog]
…
]
}
All 32 deep-water ports we monitor, with UN/LOCODE, country, lat/lng, and current vessel count.
{
"ports": [
{"unlocode":"SGSIN", "name":"Singapore", "vessels_now":1247},
{"unlocode":"CNSHA", "name":"Shanghai", "vessels_now":1108},
…
]
}
Port metadata plus every vessel currently within the configured radius, with berth/anchor/inbound classification.
{
"unlocode": "SGSIN",
"name": "Singapore",
"country": "SG",
"lat": 1.27, "lng": 103.85,
"vessels": [
{"name":"EVER ACE", "classification":"berthed"},
{"name":"MAERSK MADRID", "classification":"anchored"},
…
]
}
Register an HTTPS endpoint; we send signed POSTs as events happen. Replaces ~95% of the polling people instinctively write.
Every POST includes x-broadpath-signature — HMAC-SHA256 of (secret + raw_body). Verify before processing.
Signing secrets rotate without breaking existing endpoints — both old and new secrets accepted for 24h after rotation.