After creating an order with POST /v1/booking/flight-orders, store the returned order id — this is the `id` field inside the response's `data` object (JSON:API-style `data.id`), not a field literally named `flightOrderId`. Orders created via the self-service API without a consolidator are held for a limited time before auto-cancellation ahead of the ticketing deadline.
Retrieve the order status via GET /v1/booking/flight-orders/{id}, passing the stored id as a path segment (confirmed against Amadeus's official SDK source, which builds the request as `/v1/booking/flight-orders/{orderId}` — it is not passed as a query parameter). Inspect the `ticketingAgreement.dateTime` field to identify the ticketing deadline — orders not ticketed by this deadline are automatically processed (queued or cancelled) according to the `ticketingAgreement.option` (e.g. DELAY_TO_CANCEL) chosen at booking time.
If the ticketing deadline is approaching and you cannot proceed to payment, cancel the order explicitly via DELETE /v1/booking/flight-orders/{id} (same path-segment id) to release the hold and avoid a no-show fee.
On a successful (2xx) DELETE response, mark the order as cancelled in your system and release any inventory holds; Amadeus's self-service reference does not publish a specific confirmation-body schema for this call, so do not gate your logic on a particular response payload — treat any non-error response as success.
If the order may already have been auto-cancelled or voided by the airline before your DELETE call, do not simply check for a `state: CANCELLED` field — that field is not part of the documented Flight Order Management response schema. Instead, treat a DELETE error response (order not in a cancellable state) or a GET response indicating ticketing is no longer possible as the signal to reconcile and update your local record without retrying the DELETE.
After cancellation, if a refund is due (partially ticketed itinerary), contact your Amadeus consolidator to process the EMD or ticket refund through BSP — the self-service API does not support direct refund issuance for ticketed documents.
Known gotchas
DECOMMISSIONED 2026-07-17: Amadeus shut down the Self-Service APIs portal — self-service API keys are disabled and the portal is inaccessible as of this date. These endpoints remain available only through an Amadeus Enterprise contract (Enterprise portal unaffected). Self-serve alternatives: Duffel, or an aggregator. Do not attempt self-service key registration; it was paused before shutdown.
As of mid-2026, Amadeus is fully decommissioning the self-service Amadeus for Developers portal: new self-service registrations were paused in spring 2026 and existing self-service API keys (including for Flight Create Orders / Flight Order Management) are being deactivated on July 17, 2026, per Amadeus's own letter to users, independently corroborated by PhocusWire and multiple trade-press reports. After that date this entire route is unusable for self-service accounts — only Amadeus Enterprise API customers retain access. Confirm current status before relying on this integration, and plan migration to an Enterprise agreement or alternative provider.
The Amadeus self-service Flight Orders API operates against a sandbox/test data collection by default; in production, you must work through an Amadeus consolidator for actual ticketing — the self-service API alone does not issue live tickets for most routes.
Cancellation via DELETE only works while the order is in a held/unticketed state; once ticketed by the consolidator, the order cannot be cancelled via the self-service API and requires the consolidator or airline contact.
Persist the order id (`data.id` from the Flight Create Orders response) to your database immediately after order creation. The test/sandbox environment serves data from Amadeus's limited, static test-data collection rather than live production inventory, and self-service docs do not document any guaranteed way to recover an order id later if you fail to store it.
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?