> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.kitionz.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.kitionz.com/_mcp/server.

# Poll status

GET https://sandbox-api.kitionz.com/v1/flights/bookings/{id}/status

**Poll a booking’s async status.**

**What:** asks the supplier directly for the latest status of a booking that is `PENDING_CONFIRMATION`.

**When:** only now and then, for example when your customer asks. Kitionz already checks a pending booking with the supplier about every 30 seconds, so for routine waiting read `GET /bookings/{id}` instead; most settle within 10 minutes. No webhook is sent for this change.

**Gotchas**

* When there is nothing to ask the supplier yet (a request booking, or a booking whose supplier gave no clear answer), the answer comes from Kitionz’s own record: `200`, never an error.
* Never show a hard failure and never book again while it is pending. Still pending after 20 minutes: contact Kitionz support with the booking id.

Reference: https://docs.kitionz.com/flights/poll-status

## Authentication

- `Authorization` header (bearer token, required) — Your Kitionz API key, sent as `Authorization: Bearer keyId:secret`. Create a Test key at sandbox.kitionz.com → **API keys**, a Live key at kitionz.com → **API → API keys**.

## Servers

- `https://sandbox-api.kitionz.com` (Test, default)
- `https://api.kitionz.com` (Live)

## Request

### Path parameters

- `id` (string, required)

## Response

### 200

Default Response

- `success` (boolean, required)
- `statusCode` (double, required)
- `data` (FlightBookingStatusResponse, required) — Async booking-status poll result + the refreshed booking.
- `meta` (V1FlightsBookingsIdStatusGetResponsesContentApplicationJsonSchemaMeta, required)

## Types

### FlightBookingStatusResponse

Async booking-status poll result + the refreshed booking.

- `state` (enum, required)
  - Allowed values: `PENDING`, `CONFIRMED`, `FAILED`
- `pnr` (string, required, nullable)
- `supplierReference` (string, required, nullable)
- `retryAfterSeconds` (double, required, nullable)
- `message` (string, required, nullable)
- `booking` (FlightBookingStatusResponseBooking, required)

### V1FlightsBookingsIdStatusGetResponsesContentApplicationJsonSchemaMeta

- `requestId` (string, required)
- `timestamp` (datetime, required)
- `path` (string, required)
- `method` (string, required)
- `responseTime` (double, optional)
- `pagination` (V1FlightsBookingsIdStatusGetResponsesContentApplicationJsonSchemaMetaPagination, optional)

### FlightBookingStatusResponseBooking

- `id` (string, required) — The booking id (bkg_…): your key for every call about this booking. Key your orders on it, never on the PNR (two airlines can issue the same PNR).
- `supplierCode` (string, required) — The supplier's code (the connection the booking was made through).
- `seller` (FlightBookingStatusResponseBookingSeller, required, nullable) — Who sold this booking: the real seller (for a marketplace, the agency behind it), with the support contacts Kitionz holds for it. Null when the seller could not be resolved.
- `environment` (enum, required)
  - Allowed values: `SANDBOX`, `PRODUCTION`
- `status` (enum, required) — Booking status. Each booking also carries nextAction, which names what you do next. What each value means: * RESERVED — transient: Kitionz reserved the booking before calling the supplier. Treat it like PENDING\_CONFIRMATION. * PENDING\_CONFIRMATION — not final yet, and the booking MAY exist at the supplier. Do NOT book this trip again and do not issue a ticket to your customer. Read the booking again after nextAction.pollAfterSeconds. Kitionz checks it with the supplier; still pending after 20 minutes: contact Kitionz support with the booking id. * PARTIALLY\_BOOKED — no longer produced: Kitionz never books a round trip as two separate bookings. Listed until a later version removes it. * HELD — the seats are held, not ticketed. Ticket before nextAction.deadlineAt with POST /v1/flights/bookings/\{id}/ticket. * PENDING\_FULFILMENT — a request: nothing is booked and nothing charged by Kitionz. Book on the supplier’s portal, then POST /v1/flights/bookings/\{id}/fulfil with the PNR before nextAction.deadlineAt (72 hours after booking by default, or the first flight’s departure if that is earlier), or /cancel to withdraw. After the deadline Kitionz may cancel the request at any time. * CONFIRMED — booked and confirmed; pnr is present. * FAILED — not booked, nothing charged; failure says why. Safe to search and book again. * CANCELLED — cancelled or withdrawn (including an expired request). * SCHEDULE\_CHANGED — not produced today: Kitionz does not watch confirmed bookings for airline changes and sends no webhook for them. Airline and seller messages reach your organisation’s registered email and mobile; to catch a change, watch each booked flight with Flight Status (POST /v1/flight-status/monitors) and refresh the booking before departure. * CANCELLED\_BY\_SUPPLIER — the seller reported the booking cancelled when Kitionz read it: after you call POST /v1/flights/bookings/\{id}/refresh, or while Kitionz checks a pending booking. Kitionz does not read confirmed bookings by itself and sends no webhook for this. Contact the seller named in seller.
  - Allowed values: `RESERVED`, `PENDING_CONFIRMATION`, `PARTIALLY_BOOKED`, `HELD`, `PENDING_FULFILMENT`, `CONFIRMED`, `FAILED`, `CANCELLED`, `SCHEDULE_CHANGED`, `CANCELLED_BY_SUPPLIER`
- `bookingMode` (string, required)
- `bookingChannel` (enum, required, nullable)
  - Allowed values: `CONSOLE_UI`, `API`
