Never cache raw flight offer objects from search results for more than a few minutes — most GDS and NDC systems consider offers valid for 15–30 minutes at most, and many expire faster for last-seat availability.
Always re-price (call the pricing endpoint) immediately before presenting a final price to the user or initiating an order; treat the search price as a display estimate only.
Store the full offer object (not just price and itinerary) verbatim in your session or short-lived cache — booking APIs require the original offer structure to be passed back unchanged.
If a user revisits a search result after more than a few minutes, trigger a background re-search and silently update the displayed price before they click 'book'; surface a 'price updated' notice if it changed.
For multi-passenger bookings, the price per offer is quoted for the full passenger set — do not multiply a single-passenger fare by headcount unless the API explicitly quotes per-person.
Implement exponential backoff and a re-search fallback for OFFER_EXPIRED or equivalent errors during order creation; present the updated price to the user and require re-confirmation before retrying.
Known gotchas
Price changes between search and book are normal and expected, not a bug — your UX must handle them gracefully with a clear 'price has changed, do you want to continue?' prompt.
Search APIs may return cached results from their own layer — a repeated identical search within seconds may return identical (now slightly older) offers; do not assume a fresh search always returns current pricing.
Holding an offer (where supported) via a PNR hold does not guarantee the price; fares are filed separately from seat inventory, and the fare may reprice upward even on a held PNR.
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