Get booking contacts
Contacts to book a quote. Send the booking_ref from a quote and get the publicly published contacts of the company selling that rate, or Navo24 when the seller has none. This does not place a booking: quote the route, carrier and sailing date when you contact them.
Request body
The booking_ref of one quote from POST /v1/rates/quote.
Response schema
3 fields
Nested exactly as the JSON is. Open a branch to read its fields; hover a name for the full dot-path.
book_with
vendor: the company selling the rate. navo24: the seller has no public contacts, book through us.
Publicly published contacts only. The example above is illustrative.
When we last checked the contacts.
Errors
A failure carries { "ok": false, "error": { "code", "message", "severity" } }. Branch on the code, and log the message.
booking_ref is missing, malformed or expired.
Which quotes can be booked
Any live quote from POST /v1/rates/quote, in any place of the transport hierarchy (transport_mode, shipping_type, transport_unit): Sea-FCL-40'hc, Sea-LCL, Sea-RoRo-Truck, Air-Aircargo, Road-FTL, Road-LTL, Road-FCL, Rail-FCL. When you contact the seller, quote the hierarchy, the transport_unit and the weight from the quote (weight_mt for Sea-Bulk). Indicative quotes, including Sea-Bulk index levels, are a market level and not bookable.
Air-ULD: not priced yet
Air-ULD (AKE, PMC, PAG) returns no quotes yet, so there is no booking_ref to book. Use Air-Aircargo for now.
Transport hierarchy
transport_mode, then shipping_type, then transport_unit, as carried on every quote. Air-ULD is not priced yet.
| transport_mode | shipping_type | transport_unit | Notation | Old request fields |
|---|---|---|---|---|
| Sea | FCL | 20'st, 40'st, 40'hc, 45'hc, 20'rf, 40'rf | Sea-FCL-20'st | shipping_type FCL + container_type 20ST |
| Sea | LCL | None | Sea-LCL | shipping_type LCL |
| Sea | Bulk | None (weight in weight_mt) | Sea-Bulk | shipping_type BULK |
| Sea | RoRo | Truck, Trailer, Lorry, Van, Car, Plant | Sea-RoRo-Truck | shipping_type RORO + vehicle_type TRUCK |
| Air | Aircargo | None | Air-Aircargo | shipping_type AIR |
| Air | ULD | AKE, PMC, PAG | Air-ULD-AKE | None. Not priced yet. |
| Road | FTL | None | Road-FTL | shipping_type ROAD + road_type FTL |
| Road | LTL | None | Road-LTL | shipping_type ROAD + road_type LTL |
| Road | FCL | 20'st, 40'st, 40'hc | Road-FCL-40'hc | shipping_type ROAD + road_type FCL + container_type 40HC |
| Rail | FCL | 20'st, 40'st, 40'hc, 45'hc, 20'rf, 40'rf | Rail-FCL-40'hc | shipping_type RAIL + rail_type FCL |
| Rail | LWL | None | Rail-LWL | shipping_type RAIL + rail_type LWL |
| Rail | FWL / FTL | 20'st, 40'st, 40'hc | Rail-FWL, Rail-FTL | shipping_type RAIL + rail_type FWL or FTL |
curl -X POST 'https://api.freightratesmcp.com/v1/rates/book' \
-H "Authorization: Bearer tmcp_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"booking_ref":"nr_5d4f00fa07c41e2"}'const res = await fetch("https://api.freightratesmcp.com/v1/rates/book", {
method: "POST",
headers: {
"Authorization": "Bearer tmcp_YOUR_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
"booking_ref": "nr_5d4f00fa07c41e2"
})
});
const data = await res.json();import requests
res = requests.post(
"https://api.freightratesmcp.com/v1/rates/book",
headers={"Authorization": "Bearer tmcp_YOUR_API_KEY"},
json={
"booking_ref": "nr_5d4f00fa07c41e2"
},
)
data = res.json(){
"success": true,
"book_with": {
"contact_type": "vendor",
"name": "Example Forwarding Ltd.",
"type": "freight forwarder",
"website": "https://www.example-forwarding.com",
"email": "[email protected]",
"phone": "+86 21 0000 0000",
"whatsapp": null,
"address": "Shanghai, China",
"verified_at": "2026-09-28"
},
"note": "Public contacts of the company selling this rate. Quote route, carrier and sailing date when you contact them."
}