---
title: "Verify flight offer"
method: POST
path: "/flights/verify"
tags: ["Flight Search"]
---

# Verify flight offer

`POST /flights/verify`

## Request

- Base URL: `https://api.liteapi.travel/v3.0`
- URL: `https://api.liteapi.travel/v3.0/flights/verify`
- Auth: API key in header `X-API-Key`

## Overview

Confirm a flight offer is still available and retrieve the latest pricing before proceeding to booking. Always verify before prebooking to avoid price discrepancies.

## When to Use

- **Pre-booking validation** - Confirm offer availability after user selects a flight
- **Price confirmation** - Show users the guaranteed price before they enter payment details
- **Fare rule retrieval** - Get the latest cancellation and change policies

## What You Get

- **Verified pricing** with up-to-date fare breakdown
- **`changes`** (when present) — cabin/fare flags, human-readable `messages`, and **`pricing`** (`old` / `new` full OfferPricing) instead of deprecated scalar currency/prices
- **Journey `pricing`** — `original` (provider/PCC) and `display` (customer) price breakdown per provider FlattenedJourney
- **Fare family details** including name and included amenities
- **Baggage policy** for each passenger type and segment
- **Booking terms** including cancellation and change fee rules

## Key Features

- **Real-time price check**: Confirms current availability and price with the provider
- **Updated baggage info**: Returns the latest baggage allowances at time of verification
- **Fare rules**: Includes cancellation and change fee policies before commitment

## Quick Start

Provide the `offerId` from `/flights/rates` search results. Use the verified offer data to populate a booking summary page before proceeding to `/flights/prebooks`.

## Request body

- object
  - `offerId` string, required: The offerId from the search results

## Response `200`

Successful response

