---
title: "Get flight booking options"
method: POST
path: "/v1/flights/booking-options"
tags: ["Market intelligence"]
---

# Get flight booking options

`POST /v1/flights/booking-options`

Retrieves booking options (providers, fares, booking links, and available cabin classes) for a single itinerary selected from a flight search. Pass the `bookingToken` returned on an itinerary from `POST /v1/flights/search` along with the same trip configuration.

<span>⚡ <strong>Rate limit:</strong> 120 requests per 1 minute</span>

<span>💰 <strong>Cost:</strong> 2 credits per lookup&nbsp;<span title="Pricing shown is default pricing. Actual pricing may vary.">ⓘ</span></span>

## Request body

- object
  - `apiKey` string, required — Your Fiber API key
  - `bookingToken` string, required — Booking token from the `bookingToken` field of an itinerary returned by the flight search endpoint (`POST /v1/flights/search`).
  - `trip` union, required — Trip configuration. The shape is determined by flightType — see each variant for its required fields.
    - object
      - `flightType` 'one_way', required
      - `departureAirports` string, required — Airport(s) to search. Accepts a 3-letter IATA airport code (e.g. 'JFK'), a comma-separated IATA list to search multiple airports (e.g. 'JFK,LGA,EWR'), an X- metro alias that covers every airport in a metro area (e.g. 'X-NYC' — call GET /v1/enums/flight-regions for the full list), or a Freebase ID for a city or metro (e.g. '/m/02_286'). Case-insensitive except Freebase IDs.
      - `arrivalAirports` string, required — Airport(s) to search. Accepts a 3-letter IATA airport code (e.g. 'JFK'), a comma-separated IATA list to search multiple airports (e.g. 'JFK,LGA,EWR'), an X- metro alias that covers every airport in a metro area (e.g. 'X-NYC' — call GET /v1/enums/flight-regions for the full list), or a Freebase ID for a city or metro (e.g. '/m/02_286'). Case-insensitive except Freebase IDs.
      - `outboundDate` string, required — ISO date in YYYY-MM-DD format (e.g. '2026-06-10').
    - object
      - `flightType` 'round_trip', required
      - `departureAirports` string, required — Airport(s) to search. Accepts a 3-letter IATA airport code (e.g. 'JFK'), a comma-separated IATA list to search multiple airports (e.g. 'JFK,LGA,EWR'), an X- metro alias that covers every airport in a metro area (e.g. 'X-NYC' — call GET /v1/enums/flight-regions for the full list), or a Freebase ID for a city or metro (e.g. '/m/02_286'). Case-insensitive except Freebase IDs.
      - `arrivalAirports` string, required — Airport(s) to search. Accepts a 3-letter IATA airport code (e.g. 'JFK'), a comma-separated IATA list to search multiple airports (e.g. 'JFK,LGA,EWR'), an X- metro alias that covers every airport in a metro area (e.g. 'X-NYC' — call GET /v1/enums/flight-regions for the full list), or a Freebase ID for a city or metro (e.g. '/m/02_286'). Case-insensitive except Freebase IDs.
      - `outboundDate` string, required — ISO date in YYYY-MM-DD format (e.g. '2026-06-10').
      - `returnDate` string, required — ISO date in YYYY-MM-DD format (e.g. '2026-06-10').
    - object
      - `flightType` 'multi_city', required
      - `segments` object[], required — Provide between 2 and 5 segments.
        - `departureAirports` string, required — Airport(s) to search. Accepts a 3-letter IATA airport code (e.g. 'JFK'), a comma-separated IATA list to search multiple airports (e.g. 'JFK,LGA,EWR'), an X- metro alias that covers every airport in a metro area (e.g. 'X-NYC' — call GET /v1/enums/flight-regions for the full list), or a Freebase ID for a city or metro (e.g. '/m/02_286'). Case-insensitive except Freebase IDs.
        - `arrivalAirports` string, required — Airport(s) to search. Accepts a 3-letter IATA airport code (e.g. 'JFK'), a comma-separated IATA list to search multiple airports (e.g. 'JFK,LGA,EWR'), an X- metro alias that covers every airport in a metro area (e.g. 'X-NYC' — call GET /v1/enums/flight-regions for the full list), or a Freebase ID for a city or metro (e.g. '/m/02_286'). Case-insensitive except Freebase IDs.
        - `outboundDate` string, required — ISO date in YYYY-MM-DD format (e.g. '2026-06-10').
  - `currencyCode` string — ISO 4217 currency code for prices in the response (e.g. 'EUR', 'GBP', 'CAD'). Case-insensitive. Defaults to USD. Match the value used in the original search so prices stay comparable.
  - `searchMarketCountryCode` string — ISO 3166-1 alpha-3 country code that sets the search market. Match the value used in the original search for consistent pricing and availability. Case-insensitive.
  - `languageCode` string — Language for booking option labels (e.g. fare names). Pass a BCP-47 language tag such as 'en', 'en-US', 'pt-BR', 'zh-CN', 'ja', 'ko', 'fr', 'de', 'es'.

## Response `200`

Default Response

- object
  - `output` object, required
    - `bookingOptions` object[], required — Purchasing options for the selected itinerary, each representing a specific provider × fare type combination (e.g. United Economy). Ordered best first. Empty when the itinerary is no longer bookable.
      - `providerName` string, required — Name of the airline or booking site selling this ticket (e.g. 'United', 'American').
      - `airlineLogoUrls` string[], required — Logos for the airline(s) or booking site(s) on this option. Multiple entries indicate a split booking across providers.
      - `flightNumbers` string[], required — Flight numbers covered by this option (e.g. 'UA 2175').
      - `price` integer, nullable — Total price in whole currency units.
      - `fareType` string, nullable — Fare class label (e.g. 'Basic Economy', 'Business').
      - `isSplitBooking` boolean, nullable — True when this option consists of separately-issued tickets across different providers (e.g. booking two separate one-way tickets on different airlines rather than a single connection). Split bookings carry higher disruption risk.
      - `bookingLink` object, nullable — Link to book this option. When present, both `url` and optionally `postData` are available.
        - `url` string, required — URL to begin booking this option.
        - `postData` string, nullable — Form-encoded body to POST to `url` to start the booking flow, when a POST request is required.
      - `bookingPhone` string, nullable — Phone number to book through this provider, in E.164 format (e.g. '+18005551212').
      - `estimatedPhoneServiceFee` integer, nullable — Estimated phone booking service fee in whole currency units, when phone booking is offered.
      - `fareConditions` string[], required — Amenities and fare rules included or excluded (e.g. seat selection policy, change rules).
      - `baggageDetails` string[], required — Baggage allowances and fees as display strings (e.g. '1st checked bag: 75', '1 free carry-on').
    - `currencyCode` string, nullable — ISO 4217 currency code for prices in this response (e.g. 'USD', 'EUR', 'GBP').
  - `chargeInfo` union, required
    - object — Credits were charged immediately for this operation
      - `method` 'charged-now', required
      - `creditsCharged` number, required
      - `lowCreditAlert` object, nullable — Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required — URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required — Human-readable credits warning.
        - `availableCredits` number, required — Number of credits remaining in the current billing period.
    - object — Credits will be charged after the operation completes
      - `method` 'charging-later', required
      - `message` string, required
      - `lowCreditAlert` object, nullable — Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required — URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required — Human-readable credits warning.
        - `availableCredits` number, required — Number of credits remaining in the current billing period.
    - object — Credits that were charged for an asynchronous operation
      - `method` 'charged-for-async-process', required
      - `creditsCharged` number, required
      - `message` string, required
      - `lowCreditAlert` object, nullable — Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required — URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required — Human-readable credits warning.
        - `availableCredits` number, required — Number of credits remaining in the current billing period.
    - object — No credits were charged for this operation
      - `method` 'free', required
      - `message` string, required
      - `lowCreditAlert` object, nullable — Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required — URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required — Human-readable credits warning.
        - `availableCredits` number, required — Number of credits remaining in the current billing period.
    - object — Credits were refunded for this operation
      - `method` 'credits-refunded', required
      - `creditsRefunded` number, required
      - `message` string, required
      - `lowCreditAlert` object, nullable — Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required — URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required — Human-readable credits warning.
        - `availableCredits` number, required — Number of credits remaining in the current billing period.
  - `warnings` object[], nullable — Warnings about extraneous fields in request
    - `field` string, required — Full path to extraneous field (e.g., 'searchParams.ExtraField')
    - `message` string, required — Warning message
  - `advice` string[], nullable — Tips, recommendations, and suggestions for using this API effectively.

## Other responses

- `400` — Default Response
- `401` — Default Response
- `402` — Default Response
- `403` — Default Response
- `404` — Default Response
- `422` — Default Response
- `429` — Default Response
- `500` — Default Response
- `503` — Default Response

---

[API](https://skmtc.net/fiber/apis/fiber-ai-api.md) · [All operations](https://skmtc.net/fiber/apis/fiber-ai-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/fiber/fiber-ai-api/versions/0c537984b99f/schema)
