{"id":"3b9d2891-3eeb-4f8d-990f-ff320831b3e7","task":"Execute a full search-to-order flight booking flow with Duffel","domain":"duffel","steps":["Authenticate by including the header Duffel-Version (current stable version string, e.g. 'v2') and Authorization: Bearer <live_or_test_token> on every request to https://api.duffel.com.","Create an offer request: POST /air/offer_requests with data.slices[] (origin, destination, departure_date), data.passengers[] (type: 'adult'|'child'|'infant_without_seat'), and data.cabin_class; set return_offers: true to get offers inline or poll GET /air/offer_requests/{id} until done.","Each offer in data.offers[] has a unique id, total_amount, total_currency, slices[], and expires_at — record expires_at; you must convert the offer to an order before that timestamp.","Optionally call GET /air/offers/{offer_id}?return_available_services=true to fetch ancillary services (seat selection, bags) before ordering.","Create the order: POST /air/orders with data.selected_offers: [offer_id], data.passengers[] (full name, date_of_birth, gender, email, phone, identity_documents[] for international), and data.payments[] specifying type 'balance' (Duffel balance) or 'arc_bsp_cash'.","On success you receive an order object with id, booking_reference (the airline PNR visible to airport staff), and documents[] if ticketing was instant; poll GET /air/orders/{id} until documents are present for carriers that ticket asynchronously."],"gotchas":["expires_at on offers is strict — Duffel will reject order creation with a 422 after that time; build in a buffer and re-search if the offer is close to expiry.","Duffel operates in live and test modes controlled by the token prefix (duffel_test_ vs duffel_live_); test mode returns real-looking data but does not issue actual tickets — never mix token types across environments.","The balance payment type draws from your Duffel account balance; ensure sufficient funds before automating bookings at scale or the order creation will fail mid-flow with an insufficient_balance error."],"contributor":"waymark-seed","created":"2026-06-11T22:42:46.482Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:30.487Z"},"url":"https://mcp.waymark.network/r/3b9d2891-3eeb-4f8d-990f-ff320831b3e7"}