- object
  - `data` object[]: Verified journey result
    - `journey` FlightVerifyJourney: Journey in verify response. The `offerId` is not returned in the JSON body (use the same id you sent on the verify request for prebook/book).
      - `journeyKey` string: Unique identifier for this journey
      - `expiration` string: Offer expiration time (ISO 8601)
      - `timestamp` string: When the journey was generated (ISO 8601)
      - `loyaltyProgramsSupported` boolean: Whether the supplier of this offer forwards `passengers[].loyaltyPrograms` (prebook) to the airline. `true`: frequent flyer numbers are sent with the booking, but the airline or fare may still not credit them. `false`: numbers are accepted and ignored. Omitted when unknown. Sending `loyaltyPrograms` never fails a booking.
      - `pricing` FlightFullOfferPricing: Offer pricing for the verify journey and changes: customer-facing display price.
        - `display` FlightPrice, required: Full price breakdown including supplier base fare, taxes and fees, and per-passenger amounts. base, taxes and fees are always the supplier values and never include the partner markup; only total carries it, so total may exceed base + taxes + fees. The markup amount itself is not exposed.
          - `base` number: Base fare amount as returned by the supplier (before taxes and fees). Never includes the partner markup.
          - `currency` string: ISO 4217 currency code
          - `fees` number: Supplier service fees and surcharges plus, when the account passes them to the customer, the LiteAPI platform fees itemised in platformFees. Never includes the partner markup.
          - `taxes` number: Total airline / government taxes applied to the fare, as returned by the supplier. Never includes the partner markup.
          - `total` number: Total selling price, including the partner markup and, when present, platformFees.total. Because base and taxes are supplier values, total may exceed base + taxes + fees when a markup is configured.
          - `platformFees` object: LiteAPI platform fees included in total and fees. Present only when the account passes the fees to the customer. Booking-level amounts (not distributed over perPassenger).
            - `merchantOfRecord` number: Merchant-of-record fee: percentage of the full transaction value, charged when LiteAPI collects the payment (Payment SDK / third-party). Removed at book time for credit-line and CREDIT_CARD settlements.
            - `ticketing` number: Ticketing fee: percentage of the net fare with a floor and ceiling, per booking or per passenger depending on the account configuration. The rate may depend on the operating airlines. Applies to every payment method.
            - `ancillary` number: Ancillary fee on attached seats and bags: percentage of each item's net price with a per-item floor and ceiling. Present on prebooks / bookings once services are attached. Applies to every payment method.
            - `total` number: merchantOfRecord + ticketing + ancillary
          - `perPassenger` object: Price breakdown per passenger type
            - `adult` object: Price breakdown for each adult passenger
              - …
            - `child` object: Price breakdown for each child passenger
              - …
            - `infant` object: Price breakdown for each infant passenger
              - …
        - `converted` boolean, required: Whether FX currency conversion was applied
      - `baggage` object: Baggage policy for this offer
        - `hasCarryOnBag` boolean: True if a carry-on bag is included in this offer
        - `hasCheckedBag` boolean: True if a checked bag is included in this offer. Equipment (bagType equipment) does not count as a checked bag
        - `included` object[]: List of included baggage allowances per passenger type
          - `bagType` 'cabin' | 'checked' | 'equipment': Type of bag: cabin (carry-on), checked, or equipment (sports equipment or musical instrument)
          - `description` string: Human-readable baggage allowance description
          - `passengerType` 'ADT' | 'CHD' | 'INF': Passenger type this allowance applies to (ADT, CHD, INF)
          - `pieces` integer, nullable: Number of bag pieces allowed. Null when the provider states no piece limit (weight-only allowance); never means zero bags
          - `pricing` FlightItemPricing: Pricing for an ancillary item (e.g. baggage)
            - `display` FlightMoneyAmount: A monetary amount with currency
              - …
            - `converted` boolean: True if FX currency conversion was applied
          - `unit` string: Weight unit (e.g. kg)
          - `weightKg` number, nullable: Maximum weight per bag in kg. Null when the provider states no weight limit
      - `fare` object: Fare class information
        - `family` string: Fare family name (e.g. Economy, Business, First)
        - `mixedCabin` boolean: True if outbound and inbound legs are in different cabin classes
        - `mixedFareFamily` boolean: True when legs are sold under different fare families/brands (e.g. Plus outbound + Basic inbound) combined into one fare. `family` reflects the first leg only; baggage and terms reflect the most restrictive leg.
        - `seatsRemaining` integer: Number of seats remaining at this fare
      - `passengers` object: Passenger counts for this journey
        - `adults` integer: Number of adult passengers
        - `children` integer: Number of child passengers
        - `infants` integer: Number of infant passengers
      - `segments` FlightSegment[]: Ordered list of flight segments for this journey
        - `arrivalTime` string: Arrival time (ISO 8601)
        - `carrier` object: Marketing and operating carrier details for this segment
          - `marketingCode` string: Marketing carrier IATA code
          - `marketingLogo` string: Marketing carrier logo path/URL
          - `marketingName` string: Marketing carrier name
          - `operatingCode` string: Operating carrier IATA code
          - `operatingLogo` string: Operating carrier logo path/URL
          - `operatingName` string: Operating carrier name
        - `departureTime` string: Departure time (ISO 8601)
        - `destinationCode` string: Destination IATA code
        - `direction` string: OUTBOUND or INBOUND
        - `duration` object: Flight duration in ISO 8601 and minutes
          - `iso8601` string: Duration in ISO 8601 format (e.g. PT7H45M)
          - `minutes` integer: Duration in minutes
        - `flight` object: Marketing and operating flight numbers
          - `marketingNumber` string: Flight number as marketed to passengers
          - `operatingNumber` string: Flight number as operated by the carrier
        - `originCode` string: Origin IATA code
        - `originName` string: Full name of the origin airport
        - `destinationName` string: Full name of the destination airport
        - `segmentKey` string: Unique identifier for this segment, used to link with offers, fares, and amenities
        - `stopCount` integer: Number of en-route (technical) stops inside this segment. 0 means the segment is genuinely non-stop. A technical stop keeps the same flight number and aircraft (no plane change, no bag re-check) but adds ground time, so a one-segment journey can still have stops.
        - `stops` FlightSegmentStop[]: En-route (technical) stops inside this segment, in travel order. Omitted when stopCount is 0.
          - `airportCode` string: IATA code of the airport where the aircraft lands for the technical stop
          - `airportName` string: Full name of the stop airport
          - `arrivalTime` string: Local arrival time at the stop airport (ISO 8601)
          - `departureTime` string: Local departure time from the stop airport (ISO 8601)
          - `duration` object: Time spent on the ground at the stop airport
            - `iso8601` string: Ground time in ISO 8601 format (e.g. PT50M)
            - `minutes` integer: Ground time in minutes
      - `segmentFares` object[]: Per-segment fare details
        - `bookingCode` string: Booking/RBD class code (e.g. W, Y, J)
        - `cabin` string: Cabin class (e.g. Economy, Business, First)
        - `fareBasisCode` string: Fare basis code used for pricing and rules
        - `fareFamily` string: Commercial fare family name
        - `seatsRemaining` integer: Number of seats remaining at this fare
        - `segmentKey` string: Links this fare to the corresponding segment
      - `terms` object: Booking terms and conditions for this offer
        - `changeable` boolean: True if the fare allows changes (rebooking)
        - `refundable` boolean: True if the fare is refundable
        - `summary` object[]: Human-readable policy messages with severity levels
          - `level` string: Severity: info, warning, or danger
          - `message` string: Policy message text
        - `changeFee` FlightFee, nullable: Change or refund fee published by the provider. Null when the provider does not publish a fee.
          - `pricing` object, nullable: Fee pricing; null when only a percentage is available
            - `display` FlightMoneyAmount: A monetary amount with currency
              - …
            - `converted` boolean: True when FX conversion was applied
          - `percent` number, nullable: Fee as a percentage of the base fare (e.g. 100 = full penalty). May appear without pricing.
          - `applicability` 'anytime' | 'noShow' | 'beforeDeparture' | 'afterDeparture': When the fee applies
          - `label` string: Human-readable fee description (e.g. 'Change fee (before departure)')
        - `refundFee` FlightFee, nullable: Change or refund fee published by the provider. Null when the provider does not publish a fee.
          - `pricing` object, nullable: Fee pricing; null when only a percentage is available
            - `display` FlightMoneyAmount: A monetary amount with currency
              - …
            - `converted` boolean: True when FX conversion was applied
          - `percent` number, nullable: Fee as a percentage of the base fare (e.g. 100 = full penalty). May appear without pricing.
          - `applicability` 'anytime' | 'noShow' | 'beforeDeparture' | 'afterDeparture': When the fee applies
          - `label` string: Human-readable fee description (e.g. 'Change fee (before departure)')
        - `hasChangeFee` boolean: True when the provider signalled that a change fee applies to the fare, even when the actual amount is not published in `changeFee`. Lets clients render a "change fee applies — amount on request" remark for fares where the rule is known but the monetary amount is not exposed. When `false` or absent, no change fee is known to apply.
        - `hasRefundFee` boolean: True when the provider signalled that a refund/cancellation fee applies to the fare, even when the actual amount is not published in `refundFee`. Lets clients render a "cancellation fee applies — amount on request" remark for fares where the rule is known but the monetary amount is not exposed. When `false` or absent, no refund fee is known to apply.
    - `changes` FlightVerifyChanges: Changes detected between search and verification.
      - `cabinChanged` boolean: True if cabin class changed
      - `fareChanged` boolean: True if fare class/booking code changed
      - `messages` string[]: Human-readable list of change descriptions
      - `newCabin` string, nullable: Current cabin class
      - `newFareClass` string, nullable: Current booking code
      - `newFareFamily` string, nullable: Current fare brand
      - `oldCabin` string, nullable: Original cabin class
      - `oldFareClass` string, nullable: Original booking code (e.g., Y, M)
      - `oldFareFamily` string, nullable: Original fare brand (e.g., Economy Light)
      - `priceChanged` boolean: True if price has changed
      - `pricing` FlightChangesPricing: Pricing comparison between search and verification (provider ChangesPricing).
        - `old` FlightFullOfferPricing, required: Offer pricing for the verify journey and changes: customer-facing display price.
          - `display` FlightPrice, required: Full price breakdown including supplier base fare, taxes and fees, and per-passenger amounts. base, taxes and fees are always the supplier values and never include the partner markup; only total carries it, so total may exceed base + taxes + fees. The markup amount itself is not exposed.
            - `base` number: Base fare amount as returned by the supplier (before taxes and fees). Never includes the partner markup.
            - `currency` string: ISO 4217 currency code
            - `fees` number: Supplier service fees and surcharges plus, when the account passes them to the customer, the LiteAPI platform fees itemised in platformFees. Never includes the partner markup.
            - `taxes` number: Total airline / government taxes applied to the fare, as returned by the supplier. Never includes the partner markup.
            - `total` number: Total selling price, including the partner markup and, when present, platformFees.total. Because base and taxes are supplier values, total may exceed base + taxes + fees when a markup is configured.
            - `platformFees` object: LiteAPI platform fees included in total and fees. Present only when the account passes the fees to the customer. Booking-level amounts (not distributed over perPassenger).
              - …
            - `perPassenger` object: Price breakdown per passenger type
              - …
          - `converted` boolean, required: Whether FX currency conversion was applied
        - `new` FlightFullOfferPricing, required: Offer pricing for the verify journey and changes: customer-facing display price.
          - `display` FlightPrice, required: Full price breakdown including supplier base fare, taxes and fees, and per-passenger amounts. base, taxes and fees are always the supplier values and never include the partner markup; only total carries it, so total may exceed base + taxes + fees. The markup amount itself is not exposed.
            - `base` number: Base fare amount as returned by the supplier (before taxes and fees). Never includes the partner markup.
            - `currency` string: ISO 4217 currency code
            - `fees` number: Supplier service fees and surcharges plus, when the account passes them to the customer, the LiteAPI platform fees itemised in platformFees. Never includes the partner markup.
            - `taxes` number: Total airline / government taxes applied to the fare, as returned by the supplier. Never includes the partner markup.
            - `total` number: Total selling price, including the partner markup and, when present, platformFees.total. Because base and taxes are supplier values, total may exceed base + taxes + fees when a markup is configured.
            - `platformFees` object: LiteAPI platform fees included in total and fees. Present only when the account passes the fees to the customer. Booking-level amounts (not distributed over perPassenger).
              - …
            - `perPassenger` object: Price breakdown per passenger type
              - …
          - `converted` boolean, required: Whether FX currency conversion was applied

## Other responses

- `400`: Bad request — missing or invalid verify parameters
- `401`: Unauthorized
- `404`: Offer expired, not found, or session expired
- `502`: Provider error during verification
- `503`: Service unavailable

---

[API](https://skmtc.dev/liteapi/apis/api-flights.md) - [All operations](https://skmtc.dev/liteapi/apis/api-flights/llms.txt) - [OpenAPI document](https://skmtc.dev/liteapi/apis/api-flights/revisions/7ccb4b3a8bde?raw)
