Skip to content

Flight API

Fare calendar, search across 900+ airlines, price an offer, add ancillaries, create an order, issue tickets, quote and process refunds.

  1. Fare calendar
  2. Search
  3. Price and rules
  4. Ancillaries (extra baggage)
  5. Create the order
  6. Issue tickets
  7. Void, cancel and refund

Fare calendar

GET /v1/flights/price-calendar?origin=DXB&destination=LHR&departureFrom=2026-11-01&departureTo=2026-11-30 returns the cheapest cached fare per day for the route, in your currency, with how fresh the cache is. Add returnFrom / returnTo for round-trip totals per date pair, and cabin to restrict the class. It is served from our price cache — instant, and it never counts as a supplier search — so use it to draw a calendar or a “cheapest days” strip before the real search.

Price and rules

POST /v1/flights/offers/{offerId}/price re-validates the fare with the supplier right before you commit and returns the confirmed price, taxes and the passenger fields the airline requires (documents, dates of birth, frequent flyer). GET .../fare-rules returns the penalty text; GET .../ancillaries lists paid bags and options you may add to the order.

Ancillaries (extra baggage)

GET /v1/flights/offers/{offerId}/ancillaries lists the chargeable extras the airline offers on that fare — today extra checked-baggage allowances, each with a key, pieces / weight and a price per passenger. Chargeable means they are priced on top of the fare and billed with the order, unlike the included allowance shown on the offer itself.

To buy them, add ancillaries[] to POST /v1/flights/orders: one entry per extra with the key and the passengerIndex (0-based into passengers). They are priced, booked and ticketed together with the order and appear on the order’s ticket totals. Extras cannot be added to an order that is already ticketed; seat selection will follow the same pattern.

Order with extras
{
  "offerId": "fo_7Gk2Qp9LcKM5aGqrMQOIzJko",
  "passengers": [{ "type": "ADT", "gender": "M", "firstName": "SAM", "lastName": "TRAVELLER", "dateOfBirth": "1990-05-04" }],
  "contact": { "email": "[email protected]", "phone": "+971501234567" },
  "ancillaries": [{ "key": "BAG20-1", "passengerIndex": 0 }]
}

Create the order

POST /v1/flights/orders with the offerId, passengers (names as in the passport, type, date of birth, document for international itineraries), a contact and optional ancillaries[] (see above); add an Idempotency-Key. You receive an orderId, the airline PNR, the ticketing time limit and the status held. In the sandbox the order lands with the supplier’s test system and nothing is charged; in production the deposit is reserved.

Issue tickets

POST /v1/flights/orders/{orderId}/issue (Idempotency-Key required) issues e-tickets and returns ticket numbers per passenger. Read the order any time with GET /v1/flights/orders/{orderId}; the status moves through held → issued → cancelled/refunded.

Void, cancel and refund

GET /v1/flights/orders/{orderId}/refund-quote tells you what a cancellation returns under the fare rules (a same-day void is usually free). POST /v1/flights/orders/{orderId}/cancel commits it; the refund lands on your deposit ledger, visible in the developer portal.