GET/v1/flights/offers/:gdsprovider/:offerId

Get flight offer detail

Retrieves the latest details for a selected flight offer before booking, including price, conditions, segments and passenger requirements when available.

Share
GET/v1/flights/offers/:gdsprovider/:offerId

API console

Try it

Send a real request to the sandbox API and inspect the response.

Credentials

Log in to pick from your saved API keys instead of pasting them.

Path parameters

2 fields

GDS provider

Global Distribution System used to source flight content. Select 0 for the default provider.

Offer ID

Identifier of the offer returned by a previous flight search request.

cURL request

cURL
bash
curl -X GET 'https://api.sandbox.travelandz.com/v1/flights/offers/0/:offerId' \
  -H 'Authorization: Bearer YOUR_SECRET_KEY' \
  -H 'X-Travelandz-Id: YOUR_PUBLIC_KEY:YOUR_PROFILE_CODE'

Add your credentials to send a request.

Response

Click "Try it!" to send a request and see the response here.

Retrieves the latest details for a selected flight offer before booking, including price, conditions, segments and passenger requirements when available.

Endpoint

MethodPathAuth
GET/v1/flights/offers/:gdsprovider/:offerIdRequired API key
Required headers:
HeaderDescription
AuthorizationBearer <secret_key>. The secret is shown only once when the credential is created.
X-Travelandz-Id<public_key>:<profile_code>. The profile_code is the dp_-prefixed Developer Profile code shown in your dashboard. This binds the request to a profile and credential.
Content-TypeUse application/json for requests with a body.

Request Params Schema

gdsprovider
numberYes
offerId
stringYes

Request Body

No request body is required.

Success Response

Returns offerData with the selected offer, passenger ids, document requirements, hold options and flight segments when supported.

Response Body Schema

