Vessel-first cards
The same sailings shaped as vessel-first cards, the way a desk scans them. One card per physical vessel and departure, with the slot partners selling it grouped inside. A card carries more keys than the example below, including routing legs, CO2 and the per-carrier cut-off detail.
Query parameters
Origin UN/LOCODE.
Destination UN/LOCODE.
Response fields
Derived from the example response.
Whether the request succeeded.
The payload. Everything an endpoint returns sits under this key.
Origin code (airport IATA or UN/LOCODE).
Destination code (airport IATA or UN/LOCODE).
Minimum observations required to rank a carrier.
How many cards the lane returned.
Weekly TEU offered on the lane, summed over distinct vessels.
Total TEU across the sailings returned. Null when no vessel carried a capacity.
Matching sailings.
TEU offered per week on this lane. Null when the window is too short to divide.
True when any card in the total used an estimated capacity.
Gaps of more than about eleven days between departures on a weekly service, which usually mean a skipped sailing. Suspected, not confirmed by the carrier.
Vessel-first sailing cards. One per physical vessel and departure, with every carrier selling a slot on it grouped inside.
Name of the carrying vessel, or null when the carrier named none.
IMO number of the carrying vessel, or null when unknown.
Carrier voyage number.
Carrier service or loop name.
The departure the carrier published (ISO 8601). Null when it published none.
The arrival the carrier published (ISO 8601). Null when it published none.
Port-to-port transit in days.
How many legs the routing has. One means a direct sailing.
True when the box changes vessel on the way.
Where it transships, or null on a direct sailing.
Vessel capacity in TEU. Null when we hold neither a real nor an estimated figure.
True when the TEU figure is derived from deadweight rather than published. Read it before quoting the number.
On a card, whether the slot partners agree with each other. On a prediction, how much to trust the shifted arrival.
How many carriers published this vessel and departure.
Hours between the earliest and latest departure the partners published. Null on a single source.
Hours between the earliest and latest arrival the partners published. Null on a single source.
On a port, the congestion level. On a sailing card confidence block, high when at least two carriers agree within a day, then medium, low, or single_source when only one published it.
The published arrival shifted by the carrier observed average delay on this lane. Null until we hold a confident sample.
When we expect it to actually arrive (ISO 8601), as against the published arrival.
The average delay applied, in hours.
How many observed sailings the shift rests on.
Uncertainty band around the prediction, in hours, from the carrier schedule churn.
On a card, whether the slot partners agree with each other. On a prediction, how much to trust the shifted arrival.
How many carriers sell a slot on this sailing.
The carriers selling this vessel, best reliability first. Each carries its own cut-offs, because a forwarder books a slot rather than a vessel.
Carrier SCAC.
Carrier name.
Carrier service or loop name.
Carrier voyage number.
The departure the carrier published (ISO 8601). Null when it published none.
The arrival the carrier published (ISO 8601). Null when it published none.
Share of this carrier sailings that arrived on time on this lane.
How many sailings that percentage rests on.
True when the sample is below min_obs, so the percentage is indicative rather than a ranking.
This carrier own deadlines. A card-level value survives only when it is attributable, because slot partners routinely disagree.
Container yard deadline (ISO 8601), or null when the carrier published none.
Documentation deadline (ISO 8601), or null when the carrier published none.
Verified gross mass deadline (ISO 8601), or null when the carrier published none.
Where the answer on this call came from: direct_carrier, searates or warm_db.
Vessel currently carrying the container, or null when we hold neither a name nor an IMO. Its lat and lng are always null here; the keyed endpoints carry the live position under vessel_position.
IMO number of the vessel.
Vessel capacity in TEU.
True when the TEU figure is derived rather than published.
Overall length in metres.
Year the hull was delivered.
Flag state, as a two-letter country code.
Latitude.
Longitude.
Speed over ground, in knots.
Navigational status as reported by AIS, for example "Under way using engine" or "Moored". We drop a moored or anchored claim that the position contradicts.
When we last wrote the position row.
The most recent schedule change we observed for this sailing. Null when it has not moved.
curl 'https://api.schedulesmcp.com/public/schedules/cards?origin=CNSHA&destination=NLRTM'
const res = await fetch("https://api.schedulesmcp.com/public/schedules/cards?origin=CNSHA&destination=NLRTM");
const data = await res.json(); import requests
res = requests.get("https://api.schedulesmcp.com/public/schedules/cards?origin=CNSHA&destination=NLRTM")
data = res.json() {
"ok": true,
"data": {
"origin": "CNSHA",
"destination": "NLRTM",
"min_obs": 5,
"count": 1,
"lane_capacity": {
"total_teu": 23656,
"sailings": 1,
"teu_per_week": 23656,
"estimated": false
},
"suspected_blanks": [],
"cards": [
{
"vessel_name": "EVER GIVEN",
"vessel_imo": "9811000",
"voyage_number": "0FBB3E1MA",
"service_name": "AEU2",
"published_departure": "2026-08-14T18:00:00Z",
"published_arrival": "2026-09-12T06:00:00Z",
"transit_days": 29,
"leg_count": 1,
"is_transshipment": false,
"transship_via": null,
"capacity_teu": 23656,
"capacity_estimated": false,
"confidence": {
"sources": 2,
"etd_spread_hours": 6,
"eta_spread_hours": 12,
"level": "high"
},
"prediction": {
"predicted_arrival": "2026-09-14T12:00:00Z",
"delay_hours": 54,
"basis_obs": 18,
"band_hours": 24,
"confidence": "medium"
},
"partner_count": 2,
"partners": [
{
"carrier_code": "EGLV",
"carrier_name": "Evergreen",
"service_name": "AEU2",
"voyage_number": "0FBB3E1MA",
"published_departure": "2026-08-14T18:00:00Z",
"published_arrival": "2026-09-12T06:00:00Z",
"reliability_pct": 71.4,
"reliability_obs": 18,
"reliability_provisional": false,
"cutoffs": {
"cy": "2026-08-12T12:00:00Z",
"doc": "2026-08-11T16:00:00Z",
"vgm": "2026-08-12T09:00:00Z"
},
"source": "connector"
}
],
"vessel": {
"imo": "9811000",
"teu": 23656,
"teu_estimated": false,
"length_m": 399.9,
"year_built": 2018,
"flag": "PA",
"lat": 29.97,
"lng": 32.57,
"speed_knots": 0,
"nav_status": "Moored",
"position_updated_at": "2026-08-07T05:30:00Z"
},
"last_move": null
}
]
}
} This preview uses documented example data and makes no live request. Get a key to run live.