Skip to content
GETNo key

Vessel-first cards

GETapi.schedulesmcp.com/public/schedules/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

originstringrequired

Origin UN/LOCODE.

destinationstringrequired

Destination UN/LOCODE.

Response fields

Derived from the example response.

okboolean

Whether the request succeeded.

dataobject

The payload. Everything an endpoint returns sits under this key.

data.originstring

Origin code (airport IATA or UN/LOCODE).

data.destinationstring

Destination code (airport IATA or UN/LOCODE).

data.min_obsnumber

Minimum observations required to rank a carrier.

data.countnumber

How many cards the lane returned.

data.lane_capacityobject

Weekly TEU offered on the lane, summed over distinct vessels.

data.lane_capacity.total_teunumber

Total TEU across the sailings returned. Null when no vessel carried a capacity.

data.lane_capacity.sailingsnumber

Matching sailings.

data.lane_capacity.teu_per_weeknumber

TEU offered per week on this lane. Null when the window is too short to divide.

data.lane_capacity.estimatedboolean

True when any card in the total used an estimated capacity.

data.suspected_blanksany[]

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.

data.cardsobject[]

Vessel-first sailing cards. One per physical vessel and departure, with every carrier selling a slot on it grouped inside.

data.cards[].vessel_namestring

Name of the carrying vessel, or null when the carrier named none.

data.cards[].vessel_imostring

IMO number of the carrying vessel, or null when unknown.

data.cards[].voyage_numberstring

Carrier voyage number.

data.cards[].service_namestring

Carrier service or loop name.

data.cards[].published_departurestring

The departure the carrier published (ISO 8601). Null when it published none.

data.cards[].published_arrivalstring

The arrival the carrier published (ISO 8601). Null when it published none.

data.cards[].transit_daysnumber

Port-to-port transit in days.

data.cards[].leg_countnumber

How many legs the routing has. One means a direct sailing.

data.cards[].is_transshipmentboolean

True when the box changes vessel on the way.

data.cards[].transship_vianull

Where it transships, or null on a direct sailing.

data.cards[].capacity_teunumber

Vessel capacity in TEU. Null when we hold neither a real nor an estimated figure.

data.cards[].capacity_estimatedboolean

True when the TEU figure is derived from deadweight rather than published. Read it before quoting the number.

data.cards[].confidenceobject

On a card, whether the slot partners agree with each other. On a prediction, how much to trust the shifted arrival.

data.cards[].confidence.sourcesnumber

How many carriers published this vessel and departure.

data.cards[].confidence.etd_spread_hoursnumber

Hours between the earliest and latest departure the partners published. Null on a single source.

data.cards[].confidence.eta_spread_hoursnumber

Hours between the earliest and latest arrival the partners published. Null on a single source.

data.cards[].confidence.levelstring

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.

data.cards[].predictionobject

The published arrival shifted by the carrier observed average delay on this lane. Null until we hold a confident sample.

data.cards[].prediction.predicted_arrivalstring

When we expect it to actually arrive (ISO 8601), as against the published arrival.

data.cards[].prediction.delay_hoursnumber

The average delay applied, in hours.

data.cards[].prediction.basis_obsnumber

How many observed sailings the shift rests on.

data.cards[].prediction.band_hoursnumber

Uncertainty band around the prediction, in hours, from the carrier schedule churn.

data.cards[].prediction.confidencestring

On a card, whether the slot partners agree with each other. On a prediction, how much to trust the shifted arrival.

data.cards[].partner_countnumber

How many carriers sell a slot on this sailing.

data.cards[].partnersobject[]

The carriers selling this vessel, best reliability first. Each carries its own cut-offs, because a forwarder books a slot rather than a vessel.

data.cards[].partners[].carrier_codestring

Carrier SCAC.

data.cards[].partners[].carrier_namestring

Carrier name.

data.cards[].partners[].service_namestring

Carrier service or loop name.

data.cards[].partners[].voyage_numberstring

Carrier voyage number.

data.cards[].partners[].published_departurestring

The departure the carrier published (ISO 8601). Null when it published none.

data.cards[].partners[].published_arrivalstring

The arrival the carrier published (ISO 8601). Null when it published none.

data.cards[].partners[].reliability_pctnumber

Share of this carrier sailings that arrived on time on this lane.

data.cards[].partners[].reliability_obsnumber

How many sailings that percentage rests on.

data.cards[].partners[].reliability_provisionalboolean

True when the sample is below min_obs, so the percentage is indicative rather than a ranking.

data.cards[].partners[].cutoffsobject

This carrier own deadlines. A card-level value survives only when it is attributable, because slot partners routinely disagree.

data.cards[].partners[].cutoffs.cystring

Container yard deadline (ISO 8601), or null when the carrier published none.

data.cards[].partners[].cutoffs.docstring

Documentation deadline (ISO 8601), or null when the carrier published none.

data.cards[].partners[].cutoffs.vgmstring

Verified gross mass deadline (ISO 8601), or null when the carrier published none.

data.cards[].partners[].sourcestring

Where the answer on this call came from: direct_carrier, searates or warm_db.

data.cards[].vesselobject

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.

data.cards[].vessel.imostring

IMO number of the vessel.

data.cards[].vessel.teunumber

Vessel capacity in TEU.

data.cards[].vessel.teu_estimatedboolean

True when the TEU figure is derived rather than published.

data.cards[].vessel.length_mnumber

Overall length in metres.

data.cards[].vessel.year_builtnumber

Year the hull was delivered.

data.cards[].vessel.flagstring

Flag state, as a two-letter country code.

data.cards[].vessel.latnumber

Latitude.

data.cards[].vessel.lngnumber

Longitude.

data.cards[].vessel.speed_knotsnumber

Speed over ground, in knots.

data.cards[].vessel.nav_statusstring

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.

data.cards[].vessel.position_updated_atstring

When we last wrote the position row.

data.cards[].last_movenull

The most recent schedule change we observed for this sailing. Null when it has not moved.

Try it No key
curl 'https://api.schedulesmcp.com/public/schedules/cards?origin=CNSHA&destination=NLRTM'

This preview uses documented example data and makes no live request. Get a key to run live.