---
title: "Search flights"
method: POST
path: "/v1/flights/search"
tags: ["Market intelligence"]
---

# Search flights

`POST /v1/flights/search`

Searches flight itineraries between cities of interest and returns trips, fares, timing, etc.

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

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

## Request body

- object
  - `apiKey` string, required — Your Fiber API key
  - `travelClass` 'economy' | 'premiumEconomy' | 'business' | 'first' | 'null', nullable — Preferred cabin class. Omit to consider flights across all cabin classes.
  - `adults` integer — Number of adult passengers (ages 12+).
  - `children` integer — Number of child passengers (ages 2-11).
  - `infantsInSeat` integer — Number of infants (under 2) with their own seat.
  - `infantsOnLap` integer — Number of infants (under 2) on an adult's lap.
  - `maxStops` integer, nullable — Maximum number of stops allowed. 0 = nonstop only, 1 = one stop or fewer, 2 = two stops or fewer. Omit to allow any number of stops.
  - `sortBy` 'top' | 'price' | 'departureTime' | 'arrivalTime' | 'duration' | 'emissions' | 'null', nullable — Sort criterion for results. 'top' ranks by overall value. 'price' sorts cheapest first. 'departureTime' and 'arrivalTime' sort earliest first. 'duration' sorts shortest first. 'emissions' sorts lowest carbon first. Direction is always ascending and cannot be changed. Omit to sort by 'top'.
  - `airlines` object, nullable — Filter by airline. By default all airlines are considered. If you pass 'include', only flights from those airlines are returned. If you pass 'exclude', flights from those airlines are removed.
    - `include` string[], nullable — Only return flights operated or marketed by these airlines. Pass 2-letter IATA airline codes (e.g. 'UA' for United, 'AA' for American, 'DL' for Delta, 'B6' for JetBlue). Case-insensitive.
    - `exclude` string[], nullable — Exclude flights operated or marketed by these airlines. Pass 2-letter IATA airline codes (e.g. 'UA' for United, 'AA' for American, 'DL' for Delta, 'B6' for JetBlue). Case-insensitive.
  - `minCarryOnBags` integer, nullable — Minimum carry-on bags the itinerary must include. Omit for no requirement.
  - `minCheckedBags` integer, nullable — Minimum checked bags the itinerary must include. Omit for no requirement. Honored on a best-effort basis: not every itinerary exposes checked-bag inclusion.
  - `maxPrice` integer, nullable — Maximum total itinerary price in whole currency units. You may want to set `currencyCode` as well so the price cap is in the currency you expect (default currency is USD). Omit for no price cap.
  - `outboundTimeWindow` object, nullable — Time-of-day window for outbound flights. For multi-city trips this constrains the first segment. Both startHour and endHour must be provided together per sub-window.
    - `departure` object, nullable — Restrict departure times to this hour range.
      - `startHour` integer, required — Start of the hour range (inclusive), in 24-hour format.
      - `endHour` integer, required — End of the hour range (inclusive), in 24-hour format.
    - `arrival` object, nullable — Restrict arrival times to this hour range.
      - `startHour` integer, required — Start of the hour range (inclusive), in 24-hour format.
      - `endHour` integer, required — End of the hour range (inclusive), in 24-hour format.
  - `returnTimeWindow` object, nullable — Time-of-day window for return flights (round-trip only). Both startHour and endHour must be provided together per sub-window.
    - `departure` object, nullable — Restrict departure times to this hour range.
      - `startHour` integer, required — Start of the hour range (inclusive), in 24-hour format.
      - `endHour` integer, required — End of the hour range (inclusive), in 24-hour format.
    - `arrival` object, nullable — Restrict arrival times to this hour range.
      - `startHour` integer, required — Start of the hour range (inclusive), in 24-hour format.
      - `endHour` integer, required — End of the hour range (inclusive), in 24-hour format.
  - `layoverDuration` object, nullable — Constrain layover duration. Omit to allow any layover length.
    - `minMinutes` integer, nullable — Minimum layover duration in minutes. Omit for no minimum.
    - `maxMinutes` integer, nullable — Maximum layover duration in minutes. Omit for no maximum.
  - `maxFlightDurationMinutes` integer, nullable — Maximum total flight duration in minutes. Omit for no limit.
  - `connectingAirports` object, nullable — Filter by connecting airports. By default all connecting airports are allowed. We recommend not passing this unless you have a good reason — it significantly reduces the number of results returned.
    - `include` string[], nullable — Only allow itineraries connecting through at least one of these IATA airports (e.g. 'DFW', 'SFO'). Nonstop flights and itineraries that don't match are filtered out. Narrow allowlists may return zero results. Case-insensitive.
    - `exclude` string[], nullable — Drop itineraries connecting through any of these IATA airports (e.g. 'ORD', 'ATL'). Case-insensitive.
  - `onlyShowLowEmissionFlights` boolean — When true, only return flights with lower-than-typical carbon emissions. When false (default), return all flights.
  - `showHidden` boolean — When true, include itineraries that would normally be hidden (e.g. very late or undesirable schedules).
  - `hideSeparateTickets` boolean — When true, drop itineraries that combine separately-issued tickets (which carry higher disruption risk).
  - `currencyCode` string — ISO 4217 currency code for prices in the response (e.g. 'EUR', 'GBP', 'CAD'). Case-insensitive. Defaults to USD.
  - `searchMarketCountryCode` string — ISO 3166-1 alpha-3 country code that sets the search market (e.g. 'GBR', 'BRA'). This affects regional pricing and flight availability — the same route may show different prices and options depending on the market. Case-insensitive.
  - `languageCode` string — Language for search results (airport names, airline names, labels). Pass a BCP-47 language tag such as 'en', 'en-US', 'pt-BR', 'zh-CN', 'ja', 'ko', 'fr', 'de', 'es'.
  - `nextPageToken` string, nullable — Token to retrieve the next page. Pass as nextPageToken in the next request. Null if no more pages.
  - `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').

## Response `200`

Default Response

- object
  - `output` object, required
    - `bestFlights` object[], required — Best flight itineraries for this query.
      - `segments` object[], required — Flight segments for this itinerary.
        - `departureAirport` object, required — Departure airport.
          - `iataCode` string, nullable — 3-letter IATA airport code (e.g. 'JFK', 'LAX', 'LHR').
          - `name` string, nullable — Airport display name.
          - `localDateTime` string, nullable — Local departure or arrival datetime without timezone offset (format: YYYY-MM-DDTHH:mm:ss).
        - `arrivalAirport` object, required — Arrival airport.
          - `iataCode` string, nullable — 3-letter IATA airport code (e.g. 'JFK', 'LAX', 'LHR').
          - `name` string, nullable — Airport display name.
          - `localDateTime` string, nullable — Local departure or arrival datetime without timezone offset (format: YYYY-MM-DDTHH:mm:ss).
        - `durationMinutes` integer, nullable — Segment duration in minutes.
        - `airlineName` string, nullable — Operating airline name.
        - `airlineLogoUrl` string, nullable — Operating airline logo URL.
        - `travelClass` string, nullable — Cabin class as labeled in the search results (e.g. 'Economy', 'Premium Economy', 'Business', 'First').
        - `flightNumber` string, nullable — Flight number including airline code (e.g. 'UA 2175', 'DL 1384').
        - `aircraftModel` string, nullable — Aircraft model.
        - `legroom` string, nullable — Legroom distance as reported by the airline (e.g. '32 in').
        - `isOvernight` boolean, nullable — True when this segment is overnight.
        - `isOftenDelayed` boolean, nullable — True when this segment is frequently delayed.
        - `carbonEmissionKg` number, nullable — Estimated carbon emissions in kilograms.
      - `layovers` object[], required — Layovers for this itinerary.
        - `iataCode` string, nullable — 3-letter IATA code of the layover airport (e.g. 'DFW', 'ORD').
        - `airportName` string, nullable — Layover airport name.
        - `durationMinutes` integer, nullable — Layover duration in minutes.
        - `isOvernight` boolean, nullable — True when layover spans overnight.
      - `totalDurationMinutes` integer, nullable — Total itinerary duration in minutes.
      - `price` integer, nullable — Total itinerary price in whole currency units.
      - `bookingToken` string, nullable — Opaque booking token. Pass as `bookingToken` in POST /v1/flights/booking-options to retrieve booking options for this itinerary.
      - `flightType` 'one_way' | 'round_trip' | 'multi_city' | 'null', nullable — Trip type for this itinerary.
      - `mainAirlineLogoUrl` string, nullable — Logo URL for the primary airline on this itinerary. For multi-airline itineraries this may be a generic multi-carrier logo.
      - `carbonEmissions` object, nullable — Carbon emissions summary for this itinerary.
        - `thisFlightKg` integer, nullable — Estimated emissions for this itinerary in kilograms.
        - `typicalForRouteKg` integer, nullable — Typical route emissions in kilograms.
        - `differencePercent` number, nullable — Percent difference versus typical route emissions. Negative means lower than typical, positive means higher.
      - `alsoSoldBy` string[], nullable — Full names of other airlines that also sell this itinerary (e.g. 'United', 'Korean Air').
      - `operatingCarrier` string, nullable — Full name of the airline operating the aircraft and crew, when it differs from the marketing airline (e.g. 'Envoy Air' operating on behalf of American Airlines).
    - `otherFlights` object[], required — Additional flight itineraries for this query.
      - `segments` object[], required — Flight segments for this itinerary.
        - `departureAirport` object, required — Departure airport.
          - `iataCode` string, nullable — 3-letter IATA airport code (e.g. 'JFK', 'LAX', 'LHR').
          - `name` string, nullable — Airport display name.
          - `localDateTime` string, nullable — Local departure or arrival datetime without timezone offset (format: YYYY-MM-DDTHH:mm:ss).
        - `arrivalAirport` object, required — Arrival airport.
          - `iataCode` string, nullable — 3-letter IATA airport code (e.g. 'JFK', 'LAX', 'LHR').
          - `name` string, nullable — Airport display name.
          - `localDateTime` string, nullable — Local departure or arrival datetime without timezone offset (format: YYYY-MM-DDTHH:mm:ss).
        - `durationMinutes` integer, nullable — Segment duration in minutes.
        - `airlineName` string, nullable — Operating airline name.
        - `airlineLogoUrl` string, nullable — Operating airline logo URL.
        - `travelClass` string, nullable — Cabin class as labeled in the search results (e.g. 'Economy', 'Premium Economy', 'Business', 'First').
        - `flightNumber` string, nullable — Flight number including airline code (e.g. 'UA 2175', 'DL 1384').
        - `aircraftModel` string, nullable — Aircraft model.
        - `legroom` string, nullable — Legroom distance as reported by the airline (e.g. '32 in').
        - `isOvernight` boolean, nullable — True when this segment is overnight.
        - `isOftenDelayed` boolean, nullable — True when this segment is frequently delayed.
        - `carbonEmissionKg` number, nullable — Estimated carbon emissions in kilograms.
      - `layovers` object[], required — Layovers for this itinerary.
        - `iataCode` string, nullable — 3-letter IATA code of the layover airport (e.g. 'DFW', 'ORD').
        - `airportName` string, nullable — Layover airport name.
        - `durationMinutes` integer, nullable — Layover duration in minutes.
        - `isOvernight` boolean, nullable — True when layover spans overnight.
      - `totalDurationMinutes` integer, nullable — Total itinerary duration in minutes.
      - `price` integer, nullable — Total itinerary price in whole currency units.
      - `bookingToken` string, nullable — Opaque booking token. Pass as `bookingToken` in POST /v1/flights/booking-options to retrieve booking options for this itinerary.
      - `flightType` 'one_way' | 'round_trip' | 'multi_city' | 'null', nullable — Trip type for this itinerary.
      - `mainAirlineLogoUrl` string, nullable — Logo URL for the primary airline on this itinerary. For multi-airline itineraries this may be a generic multi-carrier logo.
      - `carbonEmissions` object, nullable — Carbon emissions summary for this itinerary.
        - `thisFlightKg` integer, nullable — Estimated emissions for this itinerary in kilograms.
        - `typicalForRouteKg` integer, nullable — Typical route emissions in kilograms.
        - `differencePercent` number, nullable — Percent difference versus typical route emissions. Negative means lower than typical, positive means higher.
      - `alsoSoldBy` string[], nullable — Full names of other airlines that also sell this itinerary (e.g. 'United', 'Korean Air').
      - `operatingCarrier` string, nullable — Full name of the airline operating the aircraft and crew, when it differs from the marketing airline (e.g. 'Envoy Air' operating on behalf of American Airlines).
    - `nextPageToken` string, nullable — Token to retrieve the next page. Pass as `nextPageToken` in the next request. Null if no more pages.
    - `currencyCode` string, nullable — ISO 4217 currency code for prices in this response (e.g. 'USD', 'EUR', 'GBP').
    - `priceInsights` object, nullable — Price-insight summary for this route query.
      - `lowestPrice` integer, nullable — Lowest observed price for this query.
      - `priceLevel` 'low' | 'typical' | 'high' | 'null', nullable — How the current price compares to historical prices for this route.
      - `typicalPriceRange` object, nullable — Typical price range for this route in whole currency units.
        - `lowerBound` integer, nullable — Lower bound of the typical price range.
        - `upperBound` integer, nullable — Upper bound of the typical price range.
      - `history` object[], required — Historical prices for this route.
        - `snapshotDate` string, nullable — Date this price was observed (e.g. '2024-09-19').
        - `price` integer, required — Observed price in whole currency units.
    - `airports` object[], required — Airports recognized for departure and arrival in this query.
      - `departure` object[], required — Departure airport options matched for this query.
        - `iataCode` string, nullable — IATA airport code (e.g. 'JFK'). When the search targeted a metro area via an X- alias or Freebase ID input, this will be a Freebase ID (e.g. '/m/02_286') representing the metro rather than a single airport.
        - `name` string, nullable — Airport name.
        - `city` string, nullable — City name.
        - `countryCode` string, nullable — ISO 3166-1 alpha-3 country code (e.g. 'USA', 'GBR').
      - `arrival` object[], required — Arrival airport options matched for this query.
        - `iataCode` string, nullable — IATA airport code (e.g. 'JFK'). When the search targeted a metro area via an X- alias or Freebase ID input, this will be a Freebase ID (e.g. '/m/02_286') representing the metro rather than a single airport.
        - `name` string, nullable — Airport name.
        - `city` string, nullable — City name.
        - `countryCode` string, nullable — ISO 3166-1 alpha-3 country code (e.g. 'USA', 'GBR').
  - `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)