- `supplierReference` (string, required, nullable) — The seller’s own booking number: quote it to the seller’s support. null until the seller gave one.
- `pnr` (string, required, nullable) — The airline’s booking code (PNR): the traveller uses it at check-in and on the airline’s website. It can arrive after /book (read the booking again). Kitionz returns no e-ticket numbers or ticket document: get them from the seller named in seller.
- `ticketingTimeLimit` (string, required, nullable)
- `booker` (FlightBookingStatusResponseBookingBooker, required)
- `passengers` (list of FlightBookingStatusResponseBookingPassengersItems, required)
- `segments` (list of FlightBookingStatusResponseBookingSegmentsItems, required)
- `events` (list of FlightBookingStatusResponseBookingEventsItems, required)
- `adults` (double, required)
- `children` (double, required)
- `infants` (double, required)
- `departureDate` (string, required, nullable)
- `returnDate` (string, required, nullable)
- `tripType` (string, required)
- `origin` (FlightBookingStatusResponseBookingOrigin, required) — Where the trip starts.
- `destination` (FlightBookingStatusResponseBookingDestination, required) — Where the outbound trip ends.
- `price` (FlightBookingStatusResponseBookingPrice, required) — The price: one block with the same names on the offer, the fare quote and the booking. A part the seller did not state is null. Kitionz computes only: netPayable from a stated commission and TDS, each row’s perPerson, and the equal split of one amount stated for adults and children together.
- `quotedTotalAmount` (double, required, nullable) — The total of the fare quote this booking was made on (its quoteToken). price.totalAmount is never above it. null for a booking that kept no quote total.
- `reconciliation` (FlightBookingStatusResponseBookingReconciliation, required)
- `baggage` (FlightBookingStatusResponseBookingBaggage, required, nullable) — The included baggage of the offer this booking was made on: as the supplier’s booking answer states it when it gave one, else as the fare quote at booking stated it, else as Search stated it. A later answer from the supplier that states baggage (a refresh, or the status check of a booking confirmed after it was made) replaces the rows of the passenger types it states; types it does not mention keep their earlier rows. Shown in every status: on a FAILED booking nothing was booked, and this is what the offer was sold with. null when none of them stated any — not stated, not “no baggage”.
- `policy` (FlightBookingStatusResponseBookingPolicy, required, nullable) — The refund and change policy the offer was sold with, as Search showed it (the offer’s `policy`). null when not stated, or for a booking made before Kitionz kept it.
- `externalReference` (string, required, nullable) — Your own reference you sent on /book (for example your order number); null when you sent none. GET /v1/flights/bookings?externalReference=… finds the booking by it.
- `failure` (FlightBookingStatusResponseBookingFailure, required, nullable) — Why the booking failed: present when status is FAILED, null otherwise. Nothing was booked and nothing charged.
- `nextAction` (FlightBookingStatusResponseBookingNextAction, required) — The one thing you do next with this booking. Always present.
- `bookedAt` (string, required)
- `createdAt` (string, required)
- `updatedAt` (string, required)
- `sourceCode` (string, required, deprecated) — Old name of supplierCode (the same value), removed in the next release. Read supplierCode.
- `supplier` (FlightBookingStatusResponseBookingSupplier, required, nullable, deprecated) — Old name of seller (the same value), removed in the next release. Read seller.
- `returnSupplier` (FlightBookingStatusResponseBookingReturnSupplier, required, nullable, deprecated) — Removed in the next release. Always null: one seller sells the whole booking (ADR-0149).
- `originCode` (string, required, deprecated) — Old name of origin.iataCode (the same value), removed in the next release. Read origin.iataCode.
- `destCode` (string, required, deprecated) — Old name of destination.iataCode (the same value), removed in the next release. Read destination.iataCode.
- `totalAmount` (double, required, deprecated) — Old name of price.totalAmount (the same value), removed in the next release. Read price.totalAmount.
- `currency` (string, required, deprecated) — Old name of price.currency (the same value), removed in the next release. Read price.currency.
- `fareBreakdown` (FlightBookingStatusResponseBookingFareBreakdown, required, deprecated) — Old name of price (the same value), removed in the next release. Read price. Every part of it is in price (perHeadTotal here rounds to whole rupees; price.passengerFares[].perPerson is to the paisa).
- `cabin` (enum, required, nullable, deprecated) — Removed in the next release. Read each flight’s cabin (segments[].cabin). The cabin the offer was sold with, as Search showed it (the offer’s `cabin`); null when not stated, or for a booking made before Kitionz kept it.
  - Allowed values: `ECONOMY`, `PREMIUM_ECONOMY`, `BUSINESS`, `FIRST`

### V1FlightsBookingsIdStatusGetResponsesContentApplicationJsonSchemaMetaPagination

- `page` (double, optional)
- `limit` (double, optional)
- `total` (double, optional)
- `totalPages` (double, optional)
- `hasNext` (boolean, optional)
- `hasPrev` (boolean, optional)

### FlightBookingStatusResponseBookingSeller

Who sold this booking: the real seller (for a marketplace, the agency behind it), with the support contacts Kitionz holds for it. Null when the seller could not be resolved.

- `name` (string, required, nullable)
- `website` (string, required, nullable)
- `supportPhone` (string, required, nullable)
- `supportEmail` (string, required, nullable)

### FlightBookingStatusResponseBookingBooker

- `name` (string, required, nullable)
- `email` (string, required, nullable)
- `phone` (string, required, nullable)

### FlightBookingStatusResponseBookingPassengersItems

- `id` (string, required)
- `passengerIndex` (double, required)
- `title` (string, required)
- `firstName` (string, required)
- `lastName` (string, required, nullable)
- `passengerType` (enum, required, nullable) — ADULT, CHILD or INFANT. null only for a booking stored with another spelling.
  - Allowed values: `ADULT`, `CHILD`, `INFANT`
