After selecting a flight offer, call GET /air/seat_maps with the offer_id (not the order_id) to retrieve available seat options per segment and passenger
Parse the seat map response for cabin sections, seat availability, and per-seat pricing; present to the user for selection
Call GET /air/offers/{offer_id}/available_services to retrieve available ancillary services including checked bags, carry-on upgrades, and other add-ons with their service IDs and prices
Collect the user's selected seat IDs and service IDs, then include them respectively in the seats array and services array of the POST /air/orders request body
After order creation, verify the order response contains the selected seats and services in the segments and services fields before confirming to the user
Known gotchas
Seat maps must be requested with the offer_id, not the order_id — using the order_id at this stage will return an error because the order does not yet exist
Not all airlines provide ancillary services through Duffel's available_services endpoint — check service availability before building UI elements that depend on it
Bag pricing may differ between the available_services response and the final order total due to per-passenger or per-segment pricing rules; always display the itemized cost before confirmation
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp