> **For AI agents:** this page is a focused, LLM-optimized view of a
> single Fiber AI operation. Before calling it, fetch the routing
> instructions at [`https://api.fiber.ai/llms.txt`](https://api.fiber.ai/llms.txt) and the full operation
> index at [`https://api.fiber.ai/ai-docs/index.md`](https://api.fiber.ai/ai-docs/index.md).

# flightBookingOptions

`POST /v1/flights/booking-options`

**Tags:** `Market intelligence`

Get flight booking options

**Endpoint:** `https://api.fiber.ai/v1/flights/booking-options`

## Description

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.

⚡ Rate limit: 120 requests per 1 minute

💰 Cost: 2 credits per lookup ⓘ

## Request body (JSON Schema)

```json
{
  "type": "object",
  "properties": {
    "apiKey": {
      "type": "string",
      "description": "Your Fiber API key"
    },
    "bookingToken": {
      "type": "string",
      "minLength": 1,
      "description": "Booking token from the `bookingToken` field of an itinerary returned by the flight search endpoint (`POST /v1/flights/search`)."
    },
    "trip": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "flightType": {
              "type": "string",
              "enum": [
                "one_way"
              ]
            },
            "departureAirports": {
              "type": "string",
              "description": "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": {
              "type": "string",
              "description": "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": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "description": "ISO date in YYYY-MM-DD format (e.g. '2026-06-10')."
            }
          },
          "required": [
            "flightType",
            "departureAirports",
            "arrivalAirports",
            "outboundDate"
          ]
        },
        {
          "type": "object",
          "properties": {
            "flightType": {
              "type": "string",
              "enum": [
                "round_trip"
              ]
            },
            "departureAirports": {
              "type": "string",
              "description": "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": {
              "type": "string",
              "description": "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": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "description": "ISO date in YYYY-MM-DD format (e.g. '2026-06-10')."
            },
            "returnDate": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "description": "ISO date in YYYY-MM-DD format (e.g. '2026-06-10')."
            }
          },
          "required": [
            "flightType",
            "departureAirports",
            "arrivalAirports",
            "outboundDate",
            "returnDate"
          ]
        },
        {
          "type": "object",
          "properties": {
            "flightType": {
              "type": "string",
              "enum": [
                "multi_city"
              ]
            },
            "segments": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "departureAirports": {
                    "type": "string",
                    "description": "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": {
                    "type": "string",
                    "description": "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": {
                    "type": "string",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                    "description": "ISO date in YYYY-MM-DD format (e.g. '2026-06-10')."
                  }
                },
                "required": [
                  "departureAirports",
                  "arrivalAirports",
                  "outboundDate"
                ]
              },
              "minItems": 2,
              "maxItems": 5,
              "description": "Provide between 2 and 5 segments."
            }
          },
          "required": [
            "flightType",
            "segments"
          ]
        }
      ],
      "description": "Trip configuration. The shape is determined by flightType — see each variant for its required fields."
    },
    "currencyCode": {
      "type": "string",
      "pattern": "^[A-Za-z]{3}$",
      "default": "USD",
      "description": "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": {
      "type": "string",
      "pattern": "^[A-Za-z]{3}$",
      "default": "USA",
      "description": "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": {
      "type": "string",
      "pattern": "^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$",
      "default": "en",
      "description": "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'."
    }
  },
  "required": [
    "apiKey",
    "bookingToken",
    "trip"
  ]
}
```

## Response — success (JSON Schema)

```json
{
  "type": "object",
  "properties": {
    "output": {
      "type": "object",
      "properties": {
        "bookingOptions": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "providerName": {
                "type": "string",
                "description": "Name of the airline or booking site selling this ticket (e.g. 'United', 'American')."
              },
              "airlineLogoUrls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Logos for the airline(s) or booking site(s) on this option. Multiple entries indicate a split booking across providers."
              },
              "flightNumbers": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Flight numbers covered by this option (e.g. 'UA 2175')."
              },
              "price": {
                "type": [
                  "integer",
                  "null"
                ],
                "description": "Total price in whole currency units."
              },
              "fareType": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Fare class label (e.g. 'Basic Economy', 'Business')."
              },
              "isSplitBooking": {
                "type": [
                  "boolean",
                  "null"
                ],
                "description": "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": {
                "type": [
                  "object",
                  "null"
                ],
                "properties": {
                  "url": {
                    "type": "string",
                    "description": "URL to begin booking this option."
                  },
                  "postData": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "description": "Form-encoded body to POST to `url` to start the booking flow, when a POST request is required."
                  }
                },
                "required": [
                  "url"
                ],
                "description": "Link to book this option. When present, both `url` and optionally `postData` are available."
              },
              "bookingPhone": {
                "type": [
                  "string",
                  "null"
                ],
                "pattern": "^\\+[1-9]\\d{1,14}$",
                "description": "Phone number to book through this provider, in E.164 format (e.g. '+18005551212')."
              },
              "estimatedPhoneServiceFee": {
                "type": [
                  "integer",
                  "null"
                ],
                "description": "Estimated phone booking service fee in whole currency units, when phone booking is offered."
              },
              "fareConditions": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Amenities and fare rules included or excluded (e.g. seat selection policy, change rules)."
              },
              "baggageDetails": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Baggage allowances and fees as display strings (e.g. '1st checked bag: 75', '1 free carry-on')."
              }
            },
            "required": [
              "providerName",
              "airlineLogoUrls",
              "flightNumbers",
              "fareConditions",
              "baggageDetails"
            ]
          },
          "description": "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."
        },
        "currencyCode": {
          "type": [
            "string",
            "null"
          ],
          "pattern": "^[A-Z]{3}$",
          "description": "ISO 4217 currency code for prices in this response (e.g. 'USD', 'EUR', 'GBP')."
        }
      },
      "required": [
        "bookingOptions"
      ]
    },
    "chargeInfo": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "method": {
              "type": "string",
              "enum": [
                "charged-now"
              ]
            },
            "creditsCharged": {
              "type": "number"
            },
            "lowCreditAlert": {
              "type": [
                "object",
                "null"
              ],
              "properties": {
                "getMoreCreditsUrl": {
                  "type": "string",
                  "format": "uri",
                  "description": "URL to top up credits or restart billing cycle to get fresh credits."
                },
                "message": {
                  "type": "string",
                  "description": "Human-readable credits warning."
                },
                "availableCredits": {
                  "type": "number",
                  "description": "Number of credits remaining in the current billing period."
                }
              },
              "required": [
                "getMoreCreditsUrl",
                "message",
                "availableCredits"
              ],
              "description": "Contains a link to get more credits, a warning message, and the remaining credit count."
            }
          },
          "required": [
            "method",
            "creditsCharged"
          ],
          "description": "Credits were charged immediately for this operation"
        },
        {
          "type": "object",
          "properties": {
            "method": {
              "type": "string",
              "enum": [
                "charging-later"
              ]
            },
            "message": {
              "type": "string"
            },
            "lowCreditAlert": {
              "type": [
                "object",
                "null"
              ],
              "properties": {
                "getMoreCreditsUrl": {
                  "type": "string",
                  "format": "uri",
                  "description": "URL to top up credits or restart billing cycle to get fresh credits."
                },
                "message": {
                  "type": "string",
                  "description": "Human-readable credits warning."
                },
                "availableCredits": {
                  "type": "number",
                  "description": "Number of credits remaining in the current billing period."
                }
              },
              "required": [
                "getMoreCreditsUrl",
                "message",
                "availableCredits"
              ],
              "description": "Contains a link to get more credits, a warning message, and the remaining credit count."
            }
          },
          "required": [
            "method",
            "message"
          ],
          "description": "Credits will be charged after the operation completes"
        },
        {
          "type": "object",
          "properties": {
            "method": {
              "type": "string",
              "enum": [
                "charged-for-async-process"
              ]
            },
            "creditsCharged": {
              "type": "number"
            },
            "message": {
              "type": "string"
            },
            "lowCreditAlert": {
              "type": [
                "object",
                "null"
              ],
              "properties": {
                "getMoreCreditsUrl": {
                  "type": "string",
                  "format": "uri",
                  "description": "URL to top up credits or restart billing cycle to get fresh credits."
                },
                "message": {
                  "type": "string",
                  "description": "Human-readable credits warning."
                },
                "availableCredits": {
                  "type": "number",
                  "description": "Number of credits remaining in the current billing period."
                }
              },
              "required": [
                "getMoreCreditsUrl",
                "message",
                "availableCredits"
              ],
              "description": "Contains a link to get more credits, a warning message, and the remaining credit count."
            }
          },
          "required": [
            "method",
            "creditsCharged",
            "message"
          ],
          "description": "Credits that were charged for an asynchronous operation"
        },
        {
          "type": "object",
          "properties": {
            "method": {
              "type": "string",
              "enum": [
                "free"
              ]
            },
            "message": {
              "type": "string"
            },
            "lowCreditAlert": {
              "type": [
                "object",
                "null"
              ],
              "properties": {
                "getMoreCreditsUrl": {
                  "type": "string",
                  "format": "uri",
                  "description": "URL to top up credits or restart billing cycle to get fresh credits."
                },
                "message": {
                  "type": "string",
                  "description": "Human-readable credits warning."
                },
                "availableCredits": {
                  "type": "number",
                  "description": "Number of credits remaining in the current billing period."
                }
              },
              "required": [
                "getMoreCreditsUrl",
                "message",
                "availableCredits"
              ],
              "description": "Contains a link to get more credits, a warning message, and the remaining credit count."
            }
          },
          "required": [
            "method",
            "message"
          ],
          "description": "No credits were charged for this operation"
        },
        {
          "type": "object",
          "properties": {
            "method": {
              "type": "string",
              "enum": [
                "credits-refunded"
              ]
            },
            "creditsRefunded": {
              "type": "number"
            },
            "message": {
              "type": "string"
            },
            "lowCreditAlert": {
              "type": [
                "object",
                "null"
              ],
              "properties": {
                "getMoreCreditsUrl": {
                  "type": "string",
                  "format": "uri",
                  "description": "URL to top up credits or restart billing cycle to get fresh credits."
                },
                "message": {
                  "type": "string",
                  "description": "Human-readable credits warning."
                },
                "availableCredits": {
                  "type": "number",
                  "description": "Number of credits remaining in the current billing period."
                }
              },
              "required": [
                "getMoreCreditsUrl",
                "message",
                "availableCredits"
              ],
              "description": "Contains a link to get more credits, a warning message, and the remaining credit count."
            }
          },
          "required": [
            "method",
            "creditsRefunded",
            "message"
          ],
          "description": "Credits were refunded for this operation"
        }
      ]
    },
    "warnings": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "description": "Full path to extraneous field (e.g., 'searchParams.ExtraField')"
          },
          "message": {
            "type": "string",
            "description": "Warning message"
          }
        },
        "required": [
          "field",
          "message"
        ]
      },
      "description": "Warnings about extraneous fields in request"
    },
    "advice": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string"
      },
      "description": "Tips, recommendations, and suggestions for using this API effectively."
    }
  },
  "required": [
    "output",
    "chargeInfo"
  ],
  "additionalProperties": false
}
```

---

Canonical JSON: [`https://api.fiber.ai/openapi.json`](https://api.fiber.ai/openapi.json)
Operation index: [`https://api.fiber.ai/ai-docs/index.md`](https://api.fiber.ai/ai-docs/index.md)