- `dateOfBirth` (string, required, nullable) — The date of birth you sent (YYYY-MM-DD). null when you sent none — including when Kitionz sent a default one to the supplier (see dateOfBirthDefaulted).
- `dateOfBirthDefaulted` (boolean, required) — true when you sent no date of birth for this adult on a domestic trip and Kitionz sent the supplier 1 January of the year 20 years before the booking, because some suppliers refuse a booking without one. That date is not shown in dateOfBirth: never print it as the passenger’s. false otherwise. On a booking made before this field was added it is false, and dateOfBirth may still show that default date.
- `passportNumber` (string, required, nullable)
- `passportIssueDate` (string, required, nullable)
- `passportExpiryDate` (string, required, nullable)
- `nationality` (string, required, nullable)
- `passportIssuingCountry` (string, required, nullable) — The passport issuing country Kitionz recorded and sent to the supplier: the one you sent, or, on an international trip, your nationality value when you sent none. null when there is none.
- `gender` (string, required, nullable)
- `guardianPassengerIndex` (integer, required, nullable) — For an infant: the passengerIndex of the adult it travels with — the adult whose first and last name the booking recorded as its guardian. null for an adult or child, or when that name matches no adult or more than one.
- `wheelChair` (boolean, required)
- `perPaxStatus` (string, required, nullable)
- `perPaxAmount` (double, required, nullable)
- `travelerType` (string, required, deprecated) — Old name of passengerType (the same value), removed in the next release. Read passengerType.
- `guardian` (string, required, nullable, deprecated) — Old name of guardianPassengerIndex (the same value), removed in the next release. Read guardianPassengerIndex. It holds the adult’s name; guardianPassengerIndex holds the adult’s position.

### FlightBookingStatusResponseBookingSegmentsItems

- `id` (string, required)
- `segmentIndex` (double, required)
- `legType` (string, required, nullable)
- `legIndex` (double, required, nullable)
- `marketingCarrier` (FlightBookingStatusResponseBookingSegmentsItemsMarketingCarrier, required) — The airline whose number is on the ticket.
- `origin` (FlightBookingStatusResponseBookingSegmentsItemsOrigin, required) — Where this flight leaves from.
- `destination` (FlightBookingStatusResponseBookingSegmentsItemsDestination, required) — Where this flight lands.
- `departureTime` (string, required, nullable) — Departure in the origin airport zone. `null` when the supplier did not state it: only at a stop inside a leg, never on its first flight.
- `arrivalTime` (string, required, nullable) — Arrival in the destination airport zone. `null` when the supplier did not state it: only at a stop inside a leg, never on its last flight.
- `technicalStops` (list of FlightBookingStatusResponseBookingSegmentsItemsTechnicalStopsItems, required)
- `unnamedStops` (integer, required)
- `layoverAfterMinutes` (integer, required, nullable) — Minutes waited after this flight before the next flight of the same leg: from the two times when both are stated, otherwise the supplier's stated wait saved with the booking. `null` on a leg's last flight, or when neither is known.
- `departureTerminal` (string, required, nullable) — Departure terminal the offer was sold with. null when not stated, or for a booking made before Kitionz kept it.
- `arrivalTerminal` (string, required, nullable) — Arrival terminal the offer was sold with. null when not stated, or for a booking made before Kitionz kept it.
- `cabin` (enum, required, nullable) — This flight’s cabin the offer was sold with. null when not stated, or for a booking made before Kitionz kept it.
  - Allowed values: `ECONOMY`, `PREMIUM_ECONOMY`, `BUSINESS`, `FIRST`
- `airlineCode` (string, required, deprecated) — Old name of marketingCarrier.iataCode (the same value), removed in the next release. Read marketingCarrier.iataCode.
- `airlineName` (string, required, nullable, deprecated) — Old name of marketingCarrier.name (the same value), removed in the next release. Read marketingCarrier.name.
- `flightNumber` (string, required, deprecated) — Old name of marketingCarrier.flightNumber (the same value), removed in the next release. Read marketingCarrier.flightNumber.
- `originCode` (string, required, deprecated) — Old name of origin.iataCode (the same value), removed in the next release. Read origin.iataCode.
- `originName` (string, required, nullable, deprecated) — Old name of origin.name (the same value), removed in the next release. Read origin.name.
- `destCode` (string, required, deprecated) — Old name of destination.iataCode (the same value), removed in the next release. Read destination.iataCode.
- `destName` (string, required, nullable, deprecated) — Old name of destination.name (the same value), removed in the next release. Read destination.name.
- `departureTimezone` (string, required, nullable, deprecated) — Old name of origin.timezone (the same value), removed in the next release. Read origin.timezone.
- `arrivalTimezone` (string, required, nullable, deprecated) — Old name of destination.timezone (the same value), removed in the next release. Read destination.timezone.
- `originTerminal` (string, required, nullable, deprecated) — Old name of departureTerminal (the same value), removed in the next release. Read departureTerminal.
- `destinationTerminal` (string, required, nullable, deprecated) — Old name of arrivalTerminal (the same value), removed in the next release. Read arrivalTerminal.
- `cabinClass` (enum, required, nullable, deprecated) — Old name of cabin (the same value), removed in the next release. Read cabin.
  - Allowed values: `ECONOMY`, `PREMIUM_ECONOMY`, `BUSINESS`, `FIRST`

### FlightBookingStatusResponseBookingEventsItems

- `id` (string, required)
- `eventType` (string, required)
- `status` (string, required)
- `errorCode` (string, required, nullable)
- `errorMessage` (string, required, nullable)
- `createdAt` (string, required)

### FlightBookingStatusResponseBookingOrigin

Where the trip starts.

