Price a flight offer and create a confirmed order in Amadeus
domain: amadeus · 6 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗
Steps
POST the full, unmodified FlightOffer object (from the search step) to /v1/shopping/flight-offers/pricing; set include=bags,detailed-fare-rules as query params to also retrieve ancillary and fare-rule data alongside the confirmed price.
The pricing response returns a re-priced FlightOffer — treat this as authoritative; the search-time price is indicative only and can differ.
Check flightOffers[0].price.grandTotal against the expected amount and review fareDetailsBySegment for fare basis codes or restrictions relevant to the booking decision.
Build the order payload and POST to /v1/booking/flight-orders with the priced FlightOffer plus a travelers[] array; each traveler needs id, name.firstName/name.lastName, dateOfBirth, gender, contact.emailAddress, contact.phones[], and documents[] (passport data for international itineraries).
On success (HTTP 201) the response is a flight-order resource with id (the Amadeus order id) and associatedRecords[] containing the airline PNR/GDS locator the passenger needs at the airport.
In test, use Amadeus-provided test traveler data; the test environment rejects bookings with random names or invalid passport numbers, returning a 400 with details in errors[].
Known gotchas
Amadeus Self-Service test and production API keys are being disabled 2026-07-17 as the self-service portal shuts down; Enterprise API customers are unaffected; migrate to an Amadeus Enterprise contract or contact Amadeus sales before that date.
The priced offer is only valid for a short window; if you delay between pricing and order creation the price may change or the offer may expire, returning a 400 OFFER_EXPIRED — re-price before retrying.
associatedRecords[].reference is the airline PNR — store it separately from the Amadeus order id; passengers and airport staff look up bookings by PNR, not by the Amadeus internal id.
Give your agent this knowledge — and 15,500+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?