The Flight offer object
One bookable flight offer of one supplier: the route, the price, the fare rules and the price of every traveler.
get_flights returns offers under suppliers[n].results.offers[] (and in the supplier_result and offers_chunk events of the stream); price_flight returns the priced version under results.offers[]. Keep the id of the offer together with the searchId of the supplier entry it is in: price_flight and book_flight need the pair, and an offer can only be priced with the searchId of its own supplier entry. An offer is a snapshot that expires: a supplier withdraws it after a short while (a Duffel offer lives 15 to 60 minutes), and price_flight is the call that confirms it and makes it bookable. Every amount is in your agency currency; the fields of the price block are explained in Flight pricing. See Search flights.
{
"id": "fx_offer_9ab6d940",
"type": "flight_offer",
"supplier": {
"id": "duffel_1",
"name": "Duffel",
"originalId": "off_034q6JKdiQDZ8HIDMFus64"
},
"bookableSeats": null,
"supportHold": false,
"supportVoid": false,
"voidDeadline": null,
"filtersApplied": {},
"warnings": [],
"instantTicketingRequired": false,
"lastTicketingDate": "2026-11-01",
"lastTicketingDateTime": "2026-11-01T15:52:40.830072Z",
"pricing": {
"supplierCurrency": "USD",
"agencyCurrency": "DZD",
"basePrice": 16385,
"taxesAndFees": 5226.2,
"agencyCommission": 21.62,
"finalPrice": 21632.82,
"b2bPrice": 21611.2,
"additionalServices": []
},
"itinerary": [
{
"direction": "outbound",
"duration": "PT2H24M",
"stops": 0,
"segments": [
{
"id": "seg_0000BC0a5iUChSV6Qrz0Co",
"departure": {
"airportCode": "ALG",
"airportName": "Houari Boumediene Airport",
"cityName": "Algiers",
"countryCode": "DZ",
"terminal": "2",
"datetime": "2026-12-15T10:50:00",
"timeZone": "Africa/Algiers"
},
"arrival": {
"airportCode": "CDG",
"airportName": "Paris Charles de Gaulle Airport",
"cityName": "Paris",
"countryCode": "FR",
"terminal": "1",
"datetime": "2026-12-15T13:14:00",
"timeZone": "Europe/Paris"
},
"flight": {
"carrierCode": "ZZ",
"carrierName": "Duffel Airways",
"carrierLogoUrl": "https://assets.duffel.com/img/airlines/for-light-background/full-color-logo/ZZ.svg",
"flightNumber": "7426",
"aircraftCode": null,
"aircraftName": null,
"operatingCarrier": "ZZ",
"operatingCarrierName": "Duffel Airways"
},
"duration": "PT2H24M",
"cabin": "ECONOMY",
"bookingClass": null,
"fareBasis": "Y20LGTN2",
"brandedFare": "BASIC",
"brandedFareLabel": "Basic"
}
],
"conditions": {
"changeBeforeDeparture": {
"allowed": false
},
"refundBeforeDeparture": {
"allowed": false
}
}
}
],
"travelerPricing": [
{
"travelerId": "pas_0000BC0a5iH5UE0bmBqWkl",
"travelerType": "ADULT",
"fareOption": "STANDARD",
"price": {
"supplierCurrency": "USD",
"agencyCurrency": "DZD",
"base": 16385,
"total": 21632.82,
"b2bPrice": 21611.2
},
"fareDetailsBySegment": [
{
"segmentId": "seg_0000BC0a5iUChSV6Qrz0Co",
"cabin": "ECONOMY",
"fareBasis": "Y20LGTN2",
"brandedFare": "BASIC",
"brandedFareLabel": "Basic",
"bookingClass": null,
"includedCheckedBags": {
"quantity": 1
},
"includedCabinBags": {
"quantity": 1
},
"amenities": [
{
"description": "WIFI",
"isChargeable": true,
"amenityType": "WIFI",
"amenityProvider": {
"name": "BrandedFare"
}
},
{
"description": "POWER SUPPLY",
"isChargeable": false,
"amenityType": "ENTERTAINMENT",
"amenityProvider": {
"name": "BrandedFare"
}
}
]
}
]
}
],
"conditions": {
"refundBeforeDeparture": {
"allowed": false
},
"changeBeforeDeparture": {
"allowed": false
}
},
"fareRules": {
"exchange": {
"allowed": false
},
"refund": {
"allowed": false
},
"revalidation": {
"allowed": false
},
"supplierCurrency": "USD",
"agencyCurrency": "DZD"
},
"validatingAirline": [
{
"code": "ZZ",
"name": "Duffel Airways"
}
]
}Attributes
idstringdeprecatedLegacy name, still accepted. Use offer_id instead.
The id of the offer: fx_offer_ and 8 hex characters. Send it as offer_id to price_flight and book_flight.
offer_idstringThe id of the offer: fx_offer_ and 8 hex characters. Send it as offer_id to price_flight and book_flight. The snake_case twin of id, with the same value: use this name.
typestringAlways flight_offer.
Always flight_offer.
supplierobjectThe supplier the offer comes from.
ShowHide 6 attributes
idstringdeprecatedLegacy name, still accepted. Use supplier_id instead.
Id of the supplier: amadeus_aqc_dz_1 or duffel_1 in the sandbox.
supplier_idstringId of the supplier: amadeus_aqc_dz_1 or duffel_1 in the sandbox. The snake_case twin of id, with the same value: use this name.
namestringdeprecatedLegacy name, still accepted. Use supplier_name instead.
Name of the supplier.
supplier_namestringName of the supplier. The snake_case twin of name, with the same value: use this name.
originalIdstringdeprecatedLegacy name, still accepted. Use supplier_offer_id instead.
The supplier's own id of the offer. For support only.
supplier_offer_idstringThe supplier's own id of the offer. For support only. The snake_case twin of originalId, with the same value: use this name.
sourcestringPriced offer only: where the offer comes from, duffel or GDS.
bookableSeatsintegernullableSeats left at this fare, when the supplier says (Amadeus: up to 9).
supportHoldbooleandeprecatedLegacy name, still accepted. Use support_hold instead.
true when the offer can be held (booked without payment) with booking_type: "hold". Read it again on the priced offer.
support_holdbooleantrue when the offer can be held (booked without payment) with booking_type: "hold". Read it again on the priced offer. The snake_case twin of supportHold, with the same value: use this name.
supportVoidbooleandeprecatedLegacy name, still accepted. Use support_void instead.
true when the ticket can be voided during the same day.
support_voidbooleantrue when the ticket can be voided during the same day. The snake_case twin of supportVoid, with the same value: use this name.
voidDeadlinestringnullabledeprecatedLegacy name, still accepted. Use void_deadline instead.
ISO 8601 UTC time when the same-day void window ends, null when the supplier cannot void.
void_deadlinestringnullableISO 8601 UTC time when the same-day void window ends, null when the supplier cannot void. The snake_case twin of voidDeadline, with the same value: use this name.
filtersAppliedobjectThe filters you asked for, echoed. It says what you asked for, not what the supplier honoured.
warningsarray of objectNotes of the supplier about this offer. Empty in every sample.
instantTicketingRequiredbooleantrue: the fare cannot be held; book it with booking_type: "issue".
lastTicketingDatestringDuffel only: the day the offer stops being sellable.
lastTicketingDateTimestringDuffel only: the moment the offer stops being sellable. Typically 15 to 60 minutes after the search.
pricingobjectThe agency-facing price of an offer, a booking or a quote. Every amount is in agencyCurrency; the rate, when the currencies differ, is exchangeRate at the top level of the response.
ShowHide 17 attributes
supplierCurrencystringISO 4217 currency in which the supplier prices the fare.
agencyCurrencystringISO 4217 currency of your agency. Every amount of the block is in it.
basePricenumberdeprecatedLegacy name, still accepted. Use base_price instead.
The airline's base fare, before taxes, in the agency currency.
base_pricenumberThe airline's base fare, before taxes, in the agency currency. The snake_case twin of basePrice, with the same value: use this name.
taxesAndFeesnumberdeprecatedLegacy name, still accepted. Use taxes_and_fees instead.
Taxes plus the platform's fees, folded together. Excludes your agency commission.
taxes_and_feesnumberTaxes plus the platform's fees, folded together. Excludes your agency commission. The snake_case twin of taxesAndFees, with the same value: use this name.
agencyCommissionnumberdeprecatedLegacy name, still accepted. Use agency_commission instead.
The commission of your agency on this sale.
agency_commissionnumberThe commission of your agency on this sale. The snake_case twin of agencyCommission, with the same value: use this name.
finalPricenumberdeprecatedLegacy name, still accepted. Use final_price instead.
What the traveler pays: basePrice + taxesAndFees + agencyCommission.
final_pricenumberWhat the traveler pays: basePrice + taxesAndFees + agencyCommission. The snake_case twin of finalPrice, with the same value: use this name.
b2bPricenumberdeprecatedLegacy name, still accepted. Use b2b_price instead.
The amount debited from your agency balance: finalPrice - agencyCommission.
b2b_pricenumberThe amount debited from your agency balance: finalPrice - agencyCommission. The snake_case twin of b2bPrice, with the same value: use this name.
totalAmountnumberOrder quote only: an alias of b2bPrice.
taxAmountnumberOrder quote of a Duffel order only: the airline's taxes in your agency currency.
originalTaxAmountnumberOrder quote of a Duffel order only: the same taxes in the supplier currency.
additionalServicesarray of objectPaid extras. A list in the offers of a search (empty for most offers).
acdobjectWhether the fare is an ACD fare. Present on the offers of Amadeus Algeria, absent on Duffel offers. An ACD fare carries more keys with the amounts of the adjustment: they are informational, can change without notice and are not part of the contract.
ShowHide 4 attributes
appliedbooleantrue for an ACD fare: the booking needs one passport copy for every traveler, sent with upload_acd_documents. false for an ordinary fare.
scenariostringOnly on an ACD fare: the rule that adjusted the price. Informational.
One of A, B.
exemptbooleantrue when the search named an ACD-exempt company of your agency: the fare is priced without ACD.
reasonstringOnly on some ACD fares: why the rule applied. Informational; the wording can change.
itineraryarray of objectOne entry for each direction.
ShowHide 5 attributes
directionstringoutbound, return, and segment_3, segment_4 ... for the third and later legs of a multi-city search.
durationstringISO 8601 duration of this direction.
stopsintegerNumber of stops. 0 is non-stop.
segmentsarray of objectThe flights of this direction, in order.
ShowHide 10 attributes
idstringId of the segment. fareDetailsBySegment[].segmentId points to it.
departureobjectWhere and when a segment leaves or arrives.
ShowHide 7 attributes
airportCodestringIATA code of the airport.
airportNamestringName of the airport.
cityNamestringName of the city.
countryCodestringISO 3166-1 alpha-2 country code.
terminalstringnullableTerminal, when the supplier says.
datetimestringLocal date and time at the airport, YYYY-MM-DDTHH:MM:SS, without a time zone.
timeZonestringIANA time zone of the airport.
arrivalobjectWhere and when a segment leaves or arrives.
ShowHide 7 attributes
airportCodestringIATA code of the airport.
airportNamestringName of the airport.
cityNamestringName of the city.
countryCodestringISO 3166-1 alpha-2 country code.
terminalstringnullableTerminal, when the supplier says.
datetimestringLocal date and time at the airport, YYYY-MM-DDTHH:MM:SS, without a time zone.
timeZonestringIANA time zone of the airport.
flightobjectThe airline and the number of a flight.
ShowHide 8 attributes
carrierCodestringIATA code of the marketing airline.
carrierNamestringName of the marketing airline.
carrierLogoUrlstringAddress of the logo of the marketing airline.
flightNumberstringThe flight number without the carrier code.
aircraftCodestringnullableIATA code of the aircraft type.
aircraftNamestringnullableName of the aircraft type.
operatingCarrierstringIATA code of the airline that operates the flight. A different value than carrierCode means a codeshare.
operatingCarrierNamestringName of the operating airline.
durationstringISO 8601 duration of the flight.
cabinstringThe cabin of this segment. It can differ from the cabin you asked for.
One of ECONOMY, PREMIUM_ECONOMY, BUSINESS, FIRST.
bookingClassstringnullableBooking class letter (Amadeus: Q, O; Duffel: null).
fareBasisstringnullableFare basis code.
brandedFarestringnullableFare family code.
brandedFareLabelstringnullableDisplay label of the fare family.
conditionsobjectWhat the fare allows before departure. Indicative only. A Duffel order can carry null for both when the airline does not say.
ShowHide 2 attributes
refundBeforeDepartureobjectnullableWhat the fare says about a refund before departure.
ShowHide 1 attribute
allowedbooleanWhether a refund is allowed before departure. Indicative, not a promise: the fare rules of the airline decide.
changeBeforeDepartureobjectnullableWhat the fare says about a change before departure.
ShowHide 1 attribute
allowedbooleanWhether a change is allowed before departure. Indicative, not a promise: the fare rules of the airline decide.
travelerPricingarray of objectOne entry for each priced traveler.
ShowHide 7 attributes
travelerIdstringdeprecatedLegacy name, still accepted. Use passenger_id instead.
"1", "2" ... for Amadeus, pas_... for Duffel.
passenger_idstring"1", "2" ... for Amadeus, pas_... for Duffel. The snake_case twin of travelerId, with the same value: use this name.
travelerTypestringdeprecatedLegacy name, still accepted. Use passenger_type instead.
ADULT, SENIOR, YOUNG, CHILD, SEATED_INFANT or HELD_INFANT (a lap infant).
passenger_typestringADULT, SENIOR, YOUNG, CHILD, SEATED_INFANT or HELD_INFANT (a lap infant). The snake_case twin of travelerType, with the same value: use this name.
fareOptionstringThe fare option, for example STANDARD.
priceobjectThe price of one traveler.
ShowHide 5 attributes
supplierCurrencystringISO 4217 currency in which the supplier prices the fare.
agencyCurrencystringISO 4217 currency of your agency.
basenumberThe traveler's base fare in the agency currency.
totalnumberThe traveler's final price: what this traveler pays. The totals of all travelers add up to pricing.finalPrice.
b2bPricenumberThe traveler's share of the amount debited from your balance.
fareDetailsBySegmentarray of objectThe fare of this traveler on every segment.
ShowHide 9 attributes
segmentIdstringThe id of the segment this fare detail is about.
cabinstringCabin of the fare on this segment.
One of ECONOMY, PREMIUM_ECONOMY, BUSINESS, FIRST.
fareBasisstringnullableFare basis code.
brandedFarestringnullableFare family code.
brandedFareLabelstringnullableDisplay label of the fare family.
bookingClassstringnullableBooking class letter.
includedCheckedBagsobjectThe checked baggage included in the fare.
ShowHide 1 attribute
quantityintegerNumber of checked bags included in the fare.
includedCabinBagsobjectThe cabin baggage included in the fare.
ShowHide 1 attribute
quantityintegerNumber of cabin bags included in the fare.
amenitiesarray of objectWhat else the fare includes or sells (seat, bag, meal, Wi-Fi ...).
conditionsobjectWhat the fare allows before departure. Indicative only. A Duffel order can carry null for both when the airline does not say.
ShowHide 2 attributes
refundBeforeDepartureobjectnullableWhat the fare says about a refund before departure.
ShowHide 1 attribute
allowedbooleanWhether a refund is allowed before departure. Indicative, not a promise: the fare rules of the airline decide.
changeBeforeDepartureobjectnullableWhat the fare says about a change before departure.
ShowHide 1 attribute
allowedbooleanWhether a change is allowed before departure. Indicative, not a promise: the fare rules of the airline decide.
fareRulesobjectThe fare rules of the offer: what exchange, refund and revalidation allow.
ShowHide 5 attributes
exchangeobjectWhat the fare says about an exchange before departure.
ShowHide 1 attribute
allowedbooleanWhether an exchange is allowed before departure. Indicative, not a promise: the fare rules of the airline decide.
refundobjectWhat the fare says about a refund before departure.
ShowHide 1 attribute
allowedbooleanWhether a refund is allowed before departure. Indicative, not a promise: the fare rules of the airline decide.
revalidationobjectWhat the fare says about a revalidation before departure.
ShowHide 1 attribute
allowedbooleanWhether a revalidation is allowed before departure. Indicative, not a promise: the fare rules of the airline decide.
supplierCurrencystringCurrency of the penalty amounts, when there are some.
agencyCurrencystringCurrency of your agency.
validatingAirlinearray of objectThe airline whose rules and ticket stock govern the fare.
ShowHide 2 attributes
codestringIATA code of the airline.
namestringName of the airline.
additionalServicesobjectPaid extras. A list in the offers of a search (Amadeus only); an object with a baggage list in a priced offer.
requiresACDbooleanAmadeus Algeria only, present only when true: the fare is an ACD fare and the booking needs passports (see upload_acd_documents).