- `iataCode` (string, required) — IATA airport code.
- `name` (string, required, nullable) — Airport name from the Kitionz airport list; null when the airport is not in it (the same rule on offers, bookings and stops).
- `city` (string, required, nullable) — The city the airport serves; null when the airport is not in the Kitionz airport list.
- `countryCode` (string, required, nullable) — ISO 3166-1 alpha-2 country code; null when the airport is not in the Kitionz airport list.
- `timezone` (string, required, nullable) — IANA time zone (the flight's local times carry its offset); null when the airport is not in the Kitionz airport list.

### FlightBookingStatusResponseBookingDestination

Where the outbound trip ends.

- `iataCode` (string, required) — IATA airport code.
- `name` (string, required, nullable) — Airport name from the Kitionz airport list; null when the airport is not in it (the same rule on offers, bookings and stops).
- `city` (string, required, nullable) — The city the airport serves; null when the airport is not in the Kitionz airport list.
- `countryCode` (string, required, nullable) — ISO 3166-1 alpha-2 country code; null when the airport is not in the Kitionz airport list.
- `timezone` (string, required, nullable) — IANA time zone (the flight's local times carry its offset); null when the airport is not in the Kitionz airport list.

### FlightBookingStatusResponseBookingPrice

The price: one block with the same names on the offer, the fare quote and the booking. A part the seller did not state is null. Kitionz computes only: netPayable from a stated commission and TDS, each row’s perPerson, and the equal split of one amount stated for adults and children together.

- `totalAmount` (double, required) — What you pay the seller, in INR, for the passengers it priced. When infantFare.status is NOT_GIVEN it covers adults and children only.
- `currency` (string, required)
- `baseFare` (double, required, nullable) — The seller's base fare; null when the seller did not state it — never computed or assumed by Kitionz.
- `taxes` (double, required, nullable) — The seller's own tax split of the fare — not an airline-tax or GST figure; null when the seller did not state it — never computed or assumed by Kitionz.
- `commission` (double, required, nullable) — Your commission on this fare as the seller states it (a stated 0 stays 0); null when the seller did not state it — never computed or assumed by Kitionz.
- `tds` (double, required, nullable) — TDS on the commission as the seller states it; null when the seller did not state it — never computed or assumed by Kitionz.
- `netPayable` (double, required, nullable) — What the fare costs you net: the seller's stated net, else totalAmount − commission + tds when the seller states both; null otherwise.
- `publishedTotal` (double, required, nullable) — The seller's published (list) price; null when the seller did not state it — never computed or assumed by Kitionz.
- `publishedBaseFare` (double, required, nullable) — The published price's base fare; null when the seller did not state it — never computed or assumed by Kitionz.
- `publishedTaxes` (double, required, nullable) — The published price's taxes; null when the seller did not state it — never computed or assumed by Kitionz.
- `taxBreakdown` (list of FlightBookingStatusResponseBookingPriceTaxBreakdownItems, required) — The seller’s itemised taxes; empty when it states none.
- `commercials` (list of FlightBookingStatusResponseBookingPriceCommercialsItems, required) — The seller’s other commercial lines (fees, discounts, incentives); empty when none.
- `passengerFares` (list of FlightBookingStatusResponseBookingPricePassengerFaresItems, required) — One row per passenger type in the party: adults, then children, then infants.
- `infantFare` (FlightBookingStatusResponseBookingPriceInfantFare, required, nullable) — Whether the supplier gave a price for the infants. PRICED: the infant price is in perPax.infant and inside totalAmount. NOT_GIVEN: the supplier gave no infant price, so perPax.infant is absent and totalAmount covers adults and children only — add your own infant charge (the supplier or airline may still charge for the infant). Treat any other status as NOT_GIVEN. null when the party has no infant — and on a booking with infants that kept no fare statement (still reserved, settled after an unclear /book outcome, or made before Kitionz kept it): then the infant price is not known, which is not "no infant".

### FlightBookingStatusResponseBookingReconciliation

- `inSync` (boolean, required, nullable) — true / false when at least one figure was compared (the total, passenger counts or passenger statuses); null when nothing was compared: no supplier answer (supplierDataAvailable false), or an answer that states none of those figures (supplierDataAvailable true).
- `supplierDataAvailable` (boolean, required)
- `diffs` (list of FlightBookingStatusResponseBookingReconciliationDiffsItems, required)

### FlightBookingStatusResponseBookingBaggage

The included baggage of the offer this booking was made on: as the supplier’s booking answer states it when it gave one, else as the fare quote at booking stated it, else as Search stated it. A later answer from the supplier that states baggage (a refresh, or the status check of a booking confirmed after it was made) replaces the rows of the passenger types it states; types it does not mention keep their earlier rows. Shown in every status: on a FAILED booking nothing was booked, and this is what the offer was sold with. null when none of them stated any — not stated, not “no baggage”.

- `perPax` (list of FlightBookingStatusResponseBookingBaggagePerPaxItems, required) — One row per passenger type the seller states an allowance for. A type with no row: not stated for that type. A stated 0 kg stays 0.

### FlightBookingStatusResponseBookingPolicy

The refund and change policy the offer was sold with, as Search showed it (the offer’s `policy`). null when not stated, or for a booking made before Kitionz kept it.

- `refundBeforeDeparture` (FlightBookingStatusResponseBookingPolicyRefundBeforeDeparture, required)
- `changeBeforeDeparture` (FlightBookingStatusResponseBookingPolicyChangeBeforeDeparture, required)
- `refund` (enum, required) — The seller's refund policy. NOT_GIVEN: the seller did not state it — Kitionz never assumes one. Treat any other value as NOT_GIVEN.
  - Allowed values: `REFUNDABLE`, `PARTIAL_REFUND`, `NON_REFUNDABLE`, `NOT_GIVEN`
- `change` (enum, required) — The seller's change policy. NOT_GIVEN: the seller did not state it — Kitionz never assumes one. Treat any other value as NOT_GIVEN.
  - Allowed values: `FREE_CHANGE`, `CHARGEABLE`, `NOT_ALLOWED`, `NOT_GIVEN`
- `refundPolicy` (enum, required, deprecated) — Old name of refund (the same value), removed in the next release. Read refund.
  - Allowed values: `REFUNDABLE`, `PARTIAL_REFUND`, `NON_REFUNDABLE`, `NOT_GIVEN`
- `changePolicy` (enum, required, deprecated) — Old name of change (the same value), removed in the next release. Read change.
  - Allowed values: `FREE_CHANGE`, `CHARGEABLE`, `NOT_ALLOWED`, `NOT_GIVEN`
- `cancellationFee` (double, optional)
- `changeFee` (double, optional)

### FlightBookingStatusResponseBookingFailure

Why the booking failed: present when status is FAILED, null otherwise. Nothing was booked and nothing charged.

- `code` (string, required) — A stable code from the error catalog, e.g. SUPPLIER_BOOK_FAILED or BOOK_NOT_SENT.
- `message` (string, required) — Kitionz wording, safe to show to your customer.

### FlightBookingStatusResponseBookingNextAction

The one thing you do next with this booking. Always present.

- `code` (enum, required) — What you do next. WAIT: not final yet and may exist at the supplier — do not book again, read the booking again after pollAfterSeconds. ISSUE_TICKET: seats held, ticket before deadlineAt. SUBMIT_PNR: book on the supplier’s portal and send the PNR to the path. SEARCH_AGAIN: nothing was booked — search and book another offer. CONTACT_SUPPLIER: the supplier changed the booking — contact the seller named in seller. NONE: nothing to do.
  - Allowed values: `WAIT`, `ISSUE_TICKET`, `SUBMIT_PNR`, `SEARCH_AGAIN`, `CONTACT_SUPPLIER`, `NONE`
- `description` (string, required) — The same in one or two plain sentences.
- `method` (enum, required, nullable) — The call to make, or null when the action is not a call.
  - Allowed values: `GET`, `POST`
- `path` (string, required, nullable) — The path of that call, or null.
- `pollAfterSeconds` (integer, required, nullable) — WAIT only: read the booking again after this many seconds. null otherwise.
- `deadlineAt` (string, required, nullable) — The time to act by (ISO 8601, UTC). ISSUE_TICKET: the supplier’s ticketing deadline, when it stated one. SUBMIT_PNR: send the PNR before it — the request booking’s expiry window after the booking was made (72 hours by default), or the first flight’s departure if that is earlier; after it, Kitionz may cancel the request at any time. Otherwise null.

### FlightBookingStatusResponseBookingSupplier

Old name of seller (the same value), removed in the next release. Read seller.

- `name` (string, required, nullable)
- `website` (string, required, nullable)
- `supportPhone` (string, required, nullable)
- `supportEmail` (string, required, nullable)

### FlightBookingStatusResponseBookingReturnSupplier

Removed in the next release. Always null: one seller sells the whole booking (ADR-0149).

- `name` (string, required, nullable)
- `website` (string, required, nullable)
- `supportPhone` (string, required, nullable)
- `supportEmail` (string, required, nullable)

### FlightBookingStatusResponseBookingFareBreakdown

Old name of price (the same value), removed in the next release. Read price. Every part of it is in price (perHeadTotal here rounds to whole rupees; price.passengerFares[].perPerson is to the paisa).

- `tenantTotal` (double, required) — The total Kitionz bound and recorded for this booking.
- `currency` (string, required)
- `composition` (FlightBookingStatusResponseBookingFareBreakdownComposition, required, nullable)
- `published` (FlightBookingStatusResponseBookingFareBreakdownPublished, required, nullable)
- `taxComponents` (list of FlightBookingStatusResponseBookingFareBreakdownTaxComponentsItems, required)
- `commercials` (list of FlightBookingStatusResponseBookingFareBreakdownCommercialsItems, required)
- `perPax` (list of FlightBookingStatusResponseBookingFareBreakdownPerPaxItems, required)
- `infantFare` (FlightBookingStatusResponseBookingFareBreakdownInfantFare, optional) — Whether the supplier gave a price for the infants. PRICED: the infant price is in perPax.infant and inside totalAmount. NOT_GIVEN: the supplier gave no infant price, so perPax.infant is absent and totalAmount covers adults and children only — add your own infant charge (the supplier or airline may still charge for the infant). Treat any other status as NOT_GIVEN. On a booking: the supplier's statement on the fare it was made on, which is always the one you were quoted (/book refuses a booking whose infant price changed since the quote). Present when the booking has an infant; absent when it has none, or was made before Kitionz recorded this. On NOT_GIVEN the INF row has perHeadTotal null and tenantTotal covers adults and children only.

### FlightBookingStatusResponseBookingSegmentsItemsMarketingCarrier

The airline whose number is on the ticket.

- `iataCode` (string, required, nullable) — The airline's IATA code; null when the seller stated none Kitionz can read.
- `name` (string, required, nullable) — The airline's name from the Kitionz airline list; null when not known. On a search offer only, until the next release: the name the seller stated when the airline is not in the list.
- `flightNumber` (string, required, nullable) — The flight number without the airline code; null when not stated.

### FlightBookingStatusResponseBookingSegmentsItemsOrigin

Where this flight leaves from.

- `iataCode` (string, required) — IATA airport code.
- `name` (string, required, nullable) — Airport name from the Kitionz airport list; null when the airport is not in it (the same rule on offers, bookings and stops).
- `city` (string, required, nullable) — The city the airport serves; null when the airport is not in the Kitionz airport list.
- `countryCode` (string, required, nullable) — ISO 3166-1 alpha-2 country code; null when the airport is not in the Kitionz airport list.
- `timezone` (string, required, nullable) — IANA time zone (the flight's local times carry its offset); null when the airport is not in the Kitionz airport list.

### FlightBookingStatusResponseBookingSegmentsItemsDestination

Where this flight lands.

- `iataCode` (string, required) — IATA airport code.
- `name` (string, required, nullable) — Airport name from the Kitionz airport list; null when the airport is not in it (the same rule on offers, bookings and stops).
- `city` (string, required, nullable) — The city the airport serves; null when the airport is not in the Kitionz airport list.
- `countryCode` (string, required, nullable) — ISO 3166-1 alpha-2 country code; null when the airport is not in the Kitionz airport list.
- `timezone` (string, required, nullable) — IANA time zone (the flight's local times carry its offset); null when the airport is not in the Kitionz airport list.

### FlightBookingStatusResponseBookingSegmentsItemsTechnicalStopsItems

- `airport` (FlightBookingStatusResponseBookingSegmentsItemsTechnicalStopsItemsAirport, required) — The airport where the flight stops.
- `airportCode` (string, required, deprecated) — Old name of airport.iataCode (the same value), removed in the next release. Read airport.iataCode.
- `arrivalTime` (string, optional)
- `departureTime` (string, optional)
- `durationMinutes` (double, optional)
- `arrivalTerminal` (string, optional)
- `departureTerminal` (string, optional)
- `airportName` (string, optional, deprecated) — Old name of airport.name (the same value), removed in the next release. Read airport.name.

### FlightBookingStatusResponseBookingPriceTaxBreakdownItems

- `code` (string, required) — The tax code, as the seller states it.
- `label` (string, required, nullable) — The seller’s label; null when not stated.
- `amount` (double, required)

### FlightBookingStatusResponseBookingPriceCommercialsItems

- `type` (string, required) — The kind of line, as the seller states it (e.g. DISCOUNT).
- `amount` (double, required)
- `appliesOn` (string, required, nullable) — The line it is computed on (e.g. TDS on DISCOUNT); null when not stated.
- `passengerType` (enum, required, nullable) — The passenger type it applies to; null when it is for the whole booking or not stated.
  - Allowed values: `ADULT`, `CHILD`, `INFANT`
- `owner` (string, required, nullable) — Who the line belongs to, as the seller states it (e.g. TMC); null when not stated.
- `label` (string, required, nullable) — The seller’s label; null when not stated.

### FlightBookingStatusResponseBookingPricePassengerFaresItems

- `passengerType` (enum, required)
  - Allowed values: `ADULT`, `CHILD`, `INFANT`
- `count` (integer, required) — How many passengers of this type travel.
- `perPerson` (double, required, nullable) — One passenger of this type: total / count, to the paisa (rounded half up when it does not divide evenly, so perPerson × count can differ from total by up to half a paisa a head — charge totalAmount, never a sum of perPerson). null when total is null. The old per-head figure (fareBreakdown.perPax[].perHeadTotal) rounds to whole rupees: switch every place you read per-head prices at once.
- `total` (double, required, nullable) — All count passengers of this type together: the seller’s line for this type, or Kitionz’s equal share of one amount the seller stated for adults and children together. null when no line covers exactly these passengers (an infant price not given, or one amount covering several types that Kitionz did not split). When every row states a total, the rows add up to totalAmount.
- `baseFare` (double, required, nullable) — The base fare of these passengers; null when the seller did not state it — never computed or assumed by Kitionz.
- `taxes` (double, required, nullable) — The taxes of these passengers; null when the seller did not state it — never computed or assumed by Kitionz.

### FlightBookingStatusResponseBookingPriceInfantFare

Whether the supplier gave a price for the infants. PRICED: the infant price is in perPax.infant and inside totalAmount. NOT_GIVEN: the supplier gave no infant price, so perPax.infant is absent and totalAmount covers adults and children only — add your own infant charge (the supplier or airline may still charge for the infant). Treat any other status as NOT_GIVEN.

- `status` (enum, required) — Whether the supplier gave a price for the infants. PRICED: the infant price is in perPax.infant and inside totalAmount. NOT_GIVEN: the supplier gave no infant price, so perPax.infant is absent and totalAmount covers adults and children only — add your own infant charge (the supplier or airline may still charge for the infant). Treat any other status as NOT_GIVEN.
  - Allowed values: `PRICED`, `NOT_GIVEN`

### FlightBookingStatusResponseBookingReconciliationDiffsItems

- `field` (string, required)
- `ours` (FlightBookingStatusResponseBookingReconciliationDiffsItemsOurs, required, nullable)
- `supplier` (FlightBookingStatusResponseBookingReconciliationDiffsItemsSupplier, required, nullable)
- `severity` (enum, required)
  - Allowed values: `critical`, `warning`, `info`
- `delta` (double, optional)

### FlightBookingStatusResponseBookingBaggagePerPaxItems

- `paxType` (enum, required)
  - Allowed values: `ADT`, `CHD`, `INF`
- `checkIn` (FlightBookingStatusResponseBookingBaggagePerPaxItemsCheckIn, optional)
- `cabin` (FlightBookingStatusResponseBookingBaggagePerPaxItemsCabin, optional)
- `segmentRef` (string, optional)

### FlightBookingStatusResponseBookingPolicyRefundBeforeDeparture

- `allowed` (boolean, required, nullable) — true / false as the seller states it; null when the policy is NOT_GIVEN (not stated, never a guessed false).
- `penaltyAmount` (double, optional)
- `penaltyCurrency` (string, optional)

### FlightBookingStatusResponseBookingPolicyChangeBeforeDeparture

- `allowed` (boolean, required, nullable) — true / false as the seller states it; null when the policy is NOT_GIVEN (not stated, never a guessed false).
- `penaltyAmount` (double, optional)
- `penaltyCurrency` (string, optional)

### FlightBookingStatusResponseBookingFareBreakdownComposition

- `baseFare` (double, required, nullable)
- `taxes` (double, required, nullable)
- `commission` (double, required, nullable)
- `tds` (double, required, nullable)
- `netPayable` (double, required, nullable)

### FlightBookingStatusResponseBookingFareBreakdownPublished

- `baseFare` (double, required, nullable)
- `taxes` (double, required, nullable)
- `total` (double, required, nullable)

### FlightBookingStatusResponseBookingFareBreakdownTaxComponentsItems

- `code` (string, required)
- `amount` (double, required)
- `label` (string, optional)

### FlightBookingStatusResponseBookingFareBreakdownCommercialsItems

- `type` (string, required)
- `amount` (double, required)
- `appliesOn` (string, optional)
- `paxType` (enum, optional)
  - Allowed values: `ADULT`, `CHILD`, `INFANT`
- `supplierType` (string, optional)
- `label` (string, optional)

### FlightBookingStatusResponseBookingFareBreakdownPerPaxItems

- `paxType` (enum, required)
  - Allowed values: `ADT`, `CHD`, `INF`
- `count` (double, required)
- `perHeadTotal` (double, required, nullable)
- `baseFare` (double, required, nullable)
- `totalTax` (double, required, nullable)

### FlightBookingStatusResponseBookingFareBreakdownInfantFare

Whether the supplier gave a price for the infants. PRICED: the infant price is in perPax.infant and inside totalAmount. NOT_GIVEN: the supplier gave no infant price, so perPax.infant is absent and totalAmount covers adults and children only — add your own infant charge (the supplier or airline may still charge for the infant). Treat any other status as NOT_GIVEN. On a booking: the supplier's statement on the fare it was made on, which is always the one you were quoted (/book refuses a booking whose infant price changed since the quote). Present when the booking has an infant; absent when it has none, or was made before Kitionz recorded this. On NOT_GIVEN the INF row has perHeadTotal null and tenantTotal covers adults and children only.

- `status` (enum, required) — Whether the supplier gave a price for the infants. PRICED: the infant price is in perPax.infant and inside totalAmount. NOT_GIVEN: the supplier gave no infant price, so perPax.infant is absent and totalAmount covers adults and children only — add your own infant charge (the supplier or airline may still charge for the infant). Treat any other status as NOT_GIVEN.
  - Allowed values: `PRICED`, `NOT_GIVEN`

### FlightBookingStatusResponseBookingSegmentsItemsTechnicalStopsItemsAirport

The airport where the flight stops.

- `iataCode` (string, required) — IATA airport code.
- `name` (string, required, nullable) — Airport name from the Kitionz airport list; null when the airport is not in it (the same rule on offers, bookings and stops).
- `city` (string, required, nullable) — The city the airport serves; null when the airport is not in the Kitionz airport list.
- `countryCode` (string, required, nullable) — ISO 3166-1 alpha-2 country code; null when the airport is not in the Kitionz airport list.
- `timezone` (string, required, nullable) — IANA time zone (the flight's local times carry its offset); null when the airport is not in the Kitionz airport list.

### FlightBookingStatusResponseBookingReconciliationDiffsItemsOurs

- double
- string

### FlightBookingStatusResponseBookingReconciliationDiffsItemsSupplier

- double
- string

### FlightBookingStatusResponseBookingBaggagePerPaxItemsCheckIn

- FlightBookingStatusResponseBookingBaggagePerPaxItemsCheckIn0
- FlightBookingStatusResponseBookingBaggagePerPaxItemsCheckIn1

### FlightBookingStatusResponseBookingBaggagePerPaxItemsCabin

- FlightBookingStatusResponseBookingBaggagePerPaxItemsCabin0
- FlightBookingStatusResponseBookingBaggagePerPaxItemsCabin1

### FlightBookingStatusResponseBookingBaggagePerPaxItemsCheckIn0

- `pieces` (double, required)
- `weightKgPerPiece` (double, optional)

### FlightBookingStatusResponseBookingBaggagePerPaxItemsCheckIn1

- `weightKg` (double, required)

### FlightBookingStatusResponseBookingBaggagePerPaxItemsCabin0

- `pieces` (double, required)
- `weightKgPerPiece` (double, optional)

### FlightBookingStatusResponseBookingBaggagePerPaxItemsCabin1

- `weightKg` (double, required)

## Examples

**Response**

```json
{
  "success": true,
  "statusCode": 200,
  "data": {
    "state": "CONFIRMED",
    "pnr": "TESTERYVTQ",
    "supplierReference": "SIM-CONFIRM-1793152938-ASG179D0LO",
    "retryAfterSeconds": null,
    "message": null,
    "booking": {
      "id": "bkg_034nVJSR1PGFZYW9sYEu7h",
      "supplierCode": "kitionz_test_air",
      "seller": {
        "name": "Kitionz Test Air",
        "website": null,
        "supportPhone": null,
        "supportEmail": null
      },
      "environment": "SANDBOX",
      "status": "CONFIRMED",
      "bookingMode": "LIVE",
      "bookingChannel": "API",
      "supplierReference": "SIM-CONFIRM-1793152938-ASG179D0LO",
      "pnr": "TESTERYVTQ",
      "ticketingTimeLimit": null,
      "booker": {
        "name": "Raj Kumar",
        "email": "raj@example-agency.in",
        "phone": "+919800000000"
      },
      "passengers": [
        {
          "id": "bkgpax_034nVJSUot0o8bxi6gfFx9",
          "passengerIndex": 0,
          "title": "MR",
          "firstName": "Raj",
          "lastName": "Kumar",
          "passengerType": "ADULT",
          "dateOfBirth": null,
          "dateOfBirthDefaulted": true,
          "passportNumber": null,
          "passportIssueDate": null,
          "passportExpiryDate": null,
          "nationality": null,
          "passportIssuingCountry": null,
          "gender": "MALE",
          "guardianPassengerIndex": null,
          "wheelChair": false,
          "perPaxStatus": null,
          "perPaxAmount": null,
          "travelerType": "ADULT",
          "guardian": null
        }
      ],
      "segments": [
        {
          "id": "bkgseg_034nVJSVJGMBWziK3OEgRk",
          "segmentIndex": 0,
          "legType": "OUTBOUND",
          "legIndex": 0,
          "marketingCarrier": {
            "iataCode": "ZZ",
            "name": "Zz",
            "flightNumber": "100"
          },
          "origin": {
            "iataCode": "DEL",
            "name": "Indira Gandhi International Airport",
            "city": "New Delhi",
            "countryCode": "IN",
            "timezone": "Asia/Kolkata"
          },
          "destination": {
            "iataCode": "BOM",
            "name": "Chhatrapati Shivaji Maharaj International Airport",
            "city": "Mumbai",
            "countryCode": "IN",
            "timezone": "Asia/Kolkata"
          },
          "departureTime": "2026-11-30T05:30:00+05:30",
          "arrivalTime": "2026-11-30T07:40:00+05:30",
          "technicalStops": [],
          "unnamedStops": 0,
          "layoverAfterMinutes": null,
          "departureTerminal": "3",
          "arrivalTerminal": "2",
          "cabin": null,
          "airlineCode": "ZZ",
          "airlineName": "Zz",
          "flightNumber": "100",
          "originCode": "DEL",
          "originName": "Indira Gandhi International Airport",
          "destCode": "BOM",
          "destName": "Chhatrapati Shivaji Maharaj International Airport",
          "departureTimezone": "Asia/Kolkata",
          "arrivalTimezone": "Asia/Kolkata",
          "originTerminal": "3",
          "destinationTerminal": "2",
          "cabinClass": null
        }
      ],
      "events": [
        {
          "id": "bkgevent_034nVJTDlB0qufeWEpxsKM",
          "eventType": "TRACK_STATUS_CONFIRMED",
          "status": "SUCCESS",
          "errorCode": null,
          "errorMessage": null,
          "createdAt": "2026-10-28T02:02:19.231Z"
        },
        {
          "id": "bkgevent_034nVJSVhRfW0tfm6X1aET",
          "eventType": "FARE_RECHECK_PASSED",
          "status": "SUCCESS",
          "errorCode": null,
          "errorMessage": null,
          "createdAt": "2026-10-28T02:02:18.779Z"
        },
        {
          "id": "bkgevent_034nVJSVhGUAqLWGLVbC0m",
          "eventType": "BOOK_CONFIRMED",
          "status": "SUCCESS",
          "errorCode": null,
          "errorMessage": null,
          "createdAt": "2026-10-28T02:02:18.779Z"
        }
      ],
      "adults": 1,
      "children": 0,
      "infants": 0,
      "departureDate": "2026-11-30",
      "returnDate": null,
      "tripType": "ONE_WAY",
      "origin": {
        "iataCode": "DEL",
        "name": "Indira Gandhi International Airport",
        "city": "New Delhi",
        "countryCode": "IN",
        "timezone": "Asia/Kolkata"
      },
      "destination": {
        "iataCode": "BOM",
        "name": "Chhatrapati Shivaji Maharaj International Airport",
        "city": "Mumbai",
        "countryCode": "IN",
        "timezone": "Asia/Kolkata"
      },
      "price": {
        "totalAmount": 5324,
        "currency": "INR",
        "baseFare": null,
        "taxes": null,
        "commission": null,
        "tds": null,
        "netPayable": null,
        "publishedTotal": null,
        "publishedBaseFare": null,
        "publishedTaxes": null,
        "taxBreakdown": [],
        "commercials": [],
        "passengerFares": [
          {
            "passengerType": "ADULT",
            "count": 1,
            "perPerson": 5324,
            "total": 5324,
            "baseFare": null,
            "taxes": null
          }
        ],
        "infantFare": null
      },
      "quotedTotalAmount": 5324,
      "reconciliation": {
        "inSync": null,
        "supplierDataAvailable": false,
        "diffs": []
      },
      "baggage": {
        "perPax": [
          {
            "paxType": "ADT",
            "checkIn": {
              "weightKg": 15
            },
            "cabin": {
              "weightKg": 7
            }
          }
        ]
      },
      "policy": {
        "refundBeforeDeparture": {
          "allowed": null
        },
        "changeBeforeDeparture": {
          "allowed": null
        },
        "refund": "NOT_GIVEN",
        "change": "NOT_GIVEN",
        "refundPolicy": "NOT_GIVEN",
        "changePolicy": "NOT_GIVEN"
      },
      "externalReference": null,
      "failure": null,
      "nextAction": {
        "code": "NONE",
        "description": "Nothing to do: the booking is confirmed.",
        "method": null,
        "path": null,
        "pollAfterSeconds": null,
        "deadlineAt": null
      },
      "bookedAt": "2026-10-28T02:02:18.759Z",
      "createdAt": "2026-10-28T02:02:18.735Z",
      "updatedAt": "2026-10-28T02:02:19.227Z",
      "sourceCode": "kitionz_test_air",
      "supplier": {
        "name": "Kitionz Test Air",
        "website": null,
        "supportPhone": null,
        "supportEmail": null
      },
      "returnSupplier": null,
      "originCode": "DEL",
      "destCode": "BOM",
      "totalAmount": 5324,
      "currency": "INR",
      "fareBreakdown": {
        "tenantTotal": 5324,
        "currency": "INR",
        "composition": {
          "baseFare": null,
          "taxes": null,
          "commission": null,
          "tds": null,
          "netPayable": null
        },
        "published": {
          "baseFare": null,
          "taxes": null,
          "total": null
        },
        "taxComponents": [],
        "commercials": [],
        "perPax": [
          {
            "paxType": "ADT",
            "count": 1,
            "perHeadTotal": 5324,
            "baseFare": null,
            "totalTax": null
          }
        ]
      },
      "cabin": null
    }
  },
  "meta": {
    "requestId": "req_034nVJT95FLBQWFBDpZTFw",
    "timestamp": "2026-10-28T02:02:19.296Z",
    "path": "/v1/flights/bookings/bkg_034nVJSR1PGFZYW9sYEu7h/status",
    "method": "GET"
  }
}
```

**SDK Code**

```python
import requests

url = "https://sandbox-api.kitionz.com/v1/flights/bookings/bkg_034nVJSR1PGFZYW9sYEu7h/status"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://sandbox-api.kitionz.com/v1/flights/bookings/bkg_034nVJSR1PGFZYW9sYEu7h/status';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://sandbox-api.kitionz.com/v1/flights/bookings/bkg_034nVJSR1PGFZYW9sYEu7h/status"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://sandbox-api.kitionz.com/v1/flights/bookings/bkg_034nVJSR1PGFZYW9sYEu7h/status")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://sandbox-api.kitionz.com/v1/flights/bookings/bkg_034nVJSR1PGFZYW9sYEu7h/status")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://sandbox-api.kitionz.com/v1/flights/bookings/bkg_034nVJSR1PGFZYW9sYEu7h/status', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://sandbox-api.kitionz.com/v1/flights/bookings/bkg_034nVJSR1PGFZYW9sYEu7h/status");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://sandbox-api.kitionz.com/v1/flights/bookings/bkg_034nVJSR1PGFZYW9sYEu7h/status")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```