offerData
objectYes
offerDataofferId
stringYes
offerDatagdsprovider
numberYes
offerDataexpiresAt
string
Format: ISO 8601
Yes
offerDatatotalAmount
numberYes
offerDataholdOptions
objectYes
offerDataholdOptionsavailable
booleanYes
offerDataholdOptionspaymentRequiredBy
string
Format: ISO 8601
Nullable
offerDataholdOptionspriceGuarantedUntil
string
Format: ISO 8601
Nullable
offerDatasupportedPassengerIdDocuments
arrayYes
offerDatasupportedPassengerIdDocuments[]
enum[]Yes
offerDatapassengerIdentityDocumentsRequired
booleanYes
offerDatasupportedLoyaltyPrograms
arrayYes
offerDatasupportedLoyaltyPrograms[]
string[]Yes
offerDataairline
objectYes
offerDataairlinename
stringYes
offerDataairlineiataCode
stringYes
offerDataairlinelogoURL
stringNullable
offerDataairlineconditionsOfCarriage
stringNo
offerDatapassengers
arrayYes
offerDatapassengers[]id
stringYes
Public passenger id to reuse during booking. Mystifly public offers generate internal ids such as mystifly_pax_1.
offerDatapassengers[]type
enum
adultchildinfant_without_seat
Yes
offerDataconditions
objectYes
offerDataconditionsrefundBeforeDeparture
objectYes
offerDataconditionsrefundBeforeDeparturecurrency
stringYes
offerDataconditionsrefundBeforeDeparturepenaltyAmount
stringYes
offerDataconditionsrefundBeforeDepartureallowed
booleanYes
offerDataconditionschangeBeforeDeparture
objectYes
offerDataconditionschangeBeforeDeparturecurrency
stringYes
offerDataconditionschangeBeforeDeparturepenaltyAmount
stringYes
offerDataconditionschangeBeforeDepartureallowed
booleanYes
offerDataslices
arrayYes
offerDataslices[]fareName
stringYes
offerDataslices[]departure
objectYes
offerDataslices[]departureiataCode
stringYes
offerDataslices[]departurecityName
stringYes
offerDataslices[]departureairportName
stringNo
offerDataslices[]departuredepartingAt
string
Format: ISO 8601
Yes
offerDataslices[]departuretimeZone
stringNo
offerDataslices[]arrival
objectYes
offerDataslices[]arrivaliataCode
stringYes
offerDataslices[]arrivalcityName
stringYes
offerDataslices[]arrivalairportName
stringNo
offerDataslices[]arrivalarrivingAt
string
Format: ISO 8601
Yes
offerDataslices[]arrivaltimeZone
stringNo
offerDataslices[]durationMinutes
numberYes
offerDataslices[]conditions
objectYes
offerDataslices[]conditionspriorityCheckIn
booleanYes
offerDataslices[]conditionspriorityBoarding
booleanYes
offerDataslices[]conditionsadvanceSeatSelection
booleanYes
offerDataslices[]segments
arrayYes
offerDataslices[]segments[]fareName
stringYes
offerDataslices[]segments[]departure
objectYes
offerDataslices[]segments[]departureiataCode
stringYes
offerDataslices[]segments[]departurecityName
stringYes
offerDataslices[]segments[]departureairportName
stringNo
offerDataslices[]segments[]departuredepartingAt
string
Format: ISO 8601
Yes
offerDataslices[]segments[]departuretimeZone
stringNo
offerDataslices[]segments[]departureterminal
stringNo
offerDataslices[]segments[]arrival
objectYes
offerDataslices[]segments[]arrivaliataCode
stringYes
offerDataslices[]segments[]arrivalcityName
stringYes
offerDataslices[]segments[]arrivalairportName
stringNo
offerDataslices[]segments[]arrivalarrivingAt
string
Format: ISO 8601
Yes
offerDataslices[]segments[]arrivaltimeZone
stringNo
offerDataslices[]segments[]arrivalterminal
stringNo
offerDataslices[]segments[]airline
objectYes
offerDataslices[]segments[]airlineoperatingCarrier
objectYes
offerDataslices[]segments[]airlineoperatingCarriername
stringYes
offerDataslices[]segments[]airlineoperatingCarrieriataCode
stringYes
offerDataslices[]segments[]airlineoperatingCarrierlogoURL
stringNullable
offerDataslices[]segments[]airlineoperatingCarrierconditionsOfCarriage
stringNo
offerDataslices[]segments[]airlinemarketingCarrier
objectYes
offerDataslices[]segments[]airlinemarketingCarriername
stringYes
offerDataslices[]segments[]airlinemarketingCarrieriataCode
stringYes
offerDataslices[]segments[]airlinemarketingCarrierlogoURL
stringNullable
offerDataslices[]segments[]airlinemarketingCarrierconditionsOfCarriage
stringNo
offerDataslices[]segments[]flightNumber
stringYes
offerDataslices[]segments[]durationMinutes
numberYes
offerDataslices[]segments[]passengers
arrayYes
offerDataslices[]segments[]passengers[]amenities
objectYes
offerDataslices[]segments[]passengers[]amenitieswifi
objectYes
offerDataslices[]segments[]passengers[]amenitieswificost
enum
freefree or paidpaid
Nullable
offerDataslices[]segments[]passengers[]amenitieswifiavailable
booleanYes
offerDataslices[]segments[]passengers[]amenitiesseat
objectYes
offerDataslices[]segments[]passengers[]amenitiesseatpitch
enum
"number"n/a
Yes
offerDataslices[]segments[]passengers[]amenitiesseatlegroom
enum
lessmorestandardn/a
Yes
offerDataslices[]segments[]passengers[]amenitiesseattype
enum
standardskycouchreclinerangle_flatfull_flatfull_flat_podprivate_suite
Nullable
offerDataslices[]segments[]passengers[]amenitiespower
booleanYes
offerDataslices[]segments[]passengers[]baggages
arrayYes
offerDataslices[]segments[]passengers[]baggages[]type
enum
checkedcarry_on
Yes
offerDataslices[]segments[]passengers[]baggages[]quantity
numberYes
offerDataslices[]segments[]passengers[]baggages[]maxKg
stringNo
offerDataCO2EmissionsKg
numberNullable
offerDataholdId
stringNullable
offerDataoriginalCurrency
enum
EURUSDCNY
Yes
offerDatacurrency
enum
EURUSDCNY
Yes
liveMode
booleanYes
True when the request is served by the live Travelandz environment. This value comes from Travelandz, not the provider payload.

Operational Notes

  • Fresh offer detail availability depends on the selected source.
  • If direct offer detail is unavailable, keep the offer returned by public search and complete booking before it expires.
  • Reuse offerData.passengers[].id when creating the order. Do not send internal user identifiers.

Example

bash
bash
curl https://api.sandbox.travelandz.com/v1/flights/offers/0/offer_123 \
  -H "Authorization: Bearer $TRAVELANDZ_SECRET_KEY" \
  -H "X-Travelandz-Id: $TRAVELANDZ_PUBLIC_KEY:$TRAVELANDZ_PROFILE_CODE"

Responses

CodeDescription
200Flight offer detail retrieved successfully.
400Bad request – invalid payload.
401Unauthorized – invalid or missing credentials.
403Forbidden – invalid credentials.
500Internal server error

200 Response Body

Media type: application/json

json
json
{
  "offerData": {
    "offerId": "off_0000B7SbjlHTw4iTcv9u1c",
    "gdsprovider": 0,
    "expiresAt": "2026-06-18T15:02:31.989Z",
    "totalAmount": 235.38,
    "holdOptions": {
      "available": true,
      "paymentRequiredBy": "2026-06-21T14:32:31.000Z",
      "priceGuarantedUntil": "2026-06-20T14:32:31.000Z"
    },
    "supportedPassengerIdDocuments": [
      "passport",
      "known_traveler_number",
      "passenger_redress_number"
    ],
    "passengerIdentityDocumentsRequired": false,
    "supportedLoyaltyPrograms": [
      "ZZ"
    ],
    "airline": {
      "name": "Duffel Airways",
      "iataCode": "ZZ",
      "logoURL": "http://localhost:5000/v1/assets/airlines/0/for-light-background/full-color-logo/ZZ.svg",
      "conditionsOfCarriage": "https://duffelairways.com/dummy-url/conditions-of-carriage"
    },
    "passengers": [
      {
        "id": "pas_0000B7Sbjl2apQo4skC0pb",
        "type": "adult"
      }
    ],
    "conditions": {
      "refundBeforeDeparture": {
        "currency": "EUR",
        "penaltyAmount": "40.00",
        "allowed": true
      },
      "changeBeforeDeparture": {
        "currency": "EUR",
        "penaltyAmount": "40.00",
        "allowed": true
      }
    },
    "slices": [
      {
        "fareName": "Basic",
        "departure": {
          "iataCode": "MAD",
          "cityName": "Madrid",
          "airportName": "MAD",
          "departingAt": "2026-08-12T08:30:00",
          "timeZone": "Europe/Madrid"
        },
        "arrival": {
          "iataCode": "JFK",
          "cityName": "New York",
          "airportName": "JFK",
          "arrivingAt": "2026-08-12T10:45:00",
          "timeZone": "America/New_York"
        },
        "durationMinutes": 495,
        "conditions": {
          "priorityCheckIn": false,
          "priorityBoarding": false,
          "advanceSeatSelection": false
        },
        "segments": [
          {
            "fareName": "Basic",
            "departure": {
              "iataCode": "MAD",
              "cityName": "Madrid",
              "airportName": "MAD",
              "departingAt": "2026-08-12T08:30:00",
              "timeZone": "Europe/Madrid",
              "terminal": "2"
            },
            "arrival": {
              "iataCode": "JFK",
              "cityName": "New York",
              "airportName": "JFK",
              "arrivingAt": "2026-08-12T10:45:00",
              "timeZone": "America/New_York",
              "terminal": "1"
            },
            "airline": {
              "operatingCarrier": {
                "name": "Duffel Airways",
                "iataCode": "ZZ",
                "logoURL": "http://localhost:5000/v1/assets/airlines/0/for-light-background/full-color-logo/ZZ.svg",
                "conditionsOfCarriage": "https://duffelairways.com/dummy-url/conditions-of-carriage"
              },
              "marketingCarrier": {
                "name": "Duffel Airways",
                "iataCode": "ZZ",
                "logoURL": "http://localhost:5000/v1/assets/airlines/0/for-light-background/full-color-logo/ZZ.svg",
                "conditionsOfCarriage": "https://duffelairways.com/dummy-url/conditions-of-carriage"
              }
            },
            "flightNumber": "7252",
            "durationMinutes": 495,
            "passengers": [
              {
                "amenities": {
                  "wifi": {
                    "cost": "paid",
                    "available": true
                  },
                  "seat": {
                    "pitch": "30",
                    "legroom": "n/a",
                    "type": null
                  },
                  "power": true
                },
                "baggages": [
                  {
                    "type": "checked",
                    "quantity": 1,
                    "maxKg": "23"
                  },
                  {
                    "type": "carry_on",
                    "quantity": 1
                  }
                ]
              }
            ]
          }
        ]
      }
    ],
    "CO2EmissionsKg": 249,
    "originalCurrency": "EUR",
    "currency": "EUR"
  },
  "liveMode": false
}