> 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.

# 6 · Book

POST https://sandbox-api.kitionz.com/v1/flights/book
Content-Type: application/json

**Place a booking.**

**What:** places the booking. Requires the `quoteToken` from `/fare-quote`; the supplier-quoted price is taken from the signed token, so a tenant can’t book a different price than was quoted.

**When:** after a successful `/fare-quote`, within the token’s validity.

**Before / After:** `/fare-quote` → here → do what the booking’s `nextAction` says (`WAIT`, `ISSUE_TICKET`, `SUBMIT_PNR`, `SEARCH_AGAIN`, `CONTACT_SUPPLIER` or `NONE`).

**Gotchas**

* **Read the new names — the old ones are removed in the next release.** Each new name has the same value as its old one until then, and the reference marks the old name deprecated. `supplierCode` for `sourceCode`; `seller` for `supplier`; `origin` / `destination` (`{ iataCode, name, city, countryCode, timezone }`) for `originCode` / `destCode`; `price` (with `quotedTotalAmount`, the total of the quote the booking was made on) for `totalAmount` / `currency` / `fareBreakdown`; `policy.refund` / `policy.change` for `policy.refundPolicy` / `changePolicy`; each flight’s `marketingCarrier { iataCode, name, flightNumber }` for `airlineCode` / `airlineName` / `flightNumber`, `origin` / `destination` for its codes, names and time zones, `departureTerminal` / `arrivalTerminal` / `cabin` for `originTerminal` / `destinationTerminal` / `cabinClass`, a technical stop’s `airport` for `airportCode` / `airportName`; each passenger’s `passengerType` for `travelerType` and `guardianPassengerIndex` for `guardian`.
* **Send the offer’s trip back** — `tripType`, `departureDate` and (round trip) `returnDate` — exactly as on `/fare-quote` (the token binds them).
* **Idempotency is the `Idempotency-Key` HEADER** (required). Persist it and reuse the **same** value on retries — the booking is reserved before the supplier call, so a retry returns the same booking instead of charging twice. There is **no** body idempotency field.
* `passengers[].passengerType` is `ADULT` / `CHILD` / `INFANT`, and the array **must match** `adults`/`children`/`infants` — which must be the party the offer was searched for (else `400 PASSENGER_COUNTS_CHANGED`). A `CHILD` or `INFANT` needs `dateOfBirth`. **The type goes by age on the date of the last flight** (the return flight on a round trip): `ADULT` 12 or older, `CHILD` 2–11, `INFANT` under 2 — so a baby who turns 2 before the return flight books as a `CHILD`. A date of birth that does not fit the type, or is after the departure date, → `422 PASSENGER_FIELD_REQUIRED` naming the passenger by position, the date and the type to use: **search again** with that passenger counted as that type (the passengers you book must be the ones you searched with, so changing the type on `/book` alone is refused again). Every `INFANT` needs `guardianPassengerIndex`: the position in `passengers` (0 = the first) of the `ADULT` it travels with, on their lap; each adult takes one infant.
* **Every booking shows what the offer was sold with:** each flight’s `departureTerminal`, `arrivalTerminal` and `cabin`, the offer’s `cabin` and `policy`, and its included `baggage` (the supplier’s booking answer when it gave one, else the quote at booking, else Search; a later supplier answer that states baggage — a refresh, or the status check of a booking confirmed after `/book` — replaces the rows of the passenger types it states, the others stay; `null` when none stated any). These describe the offer, so a `FAILED` booking shows them too: nothing was booked. Each passenger shows the `passportIssuingCountry` Kitionz sent.
* **An adult with no `dateOfBirth` on a domestic trip:** some suppliers refuse a booking without one, so Kitionz sends them 1 January of the year 20 years back. The booking does not show that date as the passenger’s: it answers `dateOfBirth: null` with `dateOfBirthDefaulted: true`. Send the real date when you have it.
* **`booker` is your record of who made the booking**: Kitionz stores and returns it, and some sellers receive `booker.name` as the contact name. The seller receives **your organisation’s registered email and mobile** as the booking contact (your Kitionz account details), not `booker.email` / `booker.phone` (`booker.phone` is sent only when your organisation has no mobile on record). Seller and airline messages (e-ticket, schedule change, cancellation) therefore come to you: pass them on to your traveller.
* **Which reference to keep:** the booking `id` (`bkg_…`) — your key for every call after booking; key your orders on it, never on the PNR. `pnr` is the airline’s booking code for the traveller (check-in, the airline’s website); it can arrive after `/book`. `supplierReference` is the seller’s own booking number: quote it to the seller’s support. Send your own order number as `externalReference`: if you lose the `/book` answer, `GET /v1/flights/bookings?externalReference=…` finds the booking. Kitionz returns no e-ticket numbers or ticket document: get them from the seller named in `seller`.
* **Old names, removed in the next release:** `supplierOfferRef` (now `offerId`), `passengers[].travelerType` (now `passengerType`), `passengers[].guardian` (the adult’s name; now `guardianPassengerIndex`), `bookingMode: "LIVE"` (now `"INSTANT"`), `originCode` and `destCode` (not needed: Kitionz takes the route from the offer). They are still accepted until then; use the names above. An old and a new name with different values → `400 VALIDATION_ERROR` naming both. Answers carry the new names beside the old ones (see the first note); `bookingMode` still answers `"LIVE"` for an instant booking until the next version.
* `bookingMode: "INSTANT"` (the default) books now, with no hold. The offer decides how: through the seller’s system, or, when the offer is a request booking, as a request you complete by sending the PNR (`nextAction` says which). `"HOLD"` holds the seats where the offer allows it.
* The body takes only the fields in the reference: any other field → `400 VALIDATION_ERROR`. Seats, meals and extra baggage, payment details, corporate or tour codes and frequent-flyer numbers cannot be sent at booking (no supplier receives them).
* **A `201` means Kitionz recorded a booking — decide by `data.status` and `data.nextAction`, never by the HTTP status alone.** `FAILED` (with `failure` saying why) means nothing was booked or charged: search again. `PENDING_CONFIRMATION` means wait: the booking may exist; read `GET /bookings/{id}` after `nextAction.pollAfterSeconds`, and never book again meanwhile.
* **If `/book` is slow or your request times out, never book again with a new key.** Send the identical request again with the SAME `Idempotency-Key`: you get the first booking back, or `409 BOOKING_IN_PROGRESS` / `IDEMPOTENT_REQUEST_IN_PROGRESS` while it is still running (wait, then send it again). `409 QUOTE_TOKEN_ALREADY_USED` names the booking that quote already made in `details.existingBookingId`: read it.
* `500 BOOKING_OUTCOME_UNKNOWN` (with `details.bookingId`) and any answer with no Kitionz `error.code` (for example a `504` from the network) mean the booking may exist: send the same request again with the same key, or read the booking. Set your HTTP timeout for `/book` to at least 90 seconds; a slow supplier can take more than a minute.
* A `4xx` means nothing was booked and no supplier booking was made.
* Just before booking, Kitionz asks the supplier for the fare again and checks it the same way as `/fare-quote`. A broken answer → `422 FARE_QUOTE_UNUSABLE`. An infant price that changed since your quote → `409 FARE_RECHECK_FAILED`: `failureClass` `INFANT_PRICE_WITHDRAWN` (you were quoted one, the supplier gives none now; quote again: it shows `NOT_GIVEN`) or `INFANT_PRICE_APPEARED` (you were quoted `NOT_GIVEN`, the supplier gives one now; quote again: it shows `PRICED`). All are definite: nothing was booked or charged.
* You never send an amount. When the quote said `infantFare.status: NOT_GIVEN`, the booking is made at the supplier’s total (adults and children) and your own infant charge stays with you. The booking’s `price.infantFare` is the supplier’s statement when the booking was made; since `/book` refuses any change from the quote, it is always the status you were quoted.

**Example — request** (with the `Idempotency-Key: <your-uuid>` header):

```json
{
  "offerId": "floffer_9x2k7q",
  "quoteToken": "eyJhbGci…",
  "adults": 1, "tripType": "ONE_WAY", "departureDate": "2027-01-15",
  "booker": { "name": "Asha Rao", "email": "asha@example.com", "phone": "+919800000000" },
  "externalReference": "ORDER-1042",
  "passengers": [ { "title": "Ms", "firstName": "Asha", "lastName": "Rao", "passengerType": "ADULT" } ]
}
```

**Response (trimmed)** — the HTTP status is `201`; decide by `data.status`:

```json
{ "data": { "id": "bkg_7f3a92", "status": "CONFIRMED", "pnr": "AB12CD", "supplierCode": "gapi", "seller": { "name": "Airnatt Holidays", "website": "https://airnatt.com", "supportPhone": "+91 99999 00000", "supportEmail": "help@airnatt.com" }, "price": { "totalAmount": 5480.00, "currency": "INR" }, "quotedTotalAmount": 5480.00, "returnSupplier": null } }
```

`seller` names who sold the flight (the real seller behind a marketplace), with the support contacts Kitionz holds — on every booking from the moment it exists (`supplier` is its old name). `returnSupplier` is always null (one seller per booking); it will be removed in a later version.

Reference: https://docs.kitionz.com/flights/book

## 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

### Headers

- `Idempotency-Key` (string, required) — A new unique value (a UUID) for every write: one booking, one cancel. Save it with your order before you call. Send the SAME value again only when you send the SAME request again after a timeout: you get the first answer back. Reusing it on any other write answers 422 IDEMPOTENCY_KEY_REUSED_WITH_DIFFERENT_PARAMS.

### Body (application/json)

This endpoint expects a bookBody.

- `offerId` (string, required) — Required (or its old name supplierOfferRef; send one, null is refused): the id of the offer you chose in /search — the offer's offerId (floffer_…, 30 characters).
- `adults` (integer, required)
- `departureDate` (string, required) — The offer's `departureDate` from /search — send it back unchanged (a different date → 400 OFFER_TRIP_MISMATCH).
- `passengers` (list of BookBodyPassengersItems, required)
- `quoteToken` (string, required)
- `sourceCode` (string, optional) — Leave it out: the offer id already names the supplier. Only an organisation shown suppliers before booking may send it, and it must then match the offer; for everyone else it is refused with SOURCE_CODE_NOT_ACCEPTED.
- `children` (integer, optional, default: 0)
- `infants` (integer, optional, default: 0)
- `tripType` (enum, optional) — The offer's `tripType` from /search. May be left out: the offer's own trip type is used. When sent it must be the offer's (another → 400 OFFER_TRIP_MISMATCH).
  - Allowed values: `ONE_WAY`, `ROUND_TRIP`
- `returnDate` (string, optional) — Round trip only: the offer's `returnDate` from /search, sent only with tripType ROUND_TRIP. May be left out (the offer fixes it); when sent, send it on /fare-quote and /book alike.
- `booker` (BookBodyBooker, optional, default: {}) — Your record of who made the booking (for example your agent or customer): Kitionz stores it and returns it on the booking, and some sellers receive name as the contact name. The seller receives your organisation’s registered email and mobile as the booking contact (your Kitionz account details), not booker.email / booker.phone (booker.phone is sent only when your organisation has no mobile on record). Seller and airline messages — e-ticket, schedule change, cancellation — come to you: pass them on to your traveller.
- `bookingMode` (enum, optional, default: INSTANT) — INSTANT (the default): book now, with no hold. The offer decides how: through the seller's system, or, when the offer is a request booking, as a request you complete by sending the PNR. HOLD: hold the seats where the offer allows it. LIVE is the old name of INSTANT, accepted until the next release, which removes it.
  - Allowed values: `INSTANT`, `HOLD`
- `externalReference` (string, optional) — Your own order number, up to 120 characters. Kitionz stores it and returns it on the booking. Send it on every /book: if you lose the answer, GET /v1/flights/bookings?externalReference=… finds the booking. Not checked for uniqueness.

## Response

### 201

Success

- `success` (boolean, required)
- `statusCode` (double, required)
- `data` (FlightBookingEnvelope, required) — A full persisted booking (passengers, segments, events, amounts, status).
- `meta` (V1FlightsBookPostResponsesContentApplicationJsonSchemaMeta, required)

## Errors

### 409 Conflict Error

Quote already used

- `success` (boolean, required)
- `statusCode` (integer, required)
- `error` (ErrorError, required)

## Types

### BookBodyPassengersItems

- `title` (string, required)
- `firstName` (string, required)
- `passengerType` (enum, required) — Required (or its old name travelerType; send one, null is refused): ADULT, CHILD or INFANT.
  - Allowed values: `ADULT`, `CHILD`, `INFANT`
- `lastName` (string, optional)
- `dateOfBirth` (string, optional)
- `passportNumber` (string, optional)
- `passportIssueDate` (string, optional)
- `passportExpiryDate` (string, optional)
- `nationality` (string, optional) — The passenger’s nationality as a two-letter ISO country code, for example IN (not a word such as "Indian": some sellers refuse it). Mandatory on an international offer (see the offer’s requiredPassengerFields).
- `passportIssuingCountry` (string, optional)
- `gender` (enum, optional)
  - Allowed values: `MALE`, `FEMALE`, `UNKNOWN`
- `guardianPassengerIndex` (integer, optional) — INFANT only, and required for every INFANT (or its old form guardian): the position in passengers (0 = the first) of the ADULT the infant travels with, on their lap. Each adult takes one infant.
- `wheelChair` (boolean, optional) — Wheelchair assistance; passed to the suppliers that accept it.

### BookBodyBooker

Your record of who made the booking (for example your agent or customer): Kitionz stores it and returns it on the booking, and some sellers receive name as the contact name. The seller receives your organisation’s registered email and mobile as the booking contact (your Kitionz account details), not booker.email / booker.phone (booker.phone is sent only when your organisation has no mobile on record). Seller and airline messages — e-ticket, schedule change, cancellation — come to you: pass them on to your traveller.

- `name` (string, optional)
- `email` (string, optional)
- `phone` (string, optional) — A 10-digit Indian mobile, optionally with +91.

### FlightBookingEnvelope

A full persisted booking (passengers, segments, events, amounts, status).

- `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` (FlightBookingEnvelopeSeller, 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` (FlightBookingEnvelopeBooker, required)
- `passengers` (list of FlightBookingEnvelopePassengersItems, required)
- `segments` (list of FlightBookingEnvelopeSegmentsItems, required)
- `events` (list of FlightBookingEnvelopeEventsItems, required)
- `adults` (double, required)
- `children` (double, required)
- `infants` (double, required)
- `departureDate` (string, required, nullable)
- `returnDate` (string, required, nullable)
- `tripType` (string, required)
- `origin` (FlightBookingEnvelopeOrigin, required) — Where the trip starts.
- `destination` (FlightBookingEnvelopeDestination, required) — Where the outbound trip ends.
- `price` (FlightBookingEnvelopePrice, 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` (FlightBookingEnvelopeReconciliation, required)
- `baggage` (FlightBookingEnvelopeBaggage, 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` (FlightBookingEnvelopePolicy, 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` (FlightBookingEnvelopeFailure, required, nullable) — Why the booking failed: present when status is FAILED, null otherwise. Nothing was booked and nothing charged.
- `nextAction` (FlightBookingEnvelopeNextAction, 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` (FlightBookingEnvelopeSupplier, required, nullable, deprecated) — Old name of seller (the same value), removed in the next release. Read seller.
- `returnSupplier` (FlightBookingEnvelopeReturnSupplier, 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` (FlightBookingEnvelopeFareBreakdown, 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`

### V1FlightsBookPostResponsesContentApplicationJsonSchemaMeta

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

### ErrorError

- `type` (string, required) — The error family.
- `code` (string, required) — What happened, e.g. `OFFER_EXPIRED`.
- `message` (string, required)
- `request_id` (string, required) — Quote it when you ask Kitionz for help.
- `doc_url` (string, optional) — This code's page in the Kitionz docs.

### FlightBookingEnvelopeSeller

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)

### FlightBookingEnvelopeBooker

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

### FlightBookingEnvelopePassengersItems

- `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.

### FlightBookingEnvelopeSegmentsItems

- `id` (string, required)
- `segmentIndex` (double, required)
- `legType` (string, required, nullable)
- `legIndex` (double, required, nullable)
- `marketingCarrier` (FlightBookingEnvelopeSegmentsItemsMarketingCarrier, required) — The airline whose number is on the ticket.
- `origin` (FlightBookingEnvelopeSegmentsItemsOrigin, required) — Where this flight leaves from.
- `destination` (FlightBookingEnvelopeSegmentsItemsDestination, 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 FlightBookingEnvelopeSegmentsItemsTechnicalStopsItems, 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`

### FlightBookingEnvelopeEventsItems

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

### FlightBookingEnvelopeOrigin

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.

### FlightBookingEnvelopeDestination

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.

### FlightBookingEnvelopePrice

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 FlightBookingEnvelopePriceTaxBreakdownItems, required) — The seller’s itemised taxes; empty when it states none.
- `commercials` (list of FlightBookingEnvelopePriceCommercialsItems, required) — The seller’s other commercial lines (fees, discounts, incentives); empty when none.
- `passengerFares` (list of FlightBookingEnvelopePricePassengerFaresItems, required) — One row per passenger type in the party: adults, then children, then infants.
- `infantFare` (FlightBookingEnvelopePriceInfantFare, 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".

### FlightBookingEnvelopeReconciliation

- `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 FlightBookingEnvelopeReconciliationDiffsItems, required)

### FlightBookingEnvelopeBaggage

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 FlightBookingEnvelopeBaggagePerPaxItems, 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.

### FlightBookingEnvelopePolicy

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` (FlightBookingEnvelopePolicyRefundBeforeDeparture, required)
- `changeBeforeDeparture` (FlightBookingEnvelopePolicyChangeBeforeDeparture, 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)

### FlightBookingEnvelopeFailure

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.

### FlightBookingEnvelopeNextAction

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.

### FlightBookingEnvelopeSupplier

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)

### FlightBookingEnvelopeReturnSupplier

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)

### FlightBookingEnvelopeFareBreakdown

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` (FlightBookingEnvelopeFareBreakdownComposition, required, nullable)
- `published` (FlightBookingEnvelopeFareBreakdownPublished, required, nullable)
- `taxComponents` (list of FlightBookingEnvelopeFareBreakdownTaxComponentsItems, required)
- `commercials` (list of FlightBookingEnvelopeFareBreakdownCommercialsItems, required)
- `perPax` (list of FlightBookingEnvelopeFareBreakdownPerPaxItems, required)
- `infantFare` (FlightBookingEnvelopeFareBreakdownInfantFare, 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.

### V1FlightsBookPostResponsesContentApplicationJsonSchemaMetaPagination

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

### FlightBookingEnvelopeSegmentsItemsMarketingCarrier

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.

### FlightBookingEnvelopeSegmentsItemsOrigin

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.

### FlightBookingEnvelopeSegmentsItemsDestination

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.

### FlightBookingEnvelopeSegmentsItemsTechnicalStopsItems

- `airport` (FlightBookingEnvelopeSegmentsItemsTechnicalStopsItemsAirport, 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.

### FlightBookingEnvelopePriceTaxBreakdownItems

- `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)

### FlightBookingEnvelopePriceCommercialsItems

- `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.

### FlightBookingEnvelopePricePassengerFaresItems

- `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.

### FlightBookingEnvelopePriceInfantFare

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`

### FlightBookingEnvelopeReconciliationDiffsItems

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

### FlightBookingEnvelopeBaggagePerPaxItems

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

### FlightBookingEnvelopePolicyRefundBeforeDeparture

- `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)

### FlightBookingEnvelopePolicyChangeBeforeDeparture

- `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)

### FlightBookingEnvelopeFareBreakdownComposition

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

### FlightBookingEnvelopeFareBreakdownPublished

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

### FlightBookingEnvelopeFareBreakdownTaxComponentsItems

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

### FlightBookingEnvelopeFareBreakdownCommercialsItems

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

### FlightBookingEnvelopeFareBreakdownPerPaxItems

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

### FlightBookingEnvelopeFareBreakdownInfantFare

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`

### FlightBookingEnvelopeSegmentsItemsTechnicalStopsItemsAirport

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.

### FlightBookingEnvelopeReconciliationDiffsItemsOurs

- double
- string

### FlightBookingEnvelopeReconciliationDiffsItemsSupplier

- double
- string

### FlightBookingEnvelopeBaggagePerPaxItemsCheckIn

- FlightBookingEnvelopeBaggagePerPaxItemsCheckIn0
- FlightBookingEnvelopeBaggagePerPaxItemsCheckIn1

### FlightBookingEnvelopeBaggagePerPaxItemsCabin

- FlightBookingEnvelopeBaggagePerPaxItemsCabin0
- FlightBookingEnvelopeBaggagePerPaxItemsCabin1

### FlightBookingEnvelopeBaggagePerPaxItemsCheckIn0

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

### FlightBookingEnvelopeBaggagePerPaxItemsCheckIn1

- `weightKg` (double, required)

### FlightBookingEnvelopeBaggagePerPaxItemsCabin0

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

### FlightBookingEnvelopeBaggagePerPaxItemsCabin1

- `weightKg` (double, required)

## Examples

### Confirmed booking

**Request**

```json
{
  "offerId": "floffer_034nVJS2qOr2Vqu1qfPu9c",
  "adults": 1,
  "departureDate": "2026-11-30",
  "passengers": [
    {
      "title": "MR",
      "firstName": "Raj",
      "passengerType": "ADULT",
      "lastName": "Kumar"
    }
  ],
  "quoteToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.8MqhUmWOkoXdxbEUVwzlpw-KUQcfQDl324tCejs1sRcgjNKyoWGrETBEx2d_gaZWPIl3HTylQ0xYyLuHlYQke1ihfB2sXe0BWwGlUl2gW1gAyt-7yoggVgtisnVC9PWS24uM9XT-JyuwEpOhs3vv8RNwRJo4J7wgphBj0VaEgEd0SIOtwGslritHFMRfn9eWBmtGIGVqudOXVof56pItX-hqrP4-qke55WI-sBa_K-e4pfsEfp_gITrtTh3Hj2xJnQxCb6xWFDsFDjwn_6h9BZZ_hTSWfFrHRPeYcbOH0J8TyQvHMUjaKG0jLoyxdeanBbKq0x_gFjgIV0NFa6u2XgouzRvRgcttj5cOXQJ3OsNpWPuMnw7JPXCJDshvP9zK-rPX2zlO_6eddQ5otuC07FyyAEHT_RoDVdgcGO9-8xSGsX-qF3zEhXMrul0cQz4vEGgYayBl4y5VgOkSbxWaQMo5gPxE7uiS1Snhq_XxbNwNlOLoPIwbx-Uh89YsZ9PPNIP-HHyVk4-kP1XqWaz31LoOvcsmFONi76cV9Pd_VhpMpRF8nV-uKGLMd2ew3Szwb4vX6tGSeO5B6Oy1hOwxAIA0CcD1jrEHBxtq7weskKid-PSunGKFjT1jU3def-q8DLKXRazj7_ddzio1nBJDGCAjchCs6QQLLQ8VesBvxQlMSRsuBHdWQwxpqwIUZWA5sq8SI99Tm3Y2BiE6aQEnxwjw0-OaWmNjJ-pBsitEOEDiz4Zk7dzIj4-70-Mo1VGox0Ks2GqnXl6hetOF-hfaUxzPsNDMeJpnMXJhbV3XQwA6zQo2ctgvZbZw3mSY5M0oeofeV4LgfjsJLCj9gPhKrGr9uUtdZ-E02iaVScuRim2FwPmaj6uLPe7UzCVqaJbUknUaOD48nLLtEDN7e_uMIK56TRN9GSmi5qXQaVFjYVNw3fCOULMzrYvAjJq5Pl3RGZQ7oWttPaNSXtGWmxSb9p8V7JRpK9HC49PqziUi667AkMNm-hdmeTSaOZFp1RlJ32jrLlMWqCyZeGzN-vemwIxLGmz3M073qqGRr5RIoq9qxOkgWzGLd2UVfVNRwmTBPCr5g2YkzqWHGQmZzBAaH8zJwC1Vr5lSdx5OpYTE9GBBrC0qIbo7TLhfYTrKSK0KbbsQTbT9sxMFiUA7tJZ_8m-iTvBy4FXM7shVFS8nu4MxokZQ5f3J8oPyMG7FCO-r-DuP3bgQUL60eUWnNNWZF96jvh-9ivYF5p5dsBknvQmbUXF_Lc1vx7iMfrxNORVjds2M11CGlZwdnrzVKRgFPJFgEXCb-fh-W52LwvIsGrOQOGNF3WOc1oc2q2TZudaew7EGJO2jnpMNN1Plfz59Gq7vhoR21qVh2WlVb30Y4SpcDzrOZDrfljKidHgh0yUXSk2UpXE04huQ5f6h4DevY3wfism03A-ZZJzLCsu4Mlp9hvOjoloKP3BgkzYmYTeQ83fnaKg.SaKgkn7xuE5gdl4-_EhJwZdguw7WKscg8m1kCYpjk50",
  "tripType": "ONE_WAY",
  "booker": {
    "name": "Raj Kumar",
    "email": "raj@example-agency.in",
    "phone": "+919800000000"
  }
}
```

**Response**

```json
{
  "success": true,
  "statusCode": 201,
  "data": {
    "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_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:18.763Z",
    "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_034nVJSLSrZnK0RBLqrM0z",
    "timestamp": "2026-10-28T02:02:18.848Z",
    "path": "/v1/flights/book",
    "method": "POST"
  }
}
```

**SDK Code**

```python Confirmed booking
import requests

url = "https://sandbox-api.kitionz.com/v1/flights/book"

payload = {
    "offerId": "floffer_034nVJS2qOr2Vqu1qfPu9c",
    "adults": 1,
    "departureDate": "2026-11-30",
    "passengers": [
        {
            "title": "MR",
            "firstName": "Raj",
            "passengerType": "ADULT",
            "lastName": "Kumar"
        }
    ],
    "quoteToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.8MqhUmWOkoXdxbEUVwzlpw-KUQcfQDl324tCejs1sRcgjNKyoWGrETBEx2d_gaZWPIl3HTylQ0xYyLuHlYQke1ihfB2sXe0BWwGlUl2gW1gAyt-7yoggVgtisnVC9PWS24uM9XT-JyuwEpOhs3vv8RNwRJo4J7wgphBj0VaEgEd0SIOtwGslritHFMRfn9eWBmtGIGVqudOXVof56pItX-hqrP4-qke55WI-sBa_K-e4pfsEfp_gITrtTh3Hj2xJnQxCb6xWFDsFDjwn_6h9BZZ_hTSWfFrHRPeYcbOH0J8TyQvHMUjaKG0jLoyxdeanBbKq0x_gFjgIV0NFa6u2XgouzRvRgcttj5cOXQJ3OsNpWPuMnw7JPXCJDshvP9zK-rPX2zlO_6eddQ5otuC07FyyAEHT_RoDVdgcGO9-8xSGsX-qF3zEhXMrul0cQz4vEGgYayBl4y5VgOkSbxWaQMo5gPxE7uiS1Snhq_XxbNwNlOLoPIwbx-Uh89YsZ9PPNIP-HHyVk4-kP1XqWaz31LoOvcsmFONi76cV9Pd_VhpMpRF8nV-uKGLMd2ew3Szwb4vX6tGSeO5B6Oy1hOwxAIA0CcD1jrEHBxtq7weskKid-PSunGKFjT1jU3def-q8DLKXRazj7_ddzio1nBJDGCAjchCs6QQLLQ8VesBvxQlMSRsuBHdWQwxpqwIUZWA5sq8SI99Tm3Y2BiE6aQEnxwjw0-OaWmNjJ-pBsitEOEDiz4Zk7dzIj4-70-Mo1VGox0Ks2GqnXl6hetOF-hfaUxzPsNDMeJpnMXJhbV3XQwA6zQo2ctgvZbZw3mSY5M0oeofeV4LgfjsJLCj9gPhKrGr9uUtdZ-E02iaVScuRim2FwPmaj6uLPe7UzCVqaJbUknUaOD48nLLtEDN7e_uMIK56TRN9GSmi5qXQaVFjYVNw3fCOULMzrYvAjJq5Pl3RGZQ7oWttPaNSXtGWmxSb9p8V7JRpK9HC49PqziUi667AkMNm-hdmeTSaOZFp1RlJ32jrLlMWqCyZeGzN-vemwIxLGmz3M073qqGRr5RIoq9qxOkgWzGLd2UVfVNRwmTBPCr5g2YkzqWHGQmZzBAaH8zJwC1Vr5lSdx5OpYTE9GBBrC0qIbo7TLhfYTrKSK0KbbsQTbT9sxMFiUA7tJZ_8m-iTvBy4FXM7shVFS8nu4MxokZQ5f3J8oPyMG7FCO-r-DuP3bgQUL60eUWnNNWZF96jvh-9ivYF5p5dsBknvQmbUXF_Lc1vx7iMfrxNORVjds2M11CGlZwdnrzVKRgFPJFgEXCb-fh-W52LwvIsGrOQOGNF3WOc1oc2q2TZudaew7EGJO2jnpMNN1Plfz59Gq7vhoR21qVh2WlVb30Y4SpcDzrOZDrfljKidHgh0yUXSk2UpXE04huQ5f6h4DevY3wfism03A-ZZJzLCsu4Mlp9hvOjoloKP3BgkzYmYTeQ83fnaKg.SaKgkn7xuE5gdl4-_EhJwZdguw7WKscg8m1kCYpjk50",
    "tripType": "ONE_WAY",
    "booker": {
        "name": "Raj Kumar",
        "email": "raj@example-agency.in",
        "phone": "+919800000000"
    }
}
headers = {
    "Idempotency-Key": "replace-with-a-new-uuid-confirmed-booking",
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Confirmed booking
const url = 'https://sandbox-api.kitionz.com/v1/flights/book';
const options = {
  method: 'POST',
  headers: {
    'Idempotency-Key': 'replace-with-a-new-uuid-confirmed-booking',
    Authorization: 'Bearer <token>',
    'Content-Type': 'application/json'
  },
  body: '{"offerId":"floffer_034nVJS2qOr2Vqu1qfPu9c","adults":1,"departureDate":"2026-11-30","passengers":[{"title":"MR","firstName":"Raj","passengerType":"ADULT","lastName":"Kumar"}],"quoteToken":"eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.8MqhUmWOkoXdxbEUVwzlpw-KUQcfQDl324tCejs1sRcgjNKyoWGrETBEx2d_gaZWPIl3HTylQ0xYyLuHlYQke1ihfB2sXe0BWwGlUl2gW1gAyt-7yoggVgtisnVC9PWS24uM9XT-JyuwEpOhs3vv8RNwRJo4J7wgphBj0VaEgEd0SIOtwGslritHFMRfn9eWBmtGIGVqudOXVof56pItX-hqrP4-qke55WI-sBa_K-e4pfsEfp_gITrtTh3Hj2xJnQxCb6xWFDsFDjwn_6h9BZZ_hTSWfFrHRPeYcbOH0J8TyQvHMUjaKG0jLoyxdeanBbKq0x_gFjgIV0NFa6u2XgouzRvRgcttj5cOXQJ3OsNpWPuMnw7JPXCJDshvP9zK-rPX2zlO_6eddQ5otuC07FyyAEHT_RoDVdgcGO9-8xSGsX-qF3zEhXMrul0cQz4vEGgYayBl4y5VgOkSbxWaQMo5gPxE7uiS1Snhq_XxbNwNlOLoPIwbx-Uh89YsZ9PPNIP-HHyVk4-kP1XqWaz31LoOvcsmFONi76cV9Pd_VhpMpRF8nV-uKGLMd2ew3Szwb4vX6tGSeO5B6Oy1hOwxAIA0CcD1jrEHBxtq7weskKid-PSunGKFjT1jU3def-q8DLKXRazj7_ddzio1nBJDGCAjchCs6QQLLQ8VesBvxQlMSRsuBHdWQwxpqwIUZWA5sq8SI99Tm3Y2BiE6aQEnxwjw0-OaWmNjJ-pBsitEOEDiz4Zk7dzIj4-70-Mo1VGox0Ks2GqnXl6hetOF-hfaUxzPsNDMeJpnMXJhbV3XQwA6zQo2ctgvZbZw3mSY5M0oeofeV4LgfjsJLCj9gPhKrGr9uUtdZ-E02iaVScuRim2FwPmaj6uLPe7UzCVqaJbUknUaOD48nLLtEDN7e_uMIK56TRN9GSmi5qXQaVFjYVNw3fCOULMzrYvAjJq5Pl3RGZQ7oWttPaNSXtGWmxSb9p8V7JRpK9HC49PqziUi667AkMNm-hdmeTSaOZFp1RlJ32jrLlMWqCyZeGzN-vemwIxLGmz3M073qqGRr5RIoq9qxOkgWzGLd2UVfVNRwmTBPCr5g2YkzqWHGQmZzBAaH8zJwC1Vr5lSdx5OpYTE9GBBrC0qIbo7TLhfYTrKSK0KbbsQTbT9sxMFiUA7tJZ_8m-iTvBy4FXM7shVFS8nu4MxokZQ5f3J8oPyMG7FCO-r-DuP3bgQUL60eUWnNNWZF96jvh-9ivYF5p5dsBknvQmbUXF_Lc1vx7iMfrxNORVjds2M11CGlZwdnrzVKRgFPJFgEXCb-fh-W52LwvIsGrOQOGNF3WOc1oc2q2TZudaew7EGJO2jnpMNN1Plfz59Gq7vhoR21qVh2WlVb30Y4SpcDzrOZDrfljKidHgh0yUXSk2UpXE04huQ5f6h4DevY3wfism03A-ZZJzLCsu4Mlp9hvOjoloKP3BgkzYmYTeQ83fnaKg.SaKgkn7xuE5gdl4-_EhJwZdguw7WKscg8m1kCYpjk50","tripType":"ONE_WAY","booker":{"name":"Raj Kumar","email":"raj@example-agency.in","phone":"+919800000000"}}'
};

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

```go Confirmed booking
package main

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

func main() {

	url := "https://sandbox-api.kitionz.com/v1/flights/book"

	payload := strings.NewReader("{\n  \"offerId\": \"floffer_034nVJS2qOr2Vqu1qfPu9c\",\n  \"adults\": 1,\n  \"departureDate\": \"2026-11-30\",\n  \"passengers\": [\n    {\n      \"title\": \"MR\",\n      \"firstName\": \"Raj\",\n      \"passengerType\": \"ADULT\",\n      \"lastName\": \"Kumar\"\n    }\n  ],\n  \"quoteToken\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.8MqhUmWOkoXdxbEUVwzlpw-KUQcfQDl324tCejs1sRcgjNKyoWGrETBEx2d_gaZWPIl3HTylQ0xYyLuHlYQke1ihfB2sXe0BWwGlUl2gW1gAyt-7yoggVgtisnVC9PWS24uM9XT-JyuwEpOhs3vv8RNwRJo4J7wgphBj0VaEgEd0SIOtwGslritHFMRfn9eWBmtGIGVqudOXVof56pItX-hqrP4-qke55WI-sBa_K-e4pfsEfp_gITrtTh3Hj2xJnQxCb6xWFDsFDjwn_6h9BZZ_hTSWfFrHRPeYcbOH0J8TyQvHMUjaKG0jLoyxdeanBbKq0x_gFjgIV0NFa6u2XgouzRvRgcttj5cOXQJ3OsNpWPuMnw7JPXCJDshvP9zK-rPX2zlO_6eddQ5otuC07FyyAEHT_RoDVdgcGO9-8xSGsX-qF3zEhXMrul0cQz4vEGgYayBl4y5VgOkSbxWaQMo5gPxE7uiS1Snhq_XxbNwNlOLoPIwbx-Uh89YsZ9PPNIP-HHyVk4-kP1XqWaz31LoOvcsmFONi76cV9Pd_VhpMpRF8nV-uKGLMd2ew3Szwb4vX6tGSeO5B6Oy1hOwxAIA0CcD1jrEHBxtq7weskKid-PSunGKFjT1jU3def-q8DLKXRazj7_ddzio1nBJDGCAjchCs6QQLLQ8VesBvxQlMSRsuBHdWQwxpqwIUZWA5sq8SI99Tm3Y2BiE6aQEnxwjw0-OaWmNjJ-pBsitEOEDiz4Zk7dzIj4-70-Mo1VGox0Ks2GqnXl6hetOF-hfaUxzPsNDMeJpnMXJhbV3XQwA6zQo2ctgvZbZw3mSY5M0oeofeV4LgfjsJLCj9gPhKrGr9uUtdZ-E02iaVScuRim2FwPmaj6uLPe7UzCVqaJbUknUaOD48nLLtEDN7e_uMIK56TRN9GSmi5qXQaVFjYVNw3fCOULMzrYvAjJq5Pl3RGZQ7oWttPaNSXtGWmxSb9p8V7JRpK9HC49PqziUi667AkMNm-hdmeTSaOZFp1RlJ32jrLlMWqCyZeGzN-vemwIxLGmz3M073qqGRr5RIoq9qxOkgWzGLd2UVfVNRwmTBPCr5g2YkzqWHGQmZzBAaH8zJwC1Vr5lSdx5OpYTE9GBBrC0qIbo7TLhfYTrKSK0KbbsQTbT9sxMFiUA7tJZ_8m-iTvBy4FXM7shVFS8nu4MxokZQ5f3J8oPyMG7FCO-r-DuP3bgQUL60eUWnNNWZF96jvh-9ivYF5p5dsBknvQmbUXF_Lc1vx7iMfrxNORVjds2M11CGlZwdnrzVKRgFPJFgEXCb-fh-W52LwvIsGrOQOGNF3WOc1oc2q2TZudaew7EGJO2jnpMNN1Plfz59Gq7vhoR21qVh2WlVb30Y4SpcDzrOZDrfljKidHgh0yUXSk2UpXE04huQ5f6h4DevY3wfism03A-ZZJzLCsu4Mlp9hvOjoloKP3BgkzYmYTeQ83fnaKg.SaKgkn7xuE5gdl4-_EhJwZdguw7WKscg8m1kCYpjk50\",\n  \"tripType\": \"ONE_WAY\",\n  \"booker\": {\n    \"name\": \"Raj Kumar\",\n    \"email\": \"raj@example-agency.in\",\n    \"phone\": \"+919800000000\"\n  }\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Idempotency-Key", "replace-with-a-new-uuid-confirmed-booking")
	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

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

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

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

}
```

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

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

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

request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = 'replace-with-a-new-uuid-confirmed-booking'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"offerId\": \"floffer_034nVJS2qOr2Vqu1qfPu9c\",\n  \"adults\": 1,\n  \"departureDate\": \"2026-11-30\",\n  \"passengers\": [\n    {\n      \"title\": \"MR\",\n      \"firstName\": \"Raj\",\n      \"passengerType\": \"ADULT\",\n      \"lastName\": \"Kumar\"\n    }\n  ],\n  \"quoteToken\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.8MqhUmWOkoXdxbEUVwzlpw-KUQcfQDl324tCejs1sRcgjNKyoWGrETBEx2d_gaZWPIl3HTylQ0xYyLuHlYQke1ihfB2sXe0BWwGlUl2gW1gAyt-7yoggVgtisnVC9PWS24uM9XT-JyuwEpOhs3vv8RNwRJo4J7wgphBj0VaEgEd0SIOtwGslritHFMRfn9eWBmtGIGVqudOXVof56pItX-hqrP4-qke55WI-sBa_K-e4pfsEfp_gITrtTh3Hj2xJnQxCb6xWFDsFDjwn_6h9BZZ_hTSWfFrHRPeYcbOH0J8TyQvHMUjaKG0jLoyxdeanBbKq0x_gFjgIV0NFa6u2XgouzRvRgcttj5cOXQJ3OsNpWPuMnw7JPXCJDshvP9zK-rPX2zlO_6eddQ5otuC07FyyAEHT_RoDVdgcGO9-8xSGsX-qF3zEhXMrul0cQz4vEGgYayBl4y5VgOkSbxWaQMo5gPxE7uiS1Snhq_XxbNwNlOLoPIwbx-Uh89YsZ9PPNIP-HHyVk4-kP1XqWaz31LoOvcsmFONi76cV9Pd_VhpMpRF8nV-uKGLMd2ew3Szwb4vX6tGSeO5B6Oy1hOwxAIA0CcD1jrEHBxtq7weskKid-PSunGKFjT1jU3def-q8DLKXRazj7_ddzio1nBJDGCAjchCs6QQLLQ8VesBvxQlMSRsuBHdWQwxpqwIUZWA5sq8SI99Tm3Y2BiE6aQEnxwjw0-OaWmNjJ-pBsitEOEDiz4Zk7dzIj4-70-Mo1VGox0Ks2GqnXl6hetOF-hfaUxzPsNDMeJpnMXJhbV3XQwA6zQo2ctgvZbZw3mSY5M0oeofeV4LgfjsJLCj9gPhKrGr9uUtdZ-E02iaVScuRim2FwPmaj6uLPe7UzCVqaJbUknUaOD48nLLtEDN7e_uMIK56TRN9GSmi5qXQaVFjYVNw3fCOULMzrYvAjJq5Pl3RGZQ7oWttPaNSXtGWmxSb9p8V7JRpK9HC49PqziUi667AkMNm-hdmeTSaOZFp1RlJ32jrLlMWqCyZeGzN-vemwIxLGmz3M073qqGRr5RIoq9qxOkgWzGLd2UVfVNRwmTBPCr5g2YkzqWHGQmZzBAaH8zJwC1Vr5lSdx5OpYTE9GBBrC0qIbo7TLhfYTrKSK0KbbsQTbT9sxMFiUA7tJZ_8m-iTvBy4FXM7shVFS8nu4MxokZQ5f3J8oPyMG7FCO-r-DuP3bgQUL60eUWnNNWZF96jvh-9ivYF5p5dsBknvQmbUXF_Lc1vx7iMfrxNORVjds2M11CGlZwdnrzVKRgFPJFgEXCb-fh-W52LwvIsGrOQOGNF3WOc1oc2q2TZudaew7EGJO2jnpMNN1Plfz59Gq7vhoR21qVh2WlVb30Y4SpcDzrOZDrfljKidHgh0yUXSk2UpXE04huQ5f6h4DevY3wfism03A-ZZJzLCsu4Mlp9hvOjoloKP3BgkzYmYTeQ83fnaKg.SaKgkn7xuE5gdl4-_EhJwZdguw7WKscg8m1kCYpjk50\",\n  \"tripType\": \"ONE_WAY\",\n  \"booker\": {\n    \"name\": \"Raj Kumar\",\n    \"email\": \"raj@example-agency.in\",\n    \"phone\": \"+919800000000\"\n  }\n}"

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

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

HttpResponse<String> response = Unirest.post("https://sandbox-api.kitionz.com/v1/flights/book")
  .header("Idempotency-Key", "replace-with-a-new-uuid-confirmed-booking")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"offerId\": \"floffer_034nVJS2qOr2Vqu1qfPu9c\",\n  \"adults\": 1,\n  \"departureDate\": \"2026-11-30\",\n  \"passengers\": [\n    {\n      \"title\": \"MR\",\n      \"firstName\": \"Raj\",\n      \"passengerType\": \"ADULT\",\n      \"lastName\": \"Kumar\"\n    }\n  ],\n  \"quoteToken\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.8MqhUmWOkoXdxbEUVwzlpw-KUQcfQDl324tCejs1sRcgjNKyoWGrETBEx2d_gaZWPIl3HTylQ0xYyLuHlYQke1ihfB2sXe0BWwGlUl2gW1gAyt-7yoggVgtisnVC9PWS24uM9XT-JyuwEpOhs3vv8RNwRJo4J7wgphBj0VaEgEd0SIOtwGslritHFMRfn9eWBmtGIGVqudOXVof56pItX-hqrP4-qke55WI-sBa_K-e4pfsEfp_gITrtTh3Hj2xJnQxCb6xWFDsFDjwn_6h9BZZ_hTSWfFrHRPeYcbOH0J8TyQvHMUjaKG0jLoyxdeanBbKq0x_gFjgIV0NFa6u2XgouzRvRgcttj5cOXQJ3OsNpWPuMnw7JPXCJDshvP9zK-rPX2zlO_6eddQ5otuC07FyyAEHT_RoDVdgcGO9-8xSGsX-qF3zEhXMrul0cQz4vEGgYayBl4y5VgOkSbxWaQMo5gPxE7uiS1Snhq_XxbNwNlOLoPIwbx-Uh89YsZ9PPNIP-HHyVk4-kP1XqWaz31LoOvcsmFONi76cV9Pd_VhpMpRF8nV-uKGLMd2ew3Szwb4vX6tGSeO5B6Oy1hOwxAIA0CcD1jrEHBxtq7weskKid-PSunGKFjT1jU3def-q8DLKXRazj7_ddzio1nBJDGCAjchCs6QQLLQ8VesBvxQlMSRsuBHdWQwxpqwIUZWA5sq8SI99Tm3Y2BiE6aQEnxwjw0-OaWmNjJ-pBsitEOEDiz4Zk7dzIj4-70-Mo1VGox0Ks2GqnXl6hetOF-hfaUxzPsNDMeJpnMXJhbV3XQwA6zQo2ctgvZbZw3mSY5M0oeofeV4LgfjsJLCj9gPhKrGr9uUtdZ-E02iaVScuRim2FwPmaj6uLPe7UzCVqaJbUknUaOD48nLLtEDN7e_uMIK56TRN9GSmi5qXQaVFjYVNw3fCOULMzrYvAjJq5Pl3RGZQ7oWttPaNSXtGWmxSb9p8V7JRpK9HC49PqziUi667AkMNm-hdmeTSaOZFp1RlJ32jrLlMWqCyZeGzN-vemwIxLGmz3M073qqGRr5RIoq9qxOkgWzGLd2UVfVNRwmTBPCr5g2YkzqWHGQmZzBAaH8zJwC1Vr5lSdx5OpYTE9GBBrC0qIbo7TLhfYTrKSK0KbbsQTbT9sxMFiUA7tJZ_8m-iTvBy4FXM7shVFS8nu4MxokZQ5f3J8oPyMG7FCO-r-DuP3bgQUL60eUWnNNWZF96jvh-9ivYF5p5dsBknvQmbUXF_Lc1vx7iMfrxNORVjds2M11CGlZwdnrzVKRgFPJFgEXCb-fh-W52LwvIsGrOQOGNF3WOc1oc2q2TZudaew7EGJO2jnpMNN1Plfz59Gq7vhoR21qVh2WlVb30Y4SpcDzrOZDrfljKidHgh0yUXSk2UpXE04huQ5f6h4DevY3wfism03A-ZZJzLCsu4Mlp9hvOjoloKP3BgkzYmYTeQ83fnaKg.SaKgkn7xuE5gdl4-_EhJwZdguw7WKscg8m1kCYpjk50\",\n  \"tripType\": \"ONE_WAY\",\n  \"booker\": {\n    \"name\": \"Raj Kumar\",\n    \"email\": \"raj@example-agency.in\",\n    \"phone\": \"+919800000000\"\n  }\n}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://sandbox-api.kitionz.com/v1/flights/book', [
  'body' => '{
  "offerId": "floffer_034nVJS2qOr2Vqu1qfPu9c",
  "adults": 1,
  "departureDate": "2026-11-30",
  "passengers": [
    {
      "title": "MR",
      "firstName": "Raj",
      "passengerType": "ADULT",
      "lastName": "Kumar"
    }
  ],
  "quoteToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.8MqhUmWOkoXdxbEUVwzlpw-KUQcfQDl324tCejs1sRcgjNKyoWGrETBEx2d_gaZWPIl3HTylQ0xYyLuHlYQke1ihfB2sXe0BWwGlUl2gW1gAyt-7yoggVgtisnVC9PWS24uM9XT-JyuwEpOhs3vv8RNwRJo4J7wgphBj0VaEgEd0SIOtwGslritHFMRfn9eWBmtGIGVqudOXVof56pItX-hqrP4-qke55WI-sBa_K-e4pfsEfp_gITrtTh3Hj2xJnQxCb6xWFDsFDjwn_6h9BZZ_hTSWfFrHRPeYcbOH0J8TyQvHMUjaKG0jLoyxdeanBbKq0x_gFjgIV0NFa6u2XgouzRvRgcttj5cOXQJ3OsNpWPuMnw7JPXCJDshvP9zK-rPX2zlO_6eddQ5otuC07FyyAEHT_RoDVdgcGO9-8xSGsX-qF3zEhXMrul0cQz4vEGgYayBl4y5VgOkSbxWaQMo5gPxE7uiS1Snhq_XxbNwNlOLoPIwbx-Uh89YsZ9PPNIP-HHyVk4-kP1XqWaz31LoOvcsmFONi76cV9Pd_VhpMpRF8nV-uKGLMd2ew3Szwb4vX6tGSeO5B6Oy1hOwxAIA0CcD1jrEHBxtq7weskKid-PSunGKFjT1jU3def-q8DLKXRazj7_ddzio1nBJDGCAjchCs6QQLLQ8VesBvxQlMSRsuBHdWQwxpqwIUZWA5sq8SI99Tm3Y2BiE6aQEnxwjw0-OaWmNjJ-pBsitEOEDiz4Zk7dzIj4-70-Mo1VGox0Ks2GqnXl6hetOF-hfaUxzPsNDMeJpnMXJhbV3XQwA6zQo2ctgvZbZw3mSY5M0oeofeV4LgfjsJLCj9gPhKrGr9uUtdZ-E02iaVScuRim2FwPmaj6uLPe7UzCVqaJbUknUaOD48nLLtEDN7e_uMIK56TRN9GSmi5qXQaVFjYVNw3fCOULMzrYvAjJq5Pl3RGZQ7oWttPaNSXtGWmxSb9p8V7JRpK9HC49PqziUi667AkMNm-hdmeTSaOZFp1RlJ32jrLlMWqCyZeGzN-vemwIxLGmz3M073qqGRr5RIoq9qxOkgWzGLd2UVfVNRwmTBPCr5g2YkzqWHGQmZzBAaH8zJwC1Vr5lSdx5OpYTE9GBBrC0qIbo7TLhfYTrKSK0KbbsQTbT9sxMFiUA7tJZ_8m-iTvBy4FXM7shVFS8nu4MxokZQ5f3J8oPyMG7FCO-r-DuP3bgQUL60eUWnNNWZF96jvh-9ivYF5p5dsBknvQmbUXF_Lc1vx7iMfrxNORVjds2M11CGlZwdnrzVKRgFPJFgEXCb-fh-W52LwvIsGrOQOGNF3WOc1oc2q2TZudaew7EGJO2jnpMNN1Plfz59Gq7vhoR21qVh2WlVb30Y4SpcDzrOZDrfljKidHgh0yUXSk2UpXE04huQ5f6h4DevY3wfism03A-ZZJzLCsu4Mlp9hvOjoloKP3BgkzYmYTeQ83fnaKg.SaKgkn7xuE5gdl4-_EhJwZdguw7WKscg8m1kCYpjk50",
  "tripType": "ONE_WAY",
  "booker": {
    "name": "Raj Kumar",
    "email": "raj@example-agency.in",
    "phone": "+919800000000"
  }
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
    'Idempotency-Key' => 'replace-with-a-new-uuid-confirmed-booking',
  ],
]);

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

```csharp Confirmed booking
using RestSharp;

var client = new RestClient("https://sandbox-api.kitionz.com/v1/flights/book");
var request = new RestRequest(Method.POST);
request.AddHeader("Idempotency-Key", "replace-with-a-new-uuid-confirmed-booking");
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"offerId\": \"floffer_034nVJS2qOr2Vqu1qfPu9c\",\n  \"adults\": 1,\n  \"departureDate\": \"2026-11-30\",\n  \"passengers\": [\n    {\n      \"title\": \"MR\",\n      \"firstName\": \"Raj\",\n      \"passengerType\": \"ADULT\",\n      \"lastName\": \"Kumar\"\n    }\n  ],\n  \"quoteToken\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.8MqhUmWOkoXdxbEUVwzlpw-KUQcfQDl324tCejs1sRcgjNKyoWGrETBEx2d_gaZWPIl3HTylQ0xYyLuHlYQke1ihfB2sXe0BWwGlUl2gW1gAyt-7yoggVgtisnVC9PWS24uM9XT-JyuwEpOhs3vv8RNwRJo4J7wgphBj0VaEgEd0SIOtwGslritHFMRfn9eWBmtGIGVqudOXVof56pItX-hqrP4-qke55WI-sBa_K-e4pfsEfp_gITrtTh3Hj2xJnQxCb6xWFDsFDjwn_6h9BZZ_hTSWfFrHRPeYcbOH0J8TyQvHMUjaKG0jLoyxdeanBbKq0x_gFjgIV0NFa6u2XgouzRvRgcttj5cOXQJ3OsNpWPuMnw7JPXCJDshvP9zK-rPX2zlO_6eddQ5otuC07FyyAEHT_RoDVdgcGO9-8xSGsX-qF3zEhXMrul0cQz4vEGgYayBl4y5VgOkSbxWaQMo5gPxE7uiS1Snhq_XxbNwNlOLoPIwbx-Uh89YsZ9PPNIP-HHyVk4-kP1XqWaz31LoOvcsmFONi76cV9Pd_VhpMpRF8nV-uKGLMd2ew3Szwb4vX6tGSeO5B6Oy1hOwxAIA0CcD1jrEHBxtq7weskKid-PSunGKFjT1jU3def-q8DLKXRazj7_ddzio1nBJDGCAjchCs6QQLLQ8VesBvxQlMSRsuBHdWQwxpqwIUZWA5sq8SI99Tm3Y2BiE6aQEnxwjw0-OaWmNjJ-pBsitEOEDiz4Zk7dzIj4-70-Mo1VGox0Ks2GqnXl6hetOF-hfaUxzPsNDMeJpnMXJhbV3XQwA6zQo2ctgvZbZw3mSY5M0oeofeV4LgfjsJLCj9gPhKrGr9uUtdZ-E02iaVScuRim2FwPmaj6uLPe7UzCVqaJbUknUaOD48nLLtEDN7e_uMIK56TRN9GSmi5qXQaVFjYVNw3fCOULMzrYvAjJq5Pl3RGZQ7oWttPaNSXtGWmxSb9p8V7JRpK9HC49PqziUi667AkMNm-hdmeTSaOZFp1RlJ32jrLlMWqCyZeGzN-vemwIxLGmz3M073qqGRr5RIoq9qxOkgWzGLd2UVfVNRwmTBPCr5g2YkzqWHGQmZzBAaH8zJwC1Vr5lSdx5OpYTE9GBBrC0qIbo7TLhfYTrKSK0KbbsQTbT9sxMFiUA7tJZ_8m-iTvBy4FXM7shVFS8nu4MxokZQ5f3J8oPyMG7FCO-r-DuP3bgQUL60eUWnNNWZF96jvh-9ivYF5p5dsBknvQmbUXF_Lc1vx7iMfrxNORVjds2M11CGlZwdnrzVKRgFPJFgEXCb-fh-W52LwvIsGrOQOGNF3WOc1oc2q2TZudaew7EGJO2jnpMNN1Plfz59Gq7vhoR21qVh2WlVb30Y4SpcDzrOZDrfljKidHgh0yUXSk2UpXE04huQ5f6h4DevY3wfism03A-ZZJzLCsu4Mlp9hvOjoloKP3BgkzYmYTeQ83fnaKg.SaKgkn7xuE5gdl4-_EhJwZdguw7WKscg8m1kCYpjk50\",\n  \"tripType\": \"ONE_WAY\",\n  \"booker\": {\n    \"name\": \"Raj Kumar\",\n    \"email\": \"raj@example-agency.in\",\n    \"phone\": \"+919800000000\"\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Confirmed booking
import Foundation

let headers = [
  "Idempotency-Key": "replace-with-a-new-uuid-confirmed-booking",
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "offerId": "floffer_034nVJS2qOr2Vqu1qfPu9c",
  "adults": 1,
  "departureDate": "2026-11-30",
  "passengers": [
    [
      "title": "MR",
      "firstName": "Raj",
      "passengerType": "ADULT",
      "lastName": "Kumar"
    ]
  ],
  "quoteToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.8MqhUmWOkoXdxbEUVwzlpw-KUQcfQDl324tCejs1sRcgjNKyoWGrETBEx2d_gaZWPIl3HTylQ0xYyLuHlYQke1ihfB2sXe0BWwGlUl2gW1gAyt-7yoggVgtisnVC9PWS24uM9XT-JyuwEpOhs3vv8RNwRJo4J7wgphBj0VaEgEd0SIOtwGslritHFMRfn9eWBmtGIGVqudOXVof56pItX-hqrP4-qke55WI-sBa_K-e4pfsEfp_gITrtTh3Hj2xJnQxCb6xWFDsFDjwn_6h9BZZ_hTSWfFrHRPeYcbOH0J8TyQvHMUjaKG0jLoyxdeanBbKq0x_gFjgIV0NFa6u2XgouzRvRgcttj5cOXQJ3OsNpWPuMnw7JPXCJDshvP9zK-rPX2zlO_6eddQ5otuC07FyyAEHT_RoDVdgcGO9-8xSGsX-qF3zEhXMrul0cQz4vEGgYayBl4y5VgOkSbxWaQMo5gPxE7uiS1Snhq_XxbNwNlOLoPIwbx-Uh89YsZ9PPNIP-HHyVk4-kP1XqWaz31LoOvcsmFONi76cV9Pd_VhpMpRF8nV-uKGLMd2ew3Szwb4vX6tGSeO5B6Oy1hOwxAIA0CcD1jrEHBxtq7weskKid-PSunGKFjT1jU3def-q8DLKXRazj7_ddzio1nBJDGCAjchCs6QQLLQ8VesBvxQlMSRsuBHdWQwxpqwIUZWA5sq8SI99Tm3Y2BiE6aQEnxwjw0-OaWmNjJ-pBsitEOEDiz4Zk7dzIj4-70-Mo1VGox0Ks2GqnXl6hetOF-hfaUxzPsNDMeJpnMXJhbV3XQwA6zQo2ctgvZbZw3mSY5M0oeofeV4LgfjsJLCj9gPhKrGr9uUtdZ-E02iaVScuRim2FwPmaj6uLPe7UzCVqaJbUknUaOD48nLLtEDN7e_uMIK56TRN9GSmi5qXQaVFjYVNw3fCOULMzrYvAjJq5Pl3RGZQ7oWttPaNSXtGWmxSb9p8V7JRpK9HC49PqziUi667AkMNm-hdmeTSaOZFp1RlJ32jrLlMWqCyZeGzN-vemwIxLGmz3M073qqGRr5RIoq9qxOkgWzGLd2UVfVNRwmTBPCr5g2YkzqWHGQmZzBAaH8zJwC1Vr5lSdx5OpYTE9GBBrC0qIbo7TLhfYTrKSK0KbbsQTbT9sxMFiUA7tJZ_8m-iTvBy4FXM7shVFS8nu4MxokZQ5f3J8oPyMG7FCO-r-DuP3bgQUL60eUWnNNWZF96jvh-9ivYF5p5dsBknvQmbUXF_Lc1vx7iMfrxNORVjds2M11CGlZwdnrzVKRgFPJFgEXCb-fh-W52LwvIsGrOQOGNF3WOc1oc2q2TZudaew7EGJO2jnpMNN1Plfz59Gq7vhoR21qVh2WlVb30Y4SpcDzrOZDrfljKidHgh0yUXSk2UpXE04huQ5f6h4DevY3wfism03A-ZZJzLCsu4Mlp9hvOjoloKP3BgkzYmYTeQ83fnaKg.SaKgkn7xuE5gdl4-_EhJwZdguw7WKscg8m1kCYpjk50",
  "tripType": "ONE_WAY",
  "booker": [
    "name": "Raj Kumar",
    "email": "raj@example-agency.in",
    "phone": "+919800000000"
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://sandbox-api.kitionz.com/v1/flights/book")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

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()
```

### Sold out at book

**Request**

```json
{
  "offerId": "floffer_034nVJS2qZg5JWLWcsYmlL",
  "adults": 1,
  "departureDate": "2026-11-30",
  "passengers": [
    {
      "title": "MR",
      "firstName": "Raj",
      "passengerType": "ADULT",
      "lastName": "Kumar"
    }
  ],
  "quoteToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.fVPDaj6Ic381QSo1ohDyN3KdgAUibjc_hRP0gY_y4GUUwVIHM8tVKMF4e5TjZnF68DCL9NuPBN32aC7jSDsz1XrHaR-0Ezk7_fc2DK3MBezS5PE4mkT8REaRxCnaBhxC1SULHYdXUqWEguN0DEN1pBIx3n_UToS7utMCRSgRLbXrzB5C7ivmOUcdkRK8wg0PI7ndht30EzbFSlfl83B2cKGAomA62a22q3aYK8j1BnOBkYKHGCF8fkKEZ6gwEMOTD8_rd2LifdcTspk-NaLP851TlkGQZlXsksPj-RtxQtVblG65Ry-Z1vxdsdE0WkK2oyGw4HZ6RRDIS9YMSD6xtTQJ3qJhvjiXLWW7BqYn81-rf36uD_wliSY9J_bdAe7YUP96PgCga9QMImhAgRXJULhmfPhATuzidWE9fMxok7-_g14KESIg373d6HR91cKIVbkdMlZUHZqIGupf0DeMsF0kC4bSG5cLZrljF7LzVi0EIWMoTyL8Ygi5zE0pheVFy_FegZShBetXGahTd4kpGDtAOqMLjWsgLaGlBLUi2gULDljxgzFXoRjU8mjJZZjqnzqpjZHdtjivdBEDJYtqw2odpGDkFJnu6QJIFzPrSOvphTouuGDuyxVtVl4zJZUFRpElSZf2acI9tzz2nFsqvG_Td1MbmarssGUJD2ZW9TiW8hKcsHqvilhivjWaJF_-osCJGHIE-OjrN8rWfz6sDjJv8cLjyNe8op5blGMjvFgdRVXaUDhr8erNNYaik_lrZRaHtly7LgP3quiiW4KaPFvLRP7SGQu961MtdoRdfkuqgs7Zzb1Tfv8VDueFxCw-WNpVufv-dla_d_mwyfyssXs7fgNT0zQHnyYJBPkseT8Y_1wlVL91DE7PsN2IH48C5kEI5O6ysqwf7_KOqz_PmAJJo3hLqTy6Tjx5KeEWADTfo7-wI8Lo_lrrk3jnezloSiwidOs8ACBCp05ZhSDZ4RRIlKLVexPJRpZ3huVGyNQXvH_FDFj-VQcwGcsFyd_x47ciFEWLy4rN8WV0iH8Wru6m2wQm9gCcPVAaaC3fm58HCBH3wkeNtqFSefI4lk9P4yyOqRzfS-Ls1wS1ahsrv113cLJr5DNgFQrbWTti8YMFGpsOUwzo0VXApqRMXfonM6CBFtZNRTAcfW7hJ4LU-Tf21K9-7knj2bukU1kOJP0SGJ5FF987_kHFq9EJeXQl-S74tDzUV2SrIpCu6unKsSxDIiZ6-7fF40hrEeEr9UvE2CFTXdV2xYieBpt4ZmTEa-CKrS903uGmNrNEOnDvfXVrexM-iD8zYtiHwC2DZ6t3-wGKnV-l6aFBnmpgrxOmghVNe0Jz-nGpgHuTu8CTkWP3Q7adh3YNn9OUAMgB80ac8c2OWbuoWfSlvvHLk7fMfo0psKQxjpt_MQ74vHyaWe8O97BOGld5u2ycH-MnsnunFGfLgeET19GFpH6ofWvHt8kP0NGo.gx8p4HZ5h8FwzCIKdmiVAfjrPRWxWY9mJGJA6IIuKIE",
  "tripType": "ONE_WAY",
  "booker": {
    "name": "Raj Kumar",
    "email": "raj@example-agency.in",
    "phone": "+919800000000"
  }
}
```

**Response**

```json
{
  "success": true,
  "statusCode": 201,
  "data": {
    "id": "bkg_034nVJSoVy7WgMmcQvWHJA",
    "supplierCode": "kitionz_test_air",
    "seller": {
      "name": "Kitionz Test Air",
      "website": null,
      "supportPhone": null,
      "supportEmail": null
    },
    "environment": "SANDBOX",
    "status": "FAILED",
    "bookingMode": "LIVE",
    "bookingChannel": "API",
    "supplierReference": null,
    "pnr": null,
    "ticketingTimeLimit": null,
    "booker": {
      "name": "Raj Kumar",
      "email": "raj@example-agency.in",
      "phone": "+919800000000"
    },
    "passengers": [],
    "segments": [],
    "events": [
      {
        "id": "bkgevent_034nVJSqGgMpuSARk6yd2Z",
        "eventType": "BOOK_FAILED",
        "status": "ERROR",
        "errorCode": "SUPPLIER_BOOK_FAILED",
        "errorMessage": "The supplier could not complete this booking request.",
        "createdAt": "2026-10-28T02:02:18.990Z"
      }
    ],
    "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": 5824,
      "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": null,
          "total": null,
          "baseFare": null,
          "taxes": null
        }
      ],
      "infantFare": null
    },
    "quotedTotalAmount": 5824,
    "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": {
      "code": "SUPPLIER_BOOK_FAILED",
      "message": "The supplier could not complete this booking request."
    },
    "nextAction": {
      "code": "SEARCH_AGAIN",
      "description": "Nothing was booked and nothing was charged. Search again and book another offer.",
      "method": null,
      "path": null,
      "pollAfterSeconds": null,
      "deadlineAt": null
    },
    "bookedAt": "2026-10-28T02:02:18.973Z",
    "createdAt": "2026-10-28T02:02:18.973Z",
    "updatedAt": "2026-10-28T02:02:18.987Z",
    "sourceCode": "kitionz_test_air",
    "supplier": {
      "name": "Kitionz Test Air",
      "website": null,
      "supportPhone": null,
      "supportEmail": null
    },
    "returnSupplier": null,
    "originCode": "DEL",
    "destCode": "BOM",
    "totalAmount": 5824,
    "currency": "INR",
    "fareBreakdown": {
      "tenantTotal": 5824,
      "currency": "INR",
      "composition": null,
      "published": null,
      "taxComponents": [],
      "commercials": [],
      "perPax": [
        {
          "paxType": "ADT",
          "count": 1,
          "perHeadTotal": null,
          "baseFare": null,
          "totalTax": null
        }
      ]
    },
    "cabin": null
  },
  "meta": {
    "requestId": "req_034nVJSl6MpC7D7IVRH45u",
    "timestamp": "2026-10-28T02:02:19.026Z",
    "path": "/v1/flights/book",
    "method": "POST"
  }
}
```

**SDK Code**

```python Sold out at book
import requests

url = "https://sandbox-api.kitionz.com/v1/flights/book"

payload = {
    "offerId": "floffer_034nVJS2qZg5JWLWcsYmlL",
    "adults": 1,
    "departureDate": "2026-11-30",
    "passengers": [
        {
            "title": "MR",
            "firstName": "Raj",
            "passengerType": "ADULT",
            "lastName": "Kumar"
        }
    ],
    "quoteToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.fVPDaj6Ic381QSo1ohDyN3KdgAUibjc_hRP0gY_y4GUUwVIHM8tVKMF4e5TjZnF68DCL9NuPBN32aC7jSDsz1XrHaR-0Ezk7_fc2DK3MBezS5PE4mkT8REaRxCnaBhxC1SULHYdXUqWEguN0DEN1pBIx3n_UToS7utMCRSgRLbXrzB5C7ivmOUcdkRK8wg0PI7ndht30EzbFSlfl83B2cKGAomA62a22q3aYK8j1BnOBkYKHGCF8fkKEZ6gwEMOTD8_rd2LifdcTspk-NaLP851TlkGQZlXsksPj-RtxQtVblG65Ry-Z1vxdsdE0WkK2oyGw4HZ6RRDIS9YMSD6xtTQJ3qJhvjiXLWW7BqYn81-rf36uD_wliSY9J_bdAe7YUP96PgCga9QMImhAgRXJULhmfPhATuzidWE9fMxok7-_g14KESIg373d6HR91cKIVbkdMlZUHZqIGupf0DeMsF0kC4bSG5cLZrljF7LzVi0EIWMoTyL8Ygi5zE0pheVFy_FegZShBetXGahTd4kpGDtAOqMLjWsgLaGlBLUi2gULDljxgzFXoRjU8mjJZZjqnzqpjZHdtjivdBEDJYtqw2odpGDkFJnu6QJIFzPrSOvphTouuGDuyxVtVl4zJZUFRpElSZf2acI9tzz2nFsqvG_Td1MbmarssGUJD2ZW9TiW8hKcsHqvilhivjWaJF_-osCJGHIE-OjrN8rWfz6sDjJv8cLjyNe8op5blGMjvFgdRVXaUDhr8erNNYaik_lrZRaHtly7LgP3quiiW4KaPFvLRP7SGQu961MtdoRdfkuqgs7Zzb1Tfv8VDueFxCw-WNpVufv-dla_d_mwyfyssXs7fgNT0zQHnyYJBPkseT8Y_1wlVL91DE7PsN2IH48C5kEI5O6ysqwf7_KOqz_PmAJJo3hLqTy6Tjx5KeEWADTfo7-wI8Lo_lrrk3jnezloSiwidOs8ACBCp05ZhSDZ4RRIlKLVexPJRpZ3huVGyNQXvH_FDFj-VQcwGcsFyd_x47ciFEWLy4rN8WV0iH8Wru6m2wQm9gCcPVAaaC3fm58HCBH3wkeNtqFSefI4lk9P4yyOqRzfS-Ls1wS1ahsrv113cLJr5DNgFQrbWTti8YMFGpsOUwzo0VXApqRMXfonM6CBFtZNRTAcfW7hJ4LU-Tf21K9-7knj2bukU1kOJP0SGJ5FF987_kHFq9EJeXQl-S74tDzUV2SrIpCu6unKsSxDIiZ6-7fF40hrEeEr9UvE2CFTXdV2xYieBpt4ZmTEa-CKrS903uGmNrNEOnDvfXVrexM-iD8zYtiHwC2DZ6t3-wGKnV-l6aFBnmpgrxOmghVNe0Jz-nGpgHuTu8CTkWP3Q7adh3YNn9OUAMgB80ac8c2OWbuoWfSlvvHLk7fMfo0psKQxjpt_MQ74vHyaWe8O97BOGld5u2ycH-MnsnunFGfLgeET19GFpH6ofWvHt8kP0NGo.gx8p4HZ5h8FwzCIKdmiVAfjrPRWxWY9mJGJA6IIuKIE",
    "tripType": "ONE_WAY",
    "booker": {
        "name": "Raj Kumar",
        "email": "raj@example-agency.in",
        "phone": "+919800000000"
    }
}
headers = {
    "Idempotency-Key": "replace-with-a-new-uuid-sold-out-at-book",
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Sold out at book
const url = 'https://sandbox-api.kitionz.com/v1/flights/book';
const options = {
  method: 'POST',
  headers: {
    'Idempotency-Key': 'replace-with-a-new-uuid-sold-out-at-book',
    Authorization: 'Bearer <token>',
    'Content-Type': 'application/json'
  },
  body: '{"offerId":"floffer_034nVJS2qZg5JWLWcsYmlL","adults":1,"departureDate":"2026-11-30","passengers":[{"title":"MR","firstName":"Raj","passengerType":"ADULT","lastName":"Kumar"}],"quoteToken":"eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.fVPDaj6Ic381QSo1ohDyN3KdgAUibjc_hRP0gY_y4GUUwVIHM8tVKMF4e5TjZnF68DCL9NuPBN32aC7jSDsz1XrHaR-0Ezk7_fc2DK3MBezS5PE4mkT8REaRxCnaBhxC1SULHYdXUqWEguN0DEN1pBIx3n_UToS7utMCRSgRLbXrzB5C7ivmOUcdkRK8wg0PI7ndht30EzbFSlfl83B2cKGAomA62a22q3aYK8j1BnOBkYKHGCF8fkKEZ6gwEMOTD8_rd2LifdcTspk-NaLP851TlkGQZlXsksPj-RtxQtVblG65Ry-Z1vxdsdE0WkK2oyGw4HZ6RRDIS9YMSD6xtTQJ3qJhvjiXLWW7BqYn81-rf36uD_wliSY9J_bdAe7YUP96PgCga9QMImhAgRXJULhmfPhATuzidWE9fMxok7-_g14KESIg373d6HR91cKIVbkdMlZUHZqIGupf0DeMsF0kC4bSG5cLZrljF7LzVi0EIWMoTyL8Ygi5zE0pheVFy_FegZShBetXGahTd4kpGDtAOqMLjWsgLaGlBLUi2gULDljxgzFXoRjU8mjJZZjqnzqpjZHdtjivdBEDJYtqw2odpGDkFJnu6QJIFzPrSOvphTouuGDuyxVtVl4zJZUFRpElSZf2acI9tzz2nFsqvG_Td1MbmarssGUJD2ZW9TiW8hKcsHqvilhivjWaJF_-osCJGHIE-OjrN8rWfz6sDjJv8cLjyNe8op5blGMjvFgdRVXaUDhr8erNNYaik_lrZRaHtly7LgP3quiiW4KaPFvLRP7SGQu961MtdoRdfkuqgs7Zzb1Tfv8VDueFxCw-WNpVufv-dla_d_mwyfyssXs7fgNT0zQHnyYJBPkseT8Y_1wlVL91DE7PsN2IH48C5kEI5O6ysqwf7_KOqz_PmAJJo3hLqTy6Tjx5KeEWADTfo7-wI8Lo_lrrk3jnezloSiwidOs8ACBCp05ZhSDZ4RRIlKLVexPJRpZ3huVGyNQXvH_FDFj-VQcwGcsFyd_x47ciFEWLy4rN8WV0iH8Wru6m2wQm9gCcPVAaaC3fm58HCBH3wkeNtqFSefI4lk9P4yyOqRzfS-Ls1wS1ahsrv113cLJr5DNgFQrbWTti8YMFGpsOUwzo0VXApqRMXfonM6CBFtZNRTAcfW7hJ4LU-Tf21K9-7knj2bukU1kOJP0SGJ5FF987_kHFq9EJeXQl-S74tDzUV2SrIpCu6unKsSxDIiZ6-7fF40hrEeEr9UvE2CFTXdV2xYieBpt4ZmTEa-CKrS903uGmNrNEOnDvfXVrexM-iD8zYtiHwC2DZ6t3-wGKnV-l6aFBnmpgrxOmghVNe0Jz-nGpgHuTu8CTkWP3Q7adh3YNn9OUAMgB80ac8c2OWbuoWfSlvvHLk7fMfo0psKQxjpt_MQ74vHyaWe8O97BOGld5u2ycH-MnsnunFGfLgeET19GFpH6ofWvHt8kP0NGo.gx8p4HZ5h8FwzCIKdmiVAfjrPRWxWY9mJGJA6IIuKIE","tripType":"ONE_WAY","booker":{"name":"Raj Kumar","email":"raj@example-agency.in","phone":"+919800000000"}}'
};

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

```go Sold out at book
package main

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

func main() {

	url := "https://sandbox-api.kitionz.com/v1/flights/book"

	payload := strings.NewReader("{\n  \"offerId\": \"floffer_034nVJS2qZg5JWLWcsYmlL\",\n  \"adults\": 1,\n  \"departureDate\": \"2026-11-30\",\n  \"passengers\": [\n    {\n      \"title\": \"MR\",\n      \"firstName\": \"Raj\",\n      \"passengerType\": \"ADULT\",\n      \"lastName\": \"Kumar\"\n    }\n  ],\n  \"quoteToken\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.fVPDaj6Ic381QSo1ohDyN3KdgAUibjc_hRP0gY_y4GUUwVIHM8tVKMF4e5TjZnF68DCL9NuPBN32aC7jSDsz1XrHaR-0Ezk7_fc2DK3MBezS5PE4mkT8REaRxCnaBhxC1SULHYdXUqWEguN0DEN1pBIx3n_UToS7utMCRSgRLbXrzB5C7ivmOUcdkRK8wg0PI7ndht30EzbFSlfl83B2cKGAomA62a22q3aYK8j1BnOBkYKHGCF8fkKEZ6gwEMOTD8_rd2LifdcTspk-NaLP851TlkGQZlXsksPj-RtxQtVblG65Ry-Z1vxdsdE0WkK2oyGw4HZ6RRDIS9YMSD6xtTQJ3qJhvjiXLWW7BqYn81-rf36uD_wliSY9J_bdAe7YUP96PgCga9QMImhAgRXJULhmfPhATuzidWE9fMxok7-_g14KESIg373d6HR91cKIVbkdMlZUHZqIGupf0DeMsF0kC4bSG5cLZrljF7LzVi0EIWMoTyL8Ygi5zE0pheVFy_FegZShBetXGahTd4kpGDtAOqMLjWsgLaGlBLUi2gULDljxgzFXoRjU8mjJZZjqnzqpjZHdtjivdBEDJYtqw2odpGDkFJnu6QJIFzPrSOvphTouuGDuyxVtVl4zJZUFRpElSZf2acI9tzz2nFsqvG_Td1MbmarssGUJD2ZW9TiW8hKcsHqvilhivjWaJF_-osCJGHIE-OjrN8rWfz6sDjJv8cLjyNe8op5blGMjvFgdRVXaUDhr8erNNYaik_lrZRaHtly7LgP3quiiW4KaPFvLRP7SGQu961MtdoRdfkuqgs7Zzb1Tfv8VDueFxCw-WNpVufv-dla_d_mwyfyssXs7fgNT0zQHnyYJBPkseT8Y_1wlVL91DE7PsN2IH48C5kEI5O6ysqwf7_KOqz_PmAJJo3hLqTy6Tjx5KeEWADTfo7-wI8Lo_lrrk3jnezloSiwidOs8ACBCp05ZhSDZ4RRIlKLVexPJRpZ3huVGyNQXvH_FDFj-VQcwGcsFyd_x47ciFEWLy4rN8WV0iH8Wru6m2wQm9gCcPVAaaC3fm58HCBH3wkeNtqFSefI4lk9P4yyOqRzfS-Ls1wS1ahsrv113cLJr5DNgFQrbWTti8YMFGpsOUwzo0VXApqRMXfonM6CBFtZNRTAcfW7hJ4LU-Tf21K9-7knj2bukU1kOJP0SGJ5FF987_kHFq9EJeXQl-S74tDzUV2SrIpCu6unKsSxDIiZ6-7fF40hrEeEr9UvE2CFTXdV2xYieBpt4ZmTEa-CKrS903uGmNrNEOnDvfXVrexM-iD8zYtiHwC2DZ6t3-wGKnV-l6aFBnmpgrxOmghVNe0Jz-nGpgHuTu8CTkWP3Q7adh3YNn9OUAMgB80ac8c2OWbuoWfSlvvHLk7fMfo0psKQxjpt_MQ74vHyaWe8O97BOGld5u2ycH-MnsnunFGfLgeET19GFpH6ofWvHt8kP0NGo.gx8p4HZ5h8FwzCIKdmiVAfjrPRWxWY9mJGJA6IIuKIE\",\n  \"tripType\": \"ONE_WAY\",\n  \"booker\": {\n    \"name\": \"Raj Kumar\",\n    \"email\": \"raj@example-agency.in\",\n    \"phone\": \"+919800000000\"\n  }\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Idempotency-Key", "replace-with-a-new-uuid-sold-out-at-book")
	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

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

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

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

}
```

```ruby Sold out at book
require 'uri'
require 'net/http'

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

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

request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = 'replace-with-a-new-uuid-sold-out-at-book'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"offerId\": \"floffer_034nVJS2qZg5JWLWcsYmlL\",\n  \"adults\": 1,\n  \"departureDate\": \"2026-11-30\",\n  \"passengers\": [\n    {\n      \"title\": \"MR\",\n      \"firstName\": \"Raj\",\n      \"passengerType\": \"ADULT\",\n      \"lastName\": \"Kumar\"\n    }\n  ],\n  \"quoteToken\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.fVPDaj6Ic381QSo1ohDyN3KdgAUibjc_hRP0gY_y4GUUwVIHM8tVKMF4e5TjZnF68DCL9NuPBN32aC7jSDsz1XrHaR-0Ezk7_fc2DK3MBezS5PE4mkT8REaRxCnaBhxC1SULHYdXUqWEguN0DEN1pBIx3n_UToS7utMCRSgRLbXrzB5C7ivmOUcdkRK8wg0PI7ndht30EzbFSlfl83B2cKGAomA62a22q3aYK8j1BnOBkYKHGCF8fkKEZ6gwEMOTD8_rd2LifdcTspk-NaLP851TlkGQZlXsksPj-RtxQtVblG65Ry-Z1vxdsdE0WkK2oyGw4HZ6RRDIS9YMSD6xtTQJ3qJhvjiXLWW7BqYn81-rf36uD_wliSY9J_bdAe7YUP96PgCga9QMImhAgRXJULhmfPhATuzidWE9fMxok7-_g14KESIg373d6HR91cKIVbkdMlZUHZqIGupf0DeMsF0kC4bSG5cLZrljF7LzVi0EIWMoTyL8Ygi5zE0pheVFy_FegZShBetXGahTd4kpGDtAOqMLjWsgLaGlBLUi2gULDljxgzFXoRjU8mjJZZjqnzqpjZHdtjivdBEDJYtqw2odpGDkFJnu6QJIFzPrSOvphTouuGDuyxVtVl4zJZUFRpElSZf2acI9tzz2nFsqvG_Td1MbmarssGUJD2ZW9TiW8hKcsHqvilhivjWaJF_-osCJGHIE-OjrN8rWfz6sDjJv8cLjyNe8op5blGMjvFgdRVXaUDhr8erNNYaik_lrZRaHtly7LgP3quiiW4KaPFvLRP7SGQu961MtdoRdfkuqgs7Zzb1Tfv8VDueFxCw-WNpVufv-dla_d_mwyfyssXs7fgNT0zQHnyYJBPkseT8Y_1wlVL91DE7PsN2IH48C5kEI5O6ysqwf7_KOqz_PmAJJo3hLqTy6Tjx5KeEWADTfo7-wI8Lo_lrrk3jnezloSiwidOs8ACBCp05ZhSDZ4RRIlKLVexPJRpZ3huVGyNQXvH_FDFj-VQcwGcsFyd_x47ciFEWLy4rN8WV0iH8Wru6m2wQm9gCcPVAaaC3fm58HCBH3wkeNtqFSefI4lk9P4yyOqRzfS-Ls1wS1ahsrv113cLJr5DNgFQrbWTti8YMFGpsOUwzo0VXApqRMXfonM6CBFtZNRTAcfW7hJ4LU-Tf21K9-7knj2bukU1kOJP0SGJ5FF987_kHFq9EJeXQl-S74tDzUV2SrIpCu6unKsSxDIiZ6-7fF40hrEeEr9UvE2CFTXdV2xYieBpt4ZmTEa-CKrS903uGmNrNEOnDvfXVrexM-iD8zYtiHwC2DZ6t3-wGKnV-l6aFBnmpgrxOmghVNe0Jz-nGpgHuTu8CTkWP3Q7adh3YNn9OUAMgB80ac8c2OWbuoWfSlvvHLk7fMfo0psKQxjpt_MQ74vHyaWe8O97BOGld5u2ycH-MnsnunFGfLgeET19GFpH6ofWvHt8kP0NGo.gx8p4HZ5h8FwzCIKdmiVAfjrPRWxWY9mJGJA6IIuKIE\",\n  \"tripType\": \"ONE_WAY\",\n  \"booker\": {\n    \"name\": \"Raj Kumar\",\n    \"email\": \"raj@example-agency.in\",\n    \"phone\": \"+919800000000\"\n  }\n}"

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

```java Sold out at book
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://sandbox-api.kitionz.com/v1/flights/book")
  .header("Idempotency-Key", "replace-with-a-new-uuid-sold-out-at-book")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"offerId\": \"floffer_034nVJS2qZg5JWLWcsYmlL\",\n  \"adults\": 1,\n  \"departureDate\": \"2026-11-30\",\n  \"passengers\": [\n    {\n      \"title\": \"MR\",\n      \"firstName\": \"Raj\",\n      \"passengerType\": \"ADULT\",\n      \"lastName\": \"Kumar\"\n    }\n  ],\n  \"quoteToken\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.fVPDaj6Ic381QSo1ohDyN3KdgAUibjc_hRP0gY_y4GUUwVIHM8tVKMF4e5TjZnF68DCL9NuPBN32aC7jSDsz1XrHaR-0Ezk7_fc2DK3MBezS5PE4mkT8REaRxCnaBhxC1SULHYdXUqWEguN0DEN1pBIx3n_UToS7utMCRSgRLbXrzB5C7ivmOUcdkRK8wg0PI7ndht30EzbFSlfl83B2cKGAomA62a22q3aYK8j1BnOBkYKHGCF8fkKEZ6gwEMOTD8_rd2LifdcTspk-NaLP851TlkGQZlXsksPj-RtxQtVblG65Ry-Z1vxdsdE0WkK2oyGw4HZ6RRDIS9YMSD6xtTQJ3qJhvjiXLWW7BqYn81-rf36uD_wliSY9J_bdAe7YUP96PgCga9QMImhAgRXJULhmfPhATuzidWE9fMxok7-_g14KESIg373d6HR91cKIVbkdMlZUHZqIGupf0DeMsF0kC4bSG5cLZrljF7LzVi0EIWMoTyL8Ygi5zE0pheVFy_FegZShBetXGahTd4kpGDtAOqMLjWsgLaGlBLUi2gULDljxgzFXoRjU8mjJZZjqnzqpjZHdtjivdBEDJYtqw2odpGDkFJnu6QJIFzPrSOvphTouuGDuyxVtVl4zJZUFRpElSZf2acI9tzz2nFsqvG_Td1MbmarssGUJD2ZW9TiW8hKcsHqvilhivjWaJF_-osCJGHIE-OjrN8rWfz6sDjJv8cLjyNe8op5blGMjvFgdRVXaUDhr8erNNYaik_lrZRaHtly7LgP3quiiW4KaPFvLRP7SGQu961MtdoRdfkuqgs7Zzb1Tfv8VDueFxCw-WNpVufv-dla_d_mwyfyssXs7fgNT0zQHnyYJBPkseT8Y_1wlVL91DE7PsN2IH48C5kEI5O6ysqwf7_KOqz_PmAJJo3hLqTy6Tjx5KeEWADTfo7-wI8Lo_lrrk3jnezloSiwidOs8ACBCp05ZhSDZ4RRIlKLVexPJRpZ3huVGyNQXvH_FDFj-VQcwGcsFyd_x47ciFEWLy4rN8WV0iH8Wru6m2wQm9gCcPVAaaC3fm58HCBH3wkeNtqFSefI4lk9P4yyOqRzfS-Ls1wS1ahsrv113cLJr5DNgFQrbWTti8YMFGpsOUwzo0VXApqRMXfonM6CBFtZNRTAcfW7hJ4LU-Tf21K9-7knj2bukU1kOJP0SGJ5FF987_kHFq9EJeXQl-S74tDzUV2SrIpCu6unKsSxDIiZ6-7fF40hrEeEr9UvE2CFTXdV2xYieBpt4ZmTEa-CKrS903uGmNrNEOnDvfXVrexM-iD8zYtiHwC2DZ6t3-wGKnV-l6aFBnmpgrxOmghVNe0Jz-nGpgHuTu8CTkWP3Q7adh3YNn9OUAMgB80ac8c2OWbuoWfSlvvHLk7fMfo0psKQxjpt_MQ74vHyaWe8O97BOGld5u2ycH-MnsnunFGfLgeET19GFpH6ofWvHt8kP0NGo.gx8p4HZ5h8FwzCIKdmiVAfjrPRWxWY9mJGJA6IIuKIE\",\n  \"tripType\": \"ONE_WAY\",\n  \"booker\": {\n    \"name\": \"Raj Kumar\",\n    \"email\": \"raj@example-agency.in\",\n    \"phone\": \"+919800000000\"\n  }\n}")
  .asString();
```

```php Sold out at book
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://sandbox-api.kitionz.com/v1/flights/book', [
  'body' => '{
  "offerId": "floffer_034nVJS2qZg5JWLWcsYmlL",
  "adults": 1,
  "departureDate": "2026-11-30",
  "passengers": [
    {
      "title": "MR",
      "firstName": "Raj",
      "passengerType": "ADULT",
      "lastName": "Kumar"
    }
  ],
  "quoteToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.fVPDaj6Ic381QSo1ohDyN3KdgAUibjc_hRP0gY_y4GUUwVIHM8tVKMF4e5TjZnF68DCL9NuPBN32aC7jSDsz1XrHaR-0Ezk7_fc2DK3MBezS5PE4mkT8REaRxCnaBhxC1SULHYdXUqWEguN0DEN1pBIx3n_UToS7utMCRSgRLbXrzB5C7ivmOUcdkRK8wg0PI7ndht30EzbFSlfl83B2cKGAomA62a22q3aYK8j1BnOBkYKHGCF8fkKEZ6gwEMOTD8_rd2LifdcTspk-NaLP851TlkGQZlXsksPj-RtxQtVblG65Ry-Z1vxdsdE0WkK2oyGw4HZ6RRDIS9YMSD6xtTQJ3qJhvjiXLWW7BqYn81-rf36uD_wliSY9J_bdAe7YUP96PgCga9QMImhAgRXJULhmfPhATuzidWE9fMxok7-_g14KESIg373d6HR91cKIVbkdMlZUHZqIGupf0DeMsF0kC4bSG5cLZrljF7LzVi0EIWMoTyL8Ygi5zE0pheVFy_FegZShBetXGahTd4kpGDtAOqMLjWsgLaGlBLUi2gULDljxgzFXoRjU8mjJZZjqnzqpjZHdtjivdBEDJYtqw2odpGDkFJnu6QJIFzPrSOvphTouuGDuyxVtVl4zJZUFRpElSZf2acI9tzz2nFsqvG_Td1MbmarssGUJD2ZW9TiW8hKcsHqvilhivjWaJF_-osCJGHIE-OjrN8rWfz6sDjJv8cLjyNe8op5blGMjvFgdRVXaUDhr8erNNYaik_lrZRaHtly7LgP3quiiW4KaPFvLRP7SGQu961MtdoRdfkuqgs7Zzb1Tfv8VDueFxCw-WNpVufv-dla_d_mwyfyssXs7fgNT0zQHnyYJBPkseT8Y_1wlVL91DE7PsN2IH48C5kEI5O6ysqwf7_KOqz_PmAJJo3hLqTy6Tjx5KeEWADTfo7-wI8Lo_lrrk3jnezloSiwidOs8ACBCp05ZhSDZ4RRIlKLVexPJRpZ3huVGyNQXvH_FDFj-VQcwGcsFyd_x47ciFEWLy4rN8WV0iH8Wru6m2wQm9gCcPVAaaC3fm58HCBH3wkeNtqFSefI4lk9P4yyOqRzfS-Ls1wS1ahsrv113cLJr5DNgFQrbWTti8YMFGpsOUwzo0VXApqRMXfonM6CBFtZNRTAcfW7hJ4LU-Tf21K9-7knj2bukU1kOJP0SGJ5FF987_kHFq9EJeXQl-S74tDzUV2SrIpCu6unKsSxDIiZ6-7fF40hrEeEr9UvE2CFTXdV2xYieBpt4ZmTEa-CKrS903uGmNrNEOnDvfXVrexM-iD8zYtiHwC2DZ6t3-wGKnV-l6aFBnmpgrxOmghVNe0Jz-nGpgHuTu8CTkWP3Q7adh3YNn9OUAMgB80ac8c2OWbuoWfSlvvHLk7fMfo0psKQxjpt_MQ74vHyaWe8O97BOGld5u2ycH-MnsnunFGfLgeET19GFpH6ofWvHt8kP0NGo.gx8p4HZ5h8FwzCIKdmiVAfjrPRWxWY9mJGJA6IIuKIE",
  "tripType": "ONE_WAY",
  "booker": {
    "name": "Raj Kumar",
    "email": "raj@example-agency.in",
    "phone": "+919800000000"
  }
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
    'Idempotency-Key' => 'replace-with-a-new-uuid-sold-out-at-book',
  ],
]);

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

```csharp Sold out at book
using RestSharp;

var client = new RestClient("https://sandbox-api.kitionz.com/v1/flights/book");
var request = new RestRequest(Method.POST);
request.AddHeader("Idempotency-Key", "replace-with-a-new-uuid-sold-out-at-book");
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"offerId\": \"floffer_034nVJS2qZg5JWLWcsYmlL\",\n  \"adults\": 1,\n  \"departureDate\": \"2026-11-30\",\n  \"passengers\": [\n    {\n      \"title\": \"MR\",\n      \"firstName\": \"Raj\",\n      \"passengerType\": \"ADULT\",\n      \"lastName\": \"Kumar\"\n    }\n  ],\n  \"quoteToken\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.fVPDaj6Ic381QSo1ohDyN3KdgAUibjc_hRP0gY_y4GUUwVIHM8tVKMF4e5TjZnF68DCL9NuPBN32aC7jSDsz1XrHaR-0Ezk7_fc2DK3MBezS5PE4mkT8REaRxCnaBhxC1SULHYdXUqWEguN0DEN1pBIx3n_UToS7utMCRSgRLbXrzB5C7ivmOUcdkRK8wg0PI7ndht30EzbFSlfl83B2cKGAomA62a22q3aYK8j1BnOBkYKHGCF8fkKEZ6gwEMOTD8_rd2LifdcTspk-NaLP851TlkGQZlXsksPj-RtxQtVblG65Ry-Z1vxdsdE0WkK2oyGw4HZ6RRDIS9YMSD6xtTQJ3qJhvjiXLWW7BqYn81-rf36uD_wliSY9J_bdAe7YUP96PgCga9QMImhAgRXJULhmfPhATuzidWE9fMxok7-_g14KESIg373d6HR91cKIVbkdMlZUHZqIGupf0DeMsF0kC4bSG5cLZrljF7LzVi0EIWMoTyL8Ygi5zE0pheVFy_FegZShBetXGahTd4kpGDtAOqMLjWsgLaGlBLUi2gULDljxgzFXoRjU8mjJZZjqnzqpjZHdtjivdBEDJYtqw2odpGDkFJnu6QJIFzPrSOvphTouuGDuyxVtVl4zJZUFRpElSZf2acI9tzz2nFsqvG_Td1MbmarssGUJD2ZW9TiW8hKcsHqvilhivjWaJF_-osCJGHIE-OjrN8rWfz6sDjJv8cLjyNe8op5blGMjvFgdRVXaUDhr8erNNYaik_lrZRaHtly7LgP3quiiW4KaPFvLRP7SGQu961MtdoRdfkuqgs7Zzb1Tfv8VDueFxCw-WNpVufv-dla_d_mwyfyssXs7fgNT0zQHnyYJBPkseT8Y_1wlVL91DE7PsN2IH48C5kEI5O6ysqwf7_KOqz_PmAJJo3hLqTy6Tjx5KeEWADTfo7-wI8Lo_lrrk3jnezloSiwidOs8ACBCp05ZhSDZ4RRIlKLVexPJRpZ3huVGyNQXvH_FDFj-VQcwGcsFyd_x47ciFEWLy4rN8WV0iH8Wru6m2wQm9gCcPVAaaC3fm58HCBH3wkeNtqFSefI4lk9P4yyOqRzfS-Ls1wS1ahsrv113cLJr5DNgFQrbWTti8YMFGpsOUwzo0VXApqRMXfonM6CBFtZNRTAcfW7hJ4LU-Tf21K9-7knj2bukU1kOJP0SGJ5FF987_kHFq9EJeXQl-S74tDzUV2SrIpCu6unKsSxDIiZ6-7fF40hrEeEr9UvE2CFTXdV2xYieBpt4ZmTEa-CKrS903uGmNrNEOnDvfXVrexM-iD8zYtiHwC2DZ6t3-wGKnV-l6aFBnmpgrxOmghVNe0Jz-nGpgHuTu8CTkWP3Q7adh3YNn9OUAMgB80ac8c2OWbuoWfSlvvHLk7fMfo0psKQxjpt_MQ74vHyaWe8O97BOGld5u2ycH-MnsnunFGfLgeET19GFpH6ofWvHt8kP0NGo.gx8p4HZ5h8FwzCIKdmiVAfjrPRWxWY9mJGJA6IIuKIE\",\n  \"tripType\": \"ONE_WAY\",\n  \"booker\": {\n    \"name\": \"Raj Kumar\",\n    \"email\": \"raj@example-agency.in\",\n    \"phone\": \"+919800000000\"\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Sold out at book
import Foundation

let headers = [
  "Idempotency-Key": "replace-with-a-new-uuid-sold-out-at-book",
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "offerId": "floffer_034nVJS2qZg5JWLWcsYmlL",
  "adults": 1,
  "departureDate": "2026-11-30",
  "passengers": [
    [
      "title": "MR",
      "firstName": "Raj",
      "passengerType": "ADULT",
      "lastName": "Kumar"
    ]
  ],
  "quoteToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.fVPDaj6Ic381QSo1ohDyN3KdgAUibjc_hRP0gY_y4GUUwVIHM8tVKMF4e5TjZnF68DCL9NuPBN32aC7jSDsz1XrHaR-0Ezk7_fc2DK3MBezS5PE4mkT8REaRxCnaBhxC1SULHYdXUqWEguN0DEN1pBIx3n_UToS7utMCRSgRLbXrzB5C7ivmOUcdkRK8wg0PI7ndht30EzbFSlfl83B2cKGAomA62a22q3aYK8j1BnOBkYKHGCF8fkKEZ6gwEMOTD8_rd2LifdcTspk-NaLP851TlkGQZlXsksPj-RtxQtVblG65Ry-Z1vxdsdE0WkK2oyGw4HZ6RRDIS9YMSD6xtTQJ3qJhvjiXLWW7BqYn81-rf36uD_wliSY9J_bdAe7YUP96PgCga9QMImhAgRXJULhmfPhATuzidWE9fMxok7-_g14KESIg373d6HR91cKIVbkdMlZUHZqIGupf0DeMsF0kC4bSG5cLZrljF7LzVi0EIWMoTyL8Ygi5zE0pheVFy_FegZShBetXGahTd4kpGDtAOqMLjWsgLaGlBLUi2gULDljxgzFXoRjU8mjJZZjqnzqpjZHdtjivdBEDJYtqw2odpGDkFJnu6QJIFzPrSOvphTouuGDuyxVtVl4zJZUFRpElSZf2acI9tzz2nFsqvG_Td1MbmarssGUJD2ZW9TiW8hKcsHqvilhivjWaJF_-osCJGHIE-OjrN8rWfz6sDjJv8cLjyNe8op5blGMjvFgdRVXaUDhr8erNNYaik_lrZRaHtly7LgP3quiiW4KaPFvLRP7SGQu961MtdoRdfkuqgs7Zzb1Tfv8VDueFxCw-WNpVufv-dla_d_mwyfyssXs7fgNT0zQHnyYJBPkseT8Y_1wlVL91DE7PsN2IH48C5kEI5O6ysqwf7_KOqz_PmAJJo3hLqTy6Tjx5KeEWADTfo7-wI8Lo_lrrk3jnezloSiwidOs8ACBCp05ZhSDZ4RRIlKLVexPJRpZ3huVGyNQXvH_FDFj-VQcwGcsFyd_x47ciFEWLy4rN8WV0iH8Wru6m2wQm9gCcPVAaaC3fm58HCBH3wkeNtqFSefI4lk9P4yyOqRzfS-Ls1wS1ahsrv113cLJr5DNgFQrbWTti8YMFGpsOUwzo0VXApqRMXfonM6CBFtZNRTAcfW7hJ4LU-Tf21K9-7knj2bukU1kOJP0SGJ5FF987_kHFq9EJeXQl-S74tDzUV2SrIpCu6unKsSxDIiZ6-7fF40hrEeEr9UvE2CFTXdV2xYieBpt4ZmTEa-CKrS903uGmNrNEOnDvfXVrexM-iD8zYtiHwC2DZ6t3-wGKnV-l6aFBnmpgrxOmghVNe0Jz-nGpgHuTu8CTkWP3Q7adh3YNn9OUAMgB80ac8c2OWbuoWfSlvvHLk7fMfo0psKQxjpt_MQ74vHyaWe8O97BOGld5u2ycH-MnsnunFGfLgeET19GFpH6ofWvHt8kP0NGo.gx8p4HZ5h8FwzCIKdmiVAfjrPRWxWY9mJGJA6IIuKIE",
  "tripType": "ONE_WAY",
  "booker": [
    "name": "Raj Kumar",
    "email": "raj@example-agency.in",
    "phone": "+919800000000"
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://sandbox-api.kitionz.com/v1/flights/book")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

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()
```

### Held booking

**Request**

```json
{
  "offerId": "floffer_034nVJS2qYvDvBMfFo5aXf",
  "adults": 1,
  "departureDate": "2026-11-30",
  "passengers": [
    {
      "title": "MR",
      "firstName": "Raj",
      "passengerType": "ADULT",
      "lastName": "Kumar"
    }
  ],
  "quoteToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.YMO_RDh-s1yG_s5_OS-n9gkMoV-9Fp8U9X7RBn5FYTzvqhIOX9G5E8iY-KRNuU_UKsPI9YYZQKlFSfXcMuWeA31n7Jc5f7IdA4JeQ3fnb_5i73f-yTXtCBfq4d5hZu9ADTPsApRsTkAYP8ZPs5d6q-A2WXU0Lba6uFkZZ65jQVxHXxnmn-ycJ2WQcmlSbtaDhAgGwoGDyy9idawGRpH5kDJp0QpGweimiNTqtkUqiLs9u9YauX_krPaEh7Ln1chiRLgN49olYRyPvgfY0YRhkU7KaxxnZuxJZlGBmpf4ckNeDARQEbbPu1oazs3YgBkdQIOKegTcouNpCWksOlRo-Va89bjisf3tXMc2iZnxfhZNkp6tcbfMUBeyt5dxWLBZk2NobsgFvPipXybiMPE3nagVSNZML2X56NM6NSgG_htJAtzz41eXysijj-ENs-N1T1yJmyhryI-SEvl63Vz8fq_FUi1id80_M5CufV5Ven7hA-miz9knjG_LMhdJrvMZixSQa5z3FM1AgoJkha8znRPkEECux_w0RY3i8zNyETMIQtG6BJSUjwdllR0hrXrIdgp3q-OJPMkLQDpX0voy-KaTaOArP9pZYCfD-O_14mNXNMcGyYB3Yp-AFgcZlRJwNy80inXjFKCCtHgSQosQ9EaysNQmkNekrxAzJW8-ScuKqYu7ZOLnWbwQiXBhsmk5t6U47HmUoe-8oBirojms5amV4-J0ue_XkLqhsPGaN5j-ftDOyc9wVWE_Xg45wDD1pNNvJmfoSG_zTzeXxhQfXWSszztGM_9hCgZDNqHJDUch3HwMhpBKjuM1peJNhNCoDEc81flg-yAz_tzHt5wr15q7pmy4rARMOnK6euWXYp1ZFj81-iOOIzYilEmYFV0Dn9JGdKO9e1AHvc_mXYiXusGnjizW8Lo3sTs5KoDCMGCE2D9Xl3bf0RjNrqRiJwJXXOUDomjZ8YSSFpWmD6nUJga5dlSk2mzLB-Pnm5XocalzAxQt3KodqOl5vXbiyJ_6R-EQcG9EMG5QjuZFbTWTB7LbtL3plabGqkmC_mJdmeaTSxPBliANNH7kYSV0r93IjOEEXGyENJK57gFX2j0ULgTvV1KG-xFEQcoZOo2Etp7dbluRO4YMWdn67JF7deUoSoMuo8jhPegc6Jel3RY0KNhmEsXss0w_rOwiFYcOo6gdEN4Ii2MWsbq4-kybHzHndMd6Fvp3Da2_spOdridPMaellyvZMQP1rZmk6Si6ABTl2Nw1CmCfUWDfoAio5DFVV9ptUaiSOrksL4VaJ5nm1uV3hyIJfAiFtELszipRcO96Hhb5aDqSjve0tnF0CHivrRR94jEZHDYhNhiqwGPvYFFAAbP_UcBC6u1CtQvMrPASITI6dxW4bKndUOPUBePV5AT7QYzOEXUnk2vuUaXRuNXVqXhrfxXjwpcc76iUpIcLdAT6jQOgrJnDqXLbV8Gerve7jtZ8WoLX.HKoeXRW6AS3LKEhLrK1jK-_jyqW0fSvnT84Aik00XhE",
  "tripType": "ONE_WAY",
  "booker": {
    "name": "Raj Kumar",
    "email": "raj@example-agency.in",
    "phone": "+919800000000"
  },
  "bookingMode": "HOLD"
}
```

**Response**

```json
{
  "success": true,
  "statusCode": 201,
  "data": {
    "id": "bkg_034nVJTkDsCsHQZf293Bgq",
    "supplierCode": "kitionz_test_air",
    "seller": {
      "name": "Kitionz Test Air",
      "website": null,
      "supportPhone": null,
      "supportEmail": null
    },
    "environment": "SANDBOX",
    "status": "HELD",
    "bookingMode": "LIVE",
    "bookingChannel": "API",
    "supplierReference": "SIM-HOLD-1793152939-3MRXK4LPRP",
    "pnr": "TESTXSAFXQ",
    "ticketingTimeLimit": "2026-10-29T02:02:19.000Z",
    "booker": {
      "name": "Raj Kumar",
      "email": "raj@example-agency.in",
      "phone": "+919800000000"
    },
    "passengers": [
      {
        "id": "bkgpax_034nVJTmkvreqyRklsf7d2",
        "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_034nVJTn96nGEIbG6riJAU",
        "segmentIndex": 0,
        "legType": "OUTBOUND",
        "legIndex": 0,
        "marketingCarrier": {
          "iataCode": "ZZ",
          "name": "Zz",
          "flightNumber": "108"
        },
        "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-30T17:30:00+05:30",
        "arrivalTime": "2026-11-30T19:40:00+05:30",
        "technicalStops": [],
        "unnamedStops": 0,
        "layoverAfterMinutes": null,
        "departureTerminal": "3",
        "arrivalTerminal": "2",
        "cabin": null,
        "airlineCode": "ZZ",
        "airlineName": "Zz",
        "flightNumber": "108",
        "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_034nVJTnR7cWcKWJ5pIXD6",
        "eventType": "FARE_RECHECK_PASSED",
        "status": "SUCCESS",
        "errorCode": null,
        "errorMessage": null,
        "createdAt": "2026-10-28T02:02:19.597Z"
      },
      {
        "id": "bkgevent_034nVJTnR6Qn9WqjmYGuPi",
        "eventType": "BOOK_HELD",
        "status": "SUCCESS",
        "errorCode": null,
        "errorMessage": null,
        "createdAt": "2026-10-28T02:02:19.597Z"
      }
    ],
    "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": 6124,
      "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": 6124,
          "total": 6124,
          "baseFare": null,
          "taxes": null
        }
      ],
      "infantFare": null
    },
    "quotedTotalAmount": 6124,
    "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": "ISSUE_TICKET",
      "description": "The seats are held but not ticketed. Ticket this booking before deadlineAt, or the hold may be released.",
      "method": "POST",
      "path": "/v1/flights/bookings/bkg_034nVJTkDsCsHQZf293Bgq/ticket",
      "pollAfterSeconds": null,
      "deadlineAt": "2026-10-29T02:02:19.000Z"
    },
    "bookedAt": "2026-10-28T02:02:19.584Z",
    "createdAt": "2026-10-28T02:02:19.568Z",
    "updatedAt": "2026-10-28T02:02:19.585Z",
    "sourceCode": "kitionz_test_air",
    "supplier": {
      "name": "Kitionz Test Air",
      "website": null,
      "supportPhone": null,
      "supportEmail": null
    },
    "returnSupplier": null,
    "originCode": "DEL",
    "destCode": "BOM",
    "totalAmount": 6124,
    "currency": "INR",
    "fareBreakdown": {
      "tenantTotal": 6124,
      "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": 6124,
          "baseFare": null,
          "totalTax": null
        }
      ]
    },
    "cabin": null
  },
  "meta": {
    "requestId": "req_034nVJTelENv4q4yKrraA9",
    "timestamp": "2026-10-28T02:02:19.649Z",
    "path": "/v1/flights/book",
    "method": "POST"
  }
}
```

**SDK Code**

```python Held booking
import requests

url = "https://sandbox-api.kitionz.com/v1/flights/book"

payload = {
    "offerId": "floffer_034nVJS2qYvDvBMfFo5aXf",
    "adults": 1,
    "departureDate": "2026-11-30",
    "passengers": [
        {
            "title": "MR",
            "firstName": "Raj",
            "passengerType": "ADULT",
            "lastName": "Kumar"
        }
    ],
    "quoteToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.YMO_RDh-s1yG_s5_OS-n9gkMoV-9Fp8U9X7RBn5FYTzvqhIOX9G5E8iY-KRNuU_UKsPI9YYZQKlFSfXcMuWeA31n7Jc5f7IdA4JeQ3fnb_5i73f-yTXtCBfq4d5hZu9ADTPsApRsTkAYP8ZPs5d6q-A2WXU0Lba6uFkZZ65jQVxHXxnmn-ycJ2WQcmlSbtaDhAgGwoGDyy9idawGRpH5kDJp0QpGweimiNTqtkUqiLs9u9YauX_krPaEh7Ln1chiRLgN49olYRyPvgfY0YRhkU7KaxxnZuxJZlGBmpf4ckNeDARQEbbPu1oazs3YgBkdQIOKegTcouNpCWksOlRo-Va89bjisf3tXMc2iZnxfhZNkp6tcbfMUBeyt5dxWLBZk2NobsgFvPipXybiMPE3nagVSNZML2X56NM6NSgG_htJAtzz41eXysijj-ENs-N1T1yJmyhryI-SEvl63Vz8fq_FUi1id80_M5CufV5Ven7hA-miz9knjG_LMhdJrvMZixSQa5z3FM1AgoJkha8znRPkEECux_w0RY3i8zNyETMIQtG6BJSUjwdllR0hrXrIdgp3q-OJPMkLQDpX0voy-KaTaOArP9pZYCfD-O_14mNXNMcGyYB3Yp-AFgcZlRJwNy80inXjFKCCtHgSQosQ9EaysNQmkNekrxAzJW8-ScuKqYu7ZOLnWbwQiXBhsmk5t6U47HmUoe-8oBirojms5amV4-J0ue_XkLqhsPGaN5j-ftDOyc9wVWE_Xg45wDD1pNNvJmfoSG_zTzeXxhQfXWSszztGM_9hCgZDNqHJDUch3HwMhpBKjuM1peJNhNCoDEc81flg-yAz_tzHt5wr15q7pmy4rARMOnK6euWXYp1ZFj81-iOOIzYilEmYFV0Dn9JGdKO9e1AHvc_mXYiXusGnjizW8Lo3sTs5KoDCMGCE2D9Xl3bf0RjNrqRiJwJXXOUDomjZ8YSSFpWmD6nUJga5dlSk2mzLB-Pnm5XocalzAxQt3KodqOl5vXbiyJ_6R-EQcG9EMG5QjuZFbTWTB7LbtL3plabGqkmC_mJdmeaTSxPBliANNH7kYSV0r93IjOEEXGyENJK57gFX2j0ULgTvV1KG-xFEQcoZOo2Etp7dbluRO4YMWdn67JF7deUoSoMuo8jhPegc6Jel3RY0KNhmEsXss0w_rOwiFYcOo6gdEN4Ii2MWsbq4-kybHzHndMd6Fvp3Da2_spOdridPMaellyvZMQP1rZmk6Si6ABTl2Nw1CmCfUWDfoAio5DFVV9ptUaiSOrksL4VaJ5nm1uV3hyIJfAiFtELszipRcO96Hhb5aDqSjve0tnF0CHivrRR94jEZHDYhNhiqwGPvYFFAAbP_UcBC6u1CtQvMrPASITI6dxW4bKndUOPUBePV5AT7QYzOEXUnk2vuUaXRuNXVqXhrfxXjwpcc76iUpIcLdAT6jQOgrJnDqXLbV8Gerve7jtZ8WoLX.HKoeXRW6AS3LKEhLrK1jK-_jyqW0fSvnT84Aik00XhE",
    "tripType": "ONE_WAY",
    "booker": {
        "name": "Raj Kumar",
        "email": "raj@example-agency.in",
        "phone": "+919800000000"
    },
    "bookingMode": "HOLD"
}
headers = {
    "Idempotency-Key": "replace-with-a-new-uuid-held-booking",
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Held booking
const url = 'https://sandbox-api.kitionz.com/v1/flights/book';
const options = {
  method: 'POST',
  headers: {
    'Idempotency-Key': 'replace-with-a-new-uuid-held-booking',
    Authorization: 'Bearer <token>',
    'Content-Type': 'application/json'
  },
  body: '{"offerId":"floffer_034nVJS2qYvDvBMfFo5aXf","adults":1,"departureDate":"2026-11-30","passengers":[{"title":"MR","firstName":"Raj","passengerType":"ADULT","lastName":"Kumar"}],"quoteToken":"eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.YMO_RDh-s1yG_s5_OS-n9gkMoV-9Fp8U9X7RBn5FYTzvqhIOX9G5E8iY-KRNuU_UKsPI9YYZQKlFSfXcMuWeA31n7Jc5f7IdA4JeQ3fnb_5i73f-yTXtCBfq4d5hZu9ADTPsApRsTkAYP8ZPs5d6q-A2WXU0Lba6uFkZZ65jQVxHXxnmn-ycJ2WQcmlSbtaDhAgGwoGDyy9idawGRpH5kDJp0QpGweimiNTqtkUqiLs9u9YauX_krPaEh7Ln1chiRLgN49olYRyPvgfY0YRhkU7KaxxnZuxJZlGBmpf4ckNeDARQEbbPu1oazs3YgBkdQIOKegTcouNpCWksOlRo-Va89bjisf3tXMc2iZnxfhZNkp6tcbfMUBeyt5dxWLBZk2NobsgFvPipXybiMPE3nagVSNZML2X56NM6NSgG_htJAtzz41eXysijj-ENs-N1T1yJmyhryI-SEvl63Vz8fq_FUi1id80_M5CufV5Ven7hA-miz9knjG_LMhdJrvMZixSQa5z3FM1AgoJkha8znRPkEECux_w0RY3i8zNyETMIQtG6BJSUjwdllR0hrXrIdgp3q-OJPMkLQDpX0voy-KaTaOArP9pZYCfD-O_14mNXNMcGyYB3Yp-AFgcZlRJwNy80inXjFKCCtHgSQosQ9EaysNQmkNekrxAzJW8-ScuKqYu7ZOLnWbwQiXBhsmk5t6U47HmUoe-8oBirojms5amV4-J0ue_XkLqhsPGaN5j-ftDOyc9wVWE_Xg45wDD1pNNvJmfoSG_zTzeXxhQfXWSszztGM_9hCgZDNqHJDUch3HwMhpBKjuM1peJNhNCoDEc81flg-yAz_tzHt5wr15q7pmy4rARMOnK6euWXYp1ZFj81-iOOIzYilEmYFV0Dn9JGdKO9e1AHvc_mXYiXusGnjizW8Lo3sTs5KoDCMGCE2D9Xl3bf0RjNrqRiJwJXXOUDomjZ8YSSFpWmD6nUJga5dlSk2mzLB-Pnm5XocalzAxQt3KodqOl5vXbiyJ_6R-EQcG9EMG5QjuZFbTWTB7LbtL3plabGqkmC_mJdmeaTSxPBliANNH7kYSV0r93IjOEEXGyENJK57gFX2j0ULgTvV1KG-xFEQcoZOo2Etp7dbluRO4YMWdn67JF7deUoSoMuo8jhPegc6Jel3RY0KNhmEsXss0w_rOwiFYcOo6gdEN4Ii2MWsbq4-kybHzHndMd6Fvp3Da2_spOdridPMaellyvZMQP1rZmk6Si6ABTl2Nw1CmCfUWDfoAio5DFVV9ptUaiSOrksL4VaJ5nm1uV3hyIJfAiFtELszipRcO96Hhb5aDqSjve0tnF0CHivrRR94jEZHDYhNhiqwGPvYFFAAbP_UcBC6u1CtQvMrPASITI6dxW4bKndUOPUBePV5AT7QYzOEXUnk2vuUaXRuNXVqXhrfxXjwpcc76iUpIcLdAT6jQOgrJnDqXLbV8Gerve7jtZ8WoLX.HKoeXRW6AS3LKEhLrK1jK-_jyqW0fSvnT84Aik00XhE","tripType":"ONE_WAY","booker":{"name":"Raj Kumar","email":"raj@example-agency.in","phone":"+919800000000"},"bookingMode":"HOLD"}'
};

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

```go Held booking
package main

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

func main() {

	url := "https://sandbox-api.kitionz.com/v1/flights/book"

	payload := strings.NewReader("{\n  \"offerId\": \"floffer_034nVJS2qYvDvBMfFo5aXf\",\n  \"adults\": 1,\n  \"departureDate\": \"2026-11-30\",\n  \"passengers\": [\n    {\n      \"title\": \"MR\",\n      \"firstName\": \"Raj\",\n      \"passengerType\": \"ADULT\",\n      \"lastName\": \"Kumar\"\n    }\n  ],\n  \"quoteToken\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.YMO_RDh-s1yG_s5_OS-n9gkMoV-9Fp8U9X7RBn5FYTzvqhIOX9G5E8iY-KRNuU_UKsPI9YYZQKlFSfXcMuWeA31n7Jc5f7IdA4JeQ3fnb_5i73f-yTXtCBfq4d5hZu9ADTPsApRsTkAYP8ZPs5d6q-A2WXU0Lba6uFkZZ65jQVxHXxnmn-ycJ2WQcmlSbtaDhAgGwoGDyy9idawGRpH5kDJp0QpGweimiNTqtkUqiLs9u9YauX_krPaEh7Ln1chiRLgN49olYRyPvgfY0YRhkU7KaxxnZuxJZlGBmpf4ckNeDARQEbbPu1oazs3YgBkdQIOKegTcouNpCWksOlRo-Va89bjisf3tXMc2iZnxfhZNkp6tcbfMUBeyt5dxWLBZk2NobsgFvPipXybiMPE3nagVSNZML2X56NM6NSgG_htJAtzz41eXysijj-ENs-N1T1yJmyhryI-SEvl63Vz8fq_FUi1id80_M5CufV5Ven7hA-miz9knjG_LMhdJrvMZixSQa5z3FM1AgoJkha8znRPkEECux_w0RY3i8zNyETMIQtG6BJSUjwdllR0hrXrIdgp3q-OJPMkLQDpX0voy-KaTaOArP9pZYCfD-O_14mNXNMcGyYB3Yp-AFgcZlRJwNy80inXjFKCCtHgSQosQ9EaysNQmkNekrxAzJW8-ScuKqYu7ZOLnWbwQiXBhsmk5t6U47HmUoe-8oBirojms5amV4-J0ue_XkLqhsPGaN5j-ftDOyc9wVWE_Xg45wDD1pNNvJmfoSG_zTzeXxhQfXWSszztGM_9hCgZDNqHJDUch3HwMhpBKjuM1peJNhNCoDEc81flg-yAz_tzHt5wr15q7pmy4rARMOnK6euWXYp1ZFj81-iOOIzYilEmYFV0Dn9JGdKO9e1AHvc_mXYiXusGnjizW8Lo3sTs5KoDCMGCE2D9Xl3bf0RjNrqRiJwJXXOUDomjZ8YSSFpWmD6nUJga5dlSk2mzLB-Pnm5XocalzAxQt3KodqOl5vXbiyJ_6R-EQcG9EMG5QjuZFbTWTB7LbtL3plabGqkmC_mJdmeaTSxPBliANNH7kYSV0r93IjOEEXGyENJK57gFX2j0ULgTvV1KG-xFEQcoZOo2Etp7dbluRO4YMWdn67JF7deUoSoMuo8jhPegc6Jel3RY0KNhmEsXss0w_rOwiFYcOo6gdEN4Ii2MWsbq4-kybHzHndMd6Fvp3Da2_spOdridPMaellyvZMQP1rZmk6Si6ABTl2Nw1CmCfUWDfoAio5DFVV9ptUaiSOrksL4VaJ5nm1uV3hyIJfAiFtELszipRcO96Hhb5aDqSjve0tnF0CHivrRR94jEZHDYhNhiqwGPvYFFAAbP_UcBC6u1CtQvMrPASITI6dxW4bKndUOPUBePV5AT7QYzOEXUnk2vuUaXRuNXVqXhrfxXjwpcc76iUpIcLdAT6jQOgrJnDqXLbV8Gerve7jtZ8WoLX.HKoeXRW6AS3LKEhLrK1jK-_jyqW0fSvnT84Aik00XhE\",\n  \"tripType\": \"ONE_WAY\",\n  \"booker\": {\n    \"name\": \"Raj Kumar\",\n    \"email\": \"raj@example-agency.in\",\n    \"phone\": \"+919800000000\"\n  },\n  \"bookingMode\": \"HOLD\"\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Idempotency-Key", "replace-with-a-new-uuid-held-booking")
	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

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

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

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

}
```

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

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

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

request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = 'replace-with-a-new-uuid-held-booking'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"offerId\": \"floffer_034nVJS2qYvDvBMfFo5aXf\",\n  \"adults\": 1,\n  \"departureDate\": \"2026-11-30\",\n  \"passengers\": [\n    {\n      \"title\": \"MR\",\n      \"firstName\": \"Raj\",\n      \"passengerType\": \"ADULT\",\n      \"lastName\": \"Kumar\"\n    }\n  ],\n  \"quoteToken\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.YMO_RDh-s1yG_s5_OS-n9gkMoV-9Fp8U9X7RBn5FYTzvqhIOX9G5E8iY-KRNuU_UKsPI9YYZQKlFSfXcMuWeA31n7Jc5f7IdA4JeQ3fnb_5i73f-yTXtCBfq4d5hZu9ADTPsApRsTkAYP8ZPs5d6q-A2WXU0Lba6uFkZZ65jQVxHXxnmn-ycJ2WQcmlSbtaDhAgGwoGDyy9idawGRpH5kDJp0QpGweimiNTqtkUqiLs9u9YauX_krPaEh7Ln1chiRLgN49olYRyPvgfY0YRhkU7KaxxnZuxJZlGBmpf4ckNeDARQEbbPu1oazs3YgBkdQIOKegTcouNpCWksOlRo-Va89bjisf3tXMc2iZnxfhZNkp6tcbfMUBeyt5dxWLBZk2NobsgFvPipXybiMPE3nagVSNZML2X56NM6NSgG_htJAtzz41eXysijj-ENs-N1T1yJmyhryI-SEvl63Vz8fq_FUi1id80_M5CufV5Ven7hA-miz9knjG_LMhdJrvMZixSQa5z3FM1AgoJkha8znRPkEECux_w0RY3i8zNyETMIQtG6BJSUjwdllR0hrXrIdgp3q-OJPMkLQDpX0voy-KaTaOArP9pZYCfD-O_14mNXNMcGyYB3Yp-AFgcZlRJwNy80inXjFKCCtHgSQosQ9EaysNQmkNekrxAzJW8-ScuKqYu7ZOLnWbwQiXBhsmk5t6U47HmUoe-8oBirojms5amV4-J0ue_XkLqhsPGaN5j-ftDOyc9wVWE_Xg45wDD1pNNvJmfoSG_zTzeXxhQfXWSszztGM_9hCgZDNqHJDUch3HwMhpBKjuM1peJNhNCoDEc81flg-yAz_tzHt5wr15q7pmy4rARMOnK6euWXYp1ZFj81-iOOIzYilEmYFV0Dn9JGdKO9e1AHvc_mXYiXusGnjizW8Lo3sTs5KoDCMGCE2D9Xl3bf0RjNrqRiJwJXXOUDomjZ8YSSFpWmD6nUJga5dlSk2mzLB-Pnm5XocalzAxQt3KodqOl5vXbiyJ_6R-EQcG9EMG5QjuZFbTWTB7LbtL3plabGqkmC_mJdmeaTSxPBliANNH7kYSV0r93IjOEEXGyENJK57gFX2j0ULgTvV1KG-xFEQcoZOo2Etp7dbluRO4YMWdn67JF7deUoSoMuo8jhPegc6Jel3RY0KNhmEsXss0w_rOwiFYcOo6gdEN4Ii2MWsbq4-kybHzHndMd6Fvp3Da2_spOdridPMaellyvZMQP1rZmk6Si6ABTl2Nw1CmCfUWDfoAio5DFVV9ptUaiSOrksL4VaJ5nm1uV3hyIJfAiFtELszipRcO96Hhb5aDqSjve0tnF0CHivrRR94jEZHDYhNhiqwGPvYFFAAbP_UcBC6u1CtQvMrPASITI6dxW4bKndUOPUBePV5AT7QYzOEXUnk2vuUaXRuNXVqXhrfxXjwpcc76iUpIcLdAT6jQOgrJnDqXLbV8Gerve7jtZ8WoLX.HKoeXRW6AS3LKEhLrK1jK-_jyqW0fSvnT84Aik00XhE\",\n  \"tripType\": \"ONE_WAY\",\n  \"booker\": {\n    \"name\": \"Raj Kumar\",\n    \"email\": \"raj@example-agency.in\",\n    \"phone\": \"+919800000000\"\n  },\n  \"bookingMode\": \"HOLD\"\n}"

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

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

HttpResponse<String> response = Unirest.post("https://sandbox-api.kitionz.com/v1/flights/book")
  .header("Idempotency-Key", "replace-with-a-new-uuid-held-booking")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"offerId\": \"floffer_034nVJS2qYvDvBMfFo5aXf\",\n  \"adults\": 1,\n  \"departureDate\": \"2026-11-30\",\n  \"passengers\": [\n    {\n      \"title\": \"MR\",\n      \"firstName\": \"Raj\",\n      \"passengerType\": \"ADULT\",\n      \"lastName\": \"Kumar\"\n    }\n  ],\n  \"quoteToken\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.YMO_RDh-s1yG_s5_OS-n9gkMoV-9Fp8U9X7RBn5FYTzvqhIOX9G5E8iY-KRNuU_UKsPI9YYZQKlFSfXcMuWeA31n7Jc5f7IdA4JeQ3fnb_5i73f-yTXtCBfq4d5hZu9ADTPsApRsTkAYP8ZPs5d6q-A2WXU0Lba6uFkZZ65jQVxHXxnmn-ycJ2WQcmlSbtaDhAgGwoGDyy9idawGRpH5kDJp0QpGweimiNTqtkUqiLs9u9YauX_krPaEh7Ln1chiRLgN49olYRyPvgfY0YRhkU7KaxxnZuxJZlGBmpf4ckNeDARQEbbPu1oazs3YgBkdQIOKegTcouNpCWksOlRo-Va89bjisf3tXMc2iZnxfhZNkp6tcbfMUBeyt5dxWLBZk2NobsgFvPipXybiMPE3nagVSNZML2X56NM6NSgG_htJAtzz41eXysijj-ENs-N1T1yJmyhryI-SEvl63Vz8fq_FUi1id80_M5CufV5Ven7hA-miz9knjG_LMhdJrvMZixSQa5z3FM1AgoJkha8znRPkEECux_w0RY3i8zNyETMIQtG6BJSUjwdllR0hrXrIdgp3q-OJPMkLQDpX0voy-KaTaOArP9pZYCfD-O_14mNXNMcGyYB3Yp-AFgcZlRJwNy80inXjFKCCtHgSQosQ9EaysNQmkNekrxAzJW8-ScuKqYu7ZOLnWbwQiXBhsmk5t6U47HmUoe-8oBirojms5amV4-J0ue_XkLqhsPGaN5j-ftDOyc9wVWE_Xg45wDD1pNNvJmfoSG_zTzeXxhQfXWSszztGM_9hCgZDNqHJDUch3HwMhpBKjuM1peJNhNCoDEc81flg-yAz_tzHt5wr15q7pmy4rARMOnK6euWXYp1ZFj81-iOOIzYilEmYFV0Dn9JGdKO9e1AHvc_mXYiXusGnjizW8Lo3sTs5KoDCMGCE2D9Xl3bf0RjNrqRiJwJXXOUDomjZ8YSSFpWmD6nUJga5dlSk2mzLB-Pnm5XocalzAxQt3KodqOl5vXbiyJ_6R-EQcG9EMG5QjuZFbTWTB7LbtL3plabGqkmC_mJdmeaTSxPBliANNH7kYSV0r93IjOEEXGyENJK57gFX2j0ULgTvV1KG-xFEQcoZOo2Etp7dbluRO4YMWdn67JF7deUoSoMuo8jhPegc6Jel3RY0KNhmEsXss0w_rOwiFYcOo6gdEN4Ii2MWsbq4-kybHzHndMd6Fvp3Da2_spOdridPMaellyvZMQP1rZmk6Si6ABTl2Nw1CmCfUWDfoAio5DFVV9ptUaiSOrksL4VaJ5nm1uV3hyIJfAiFtELszipRcO96Hhb5aDqSjve0tnF0CHivrRR94jEZHDYhNhiqwGPvYFFAAbP_UcBC6u1CtQvMrPASITI6dxW4bKndUOPUBePV5AT7QYzOEXUnk2vuUaXRuNXVqXhrfxXjwpcc76iUpIcLdAT6jQOgrJnDqXLbV8Gerve7jtZ8WoLX.HKoeXRW6AS3LKEhLrK1jK-_jyqW0fSvnT84Aik00XhE\",\n  \"tripType\": \"ONE_WAY\",\n  \"booker\": {\n    \"name\": \"Raj Kumar\",\n    \"email\": \"raj@example-agency.in\",\n    \"phone\": \"+919800000000\"\n  },\n  \"bookingMode\": \"HOLD\"\n}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://sandbox-api.kitionz.com/v1/flights/book', [
  'body' => '{
  "offerId": "floffer_034nVJS2qYvDvBMfFo5aXf",
  "adults": 1,
  "departureDate": "2026-11-30",
  "passengers": [
    {
      "title": "MR",
      "firstName": "Raj",
      "passengerType": "ADULT",
      "lastName": "Kumar"
    }
  ],
  "quoteToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.YMO_RDh-s1yG_s5_OS-n9gkMoV-9Fp8U9X7RBn5FYTzvqhIOX9G5E8iY-KRNuU_UKsPI9YYZQKlFSfXcMuWeA31n7Jc5f7IdA4JeQ3fnb_5i73f-yTXtCBfq4d5hZu9ADTPsApRsTkAYP8ZPs5d6q-A2WXU0Lba6uFkZZ65jQVxHXxnmn-ycJ2WQcmlSbtaDhAgGwoGDyy9idawGRpH5kDJp0QpGweimiNTqtkUqiLs9u9YauX_krPaEh7Ln1chiRLgN49olYRyPvgfY0YRhkU7KaxxnZuxJZlGBmpf4ckNeDARQEbbPu1oazs3YgBkdQIOKegTcouNpCWksOlRo-Va89bjisf3tXMc2iZnxfhZNkp6tcbfMUBeyt5dxWLBZk2NobsgFvPipXybiMPE3nagVSNZML2X56NM6NSgG_htJAtzz41eXysijj-ENs-N1T1yJmyhryI-SEvl63Vz8fq_FUi1id80_M5CufV5Ven7hA-miz9knjG_LMhdJrvMZixSQa5z3FM1AgoJkha8znRPkEECux_w0RY3i8zNyETMIQtG6BJSUjwdllR0hrXrIdgp3q-OJPMkLQDpX0voy-KaTaOArP9pZYCfD-O_14mNXNMcGyYB3Yp-AFgcZlRJwNy80inXjFKCCtHgSQosQ9EaysNQmkNekrxAzJW8-ScuKqYu7ZOLnWbwQiXBhsmk5t6U47HmUoe-8oBirojms5amV4-J0ue_XkLqhsPGaN5j-ftDOyc9wVWE_Xg45wDD1pNNvJmfoSG_zTzeXxhQfXWSszztGM_9hCgZDNqHJDUch3HwMhpBKjuM1peJNhNCoDEc81flg-yAz_tzHt5wr15q7pmy4rARMOnK6euWXYp1ZFj81-iOOIzYilEmYFV0Dn9JGdKO9e1AHvc_mXYiXusGnjizW8Lo3sTs5KoDCMGCE2D9Xl3bf0RjNrqRiJwJXXOUDomjZ8YSSFpWmD6nUJga5dlSk2mzLB-Pnm5XocalzAxQt3KodqOl5vXbiyJ_6R-EQcG9EMG5QjuZFbTWTB7LbtL3plabGqkmC_mJdmeaTSxPBliANNH7kYSV0r93IjOEEXGyENJK57gFX2j0ULgTvV1KG-xFEQcoZOo2Etp7dbluRO4YMWdn67JF7deUoSoMuo8jhPegc6Jel3RY0KNhmEsXss0w_rOwiFYcOo6gdEN4Ii2MWsbq4-kybHzHndMd6Fvp3Da2_spOdridPMaellyvZMQP1rZmk6Si6ABTl2Nw1CmCfUWDfoAio5DFVV9ptUaiSOrksL4VaJ5nm1uV3hyIJfAiFtELszipRcO96Hhb5aDqSjve0tnF0CHivrRR94jEZHDYhNhiqwGPvYFFAAbP_UcBC6u1CtQvMrPASITI6dxW4bKndUOPUBePV5AT7QYzOEXUnk2vuUaXRuNXVqXhrfxXjwpcc76iUpIcLdAT6jQOgrJnDqXLbV8Gerve7jtZ8WoLX.HKoeXRW6AS3LKEhLrK1jK-_jyqW0fSvnT84Aik00XhE",
  "tripType": "ONE_WAY",
  "booker": {
    "name": "Raj Kumar",
    "email": "raj@example-agency.in",
    "phone": "+919800000000"
  },
  "bookingMode": "HOLD"
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
    'Idempotency-Key' => 'replace-with-a-new-uuid-held-booking',
  ],
]);

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

```csharp Held booking
using RestSharp;

var client = new RestClient("https://sandbox-api.kitionz.com/v1/flights/book");
var request = new RestRequest(Method.POST);
request.AddHeader("Idempotency-Key", "replace-with-a-new-uuid-held-booking");
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"offerId\": \"floffer_034nVJS2qYvDvBMfFo5aXf\",\n  \"adults\": 1,\n  \"departureDate\": \"2026-11-30\",\n  \"passengers\": [\n    {\n      \"title\": \"MR\",\n      \"firstName\": \"Raj\",\n      \"passengerType\": \"ADULT\",\n      \"lastName\": \"Kumar\"\n    }\n  ],\n  \"quoteToken\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.YMO_RDh-s1yG_s5_OS-n9gkMoV-9Fp8U9X7RBn5FYTzvqhIOX9G5E8iY-KRNuU_UKsPI9YYZQKlFSfXcMuWeA31n7Jc5f7IdA4JeQ3fnb_5i73f-yTXtCBfq4d5hZu9ADTPsApRsTkAYP8ZPs5d6q-A2WXU0Lba6uFkZZ65jQVxHXxnmn-ycJ2WQcmlSbtaDhAgGwoGDyy9idawGRpH5kDJp0QpGweimiNTqtkUqiLs9u9YauX_krPaEh7Ln1chiRLgN49olYRyPvgfY0YRhkU7KaxxnZuxJZlGBmpf4ckNeDARQEbbPu1oazs3YgBkdQIOKegTcouNpCWksOlRo-Va89bjisf3tXMc2iZnxfhZNkp6tcbfMUBeyt5dxWLBZk2NobsgFvPipXybiMPE3nagVSNZML2X56NM6NSgG_htJAtzz41eXysijj-ENs-N1T1yJmyhryI-SEvl63Vz8fq_FUi1id80_M5CufV5Ven7hA-miz9knjG_LMhdJrvMZixSQa5z3FM1AgoJkha8znRPkEECux_w0RY3i8zNyETMIQtG6BJSUjwdllR0hrXrIdgp3q-OJPMkLQDpX0voy-KaTaOArP9pZYCfD-O_14mNXNMcGyYB3Yp-AFgcZlRJwNy80inXjFKCCtHgSQosQ9EaysNQmkNekrxAzJW8-ScuKqYu7ZOLnWbwQiXBhsmk5t6U47HmUoe-8oBirojms5amV4-J0ue_XkLqhsPGaN5j-ftDOyc9wVWE_Xg45wDD1pNNvJmfoSG_zTzeXxhQfXWSszztGM_9hCgZDNqHJDUch3HwMhpBKjuM1peJNhNCoDEc81flg-yAz_tzHt5wr15q7pmy4rARMOnK6euWXYp1ZFj81-iOOIzYilEmYFV0Dn9JGdKO9e1AHvc_mXYiXusGnjizW8Lo3sTs5KoDCMGCE2D9Xl3bf0RjNrqRiJwJXXOUDomjZ8YSSFpWmD6nUJga5dlSk2mzLB-Pnm5XocalzAxQt3KodqOl5vXbiyJ_6R-EQcG9EMG5QjuZFbTWTB7LbtL3plabGqkmC_mJdmeaTSxPBliANNH7kYSV0r93IjOEEXGyENJK57gFX2j0ULgTvV1KG-xFEQcoZOo2Etp7dbluRO4YMWdn67JF7deUoSoMuo8jhPegc6Jel3RY0KNhmEsXss0w_rOwiFYcOo6gdEN4Ii2MWsbq4-kybHzHndMd6Fvp3Da2_spOdridPMaellyvZMQP1rZmk6Si6ABTl2Nw1CmCfUWDfoAio5DFVV9ptUaiSOrksL4VaJ5nm1uV3hyIJfAiFtELszipRcO96Hhb5aDqSjve0tnF0CHivrRR94jEZHDYhNhiqwGPvYFFAAbP_UcBC6u1CtQvMrPASITI6dxW4bKndUOPUBePV5AT7QYzOEXUnk2vuUaXRuNXVqXhrfxXjwpcc76iUpIcLdAT6jQOgrJnDqXLbV8Gerve7jtZ8WoLX.HKoeXRW6AS3LKEhLrK1jK-_jyqW0fSvnT84Aik00XhE\",\n  \"tripType\": \"ONE_WAY\",\n  \"booker\": {\n    \"name\": \"Raj Kumar\",\n    \"email\": \"raj@example-agency.in\",\n    \"phone\": \"+919800000000\"\n  },\n  \"bookingMode\": \"HOLD\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Held booking
import Foundation

let headers = [
  "Idempotency-Key": "replace-with-a-new-uuid-held-booking",
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "offerId": "floffer_034nVJS2qYvDvBMfFo5aXf",
  "adults": 1,
  "departureDate": "2026-11-30",
  "passengers": [
    [
      "title": "MR",
      "firstName": "Raj",
      "passengerType": "ADULT",
      "lastName": "Kumar"
    ]
  ],
  "quoteToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.YMO_RDh-s1yG_s5_OS-n9gkMoV-9Fp8U9X7RBn5FYTzvqhIOX9G5E8iY-KRNuU_UKsPI9YYZQKlFSfXcMuWeA31n7Jc5f7IdA4JeQ3fnb_5i73f-yTXtCBfq4d5hZu9ADTPsApRsTkAYP8ZPs5d6q-A2WXU0Lba6uFkZZ65jQVxHXxnmn-ycJ2WQcmlSbtaDhAgGwoGDyy9idawGRpH5kDJp0QpGweimiNTqtkUqiLs9u9YauX_krPaEh7Ln1chiRLgN49olYRyPvgfY0YRhkU7KaxxnZuxJZlGBmpf4ckNeDARQEbbPu1oazs3YgBkdQIOKegTcouNpCWksOlRo-Va89bjisf3tXMc2iZnxfhZNkp6tcbfMUBeyt5dxWLBZk2NobsgFvPipXybiMPE3nagVSNZML2X56NM6NSgG_htJAtzz41eXysijj-ENs-N1T1yJmyhryI-SEvl63Vz8fq_FUi1id80_M5CufV5Ven7hA-miz9knjG_LMhdJrvMZixSQa5z3FM1AgoJkha8znRPkEECux_w0RY3i8zNyETMIQtG6BJSUjwdllR0hrXrIdgp3q-OJPMkLQDpX0voy-KaTaOArP9pZYCfD-O_14mNXNMcGyYB3Yp-AFgcZlRJwNy80inXjFKCCtHgSQosQ9EaysNQmkNekrxAzJW8-ScuKqYu7ZOLnWbwQiXBhsmk5t6U47HmUoe-8oBirojms5amV4-J0ue_XkLqhsPGaN5j-ftDOyc9wVWE_Xg45wDD1pNNvJmfoSG_zTzeXxhQfXWSszztGM_9hCgZDNqHJDUch3HwMhpBKjuM1peJNhNCoDEc81flg-yAz_tzHt5wr15q7pmy4rARMOnK6euWXYp1ZFj81-iOOIzYilEmYFV0Dn9JGdKO9e1AHvc_mXYiXusGnjizW8Lo3sTs5KoDCMGCE2D9Xl3bf0RjNrqRiJwJXXOUDomjZ8YSSFpWmD6nUJga5dlSk2mzLB-Pnm5XocalzAxQt3KodqOl5vXbiyJ_6R-EQcG9EMG5QjuZFbTWTB7LbtL3plabGqkmC_mJdmeaTSxPBliANNH7kYSV0r93IjOEEXGyENJK57gFX2j0ULgTvV1KG-xFEQcoZOo2Etp7dbluRO4YMWdn67JF7deUoSoMuo8jhPegc6Jel3RY0KNhmEsXss0w_rOwiFYcOo6gdEN4Ii2MWsbq4-kybHzHndMd6Fvp3Da2_spOdridPMaellyvZMQP1rZmk6Si6ABTl2Nw1CmCfUWDfoAio5DFVV9ptUaiSOrksL4VaJ5nm1uV3hyIJfAiFtELszipRcO96Hhb5aDqSjve0tnF0CHivrRR94jEZHDYhNhiqwGPvYFFAAbP_UcBC6u1CtQvMrPASITI6dxW4bKndUOPUBePV5AT7QYzOEXUnk2vuUaXRuNXVqXhrfxXjwpcc76iUpIcLdAT6jQOgrJnDqXLbV8Gerve7jtZ8WoLX.HKoeXRW6AS3LKEhLrK1jK-_jyqW0fSvnT84Aik00XhE",
  "tripType": "ONE_WAY",
  "booker": [
    "name": "Raj Kumar",
    "email": "raj@example-agency.in",
    "phone": "+919800000000"
  ],
  "bookingMode": "HOLD"
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://sandbox-api.kitionz.com/v1/flights/book")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

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()
```

### Request recorded (book on the supplier's site)

**Request**

```json
{
  "offerId": "floffer_034nVJS2qRnxKMfFdrMSLK",
  "adults": 1,
  "departureDate": "2026-11-30",
  "passengers": [
    {
      "title": "MR",
      "firstName": "Raj",
      "passengerType": "ADULT",
      "lastName": "Kumar"
    }
  ],
  "quoteToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.aVikY9JRxsEY0mgv_yeg_s1JF04rAq-I5bl2PWHSDUqGPVN8oWzAz7wP749kkTZCyRMj74DG7pZQ0an-hE9guJQeP3R7fUnuXW8_Cf-DUXDQeMWR77xjnl5edeeh_KTYIklIX-M4ERy185mBKeCP8NMnjjVEnlD1nX3DnTc5CbisF7dwygkwSA2VdeX8hi1JTG6JEc5sCBTdw5uDWKghhoWCMxSjFTMyFi4cedOBn_pLa6Yye4lywmUIyWZBRW9f2g_Peyrx86s0FStdn7zB6FmWi_3VBKnVf31vpIP4_Y9XP2ytF8byzSppVcF5aFtR9yEIjXktbfRg1NjnHFVi_GMlEmWpTrVj5Hn3Z4UOf4WQzNjtXy9L-6kH1VNFZl4xWhuQkBGqhM5AnbUfTNMUvklB9kOIPHvLknHBAbYeUVd6Xbb9f6a3RwDBOp7Xg9JTvirKmeL6nAGEFaRh_vREPhr-pNvoSmbFWmyGHbOe00heJw11pJUKfonLDQNY89tGjhkN5pP-1nkpIHRcFSB4MVqCrS5FKsnEMTK_7f9_ixSfdm-AtAgera2-L1o3DpwhTOtF4xizCW-tTIKlOKxyntWtrSqhpVWFSTHeQqo9uhiJo1zNmuQ345EUFv72zJtxfKrJXntWNEd61TBiX8VdAtRcDXRbpCoXvI7cRRGsRilt1b37A4A-eAvBHQJ0gj2-OmVax3cFStamKbLFt2rAk6-JJGOMTFSP-V27I0QtYy5x_j4n-xw2c1CLfXJHlW85HQqyJkPVgIu-0QWRUkgRzAnv7AndWezyJQka28Wl8uVD32YVZqhxOjaYSmbxJZbpcLpybEtrGWtkVcgowRrfmkNHT-9IznUW5F1VkHe7GK1pUKA6AULJ5HnUCoFsnyvmJPVoN4POYFY8lUrN-ST83Hz7v-hO9G83sA41Mrw5eyu4SQKlO7Oequ2VOXmcF4fExGkfZJ4Yit5-qWD2LRXJqmK8KADU_PhHRqJbbcNgATqTVjl_cJpq4f9DfkmO-YztKbFujFpT4hwHE7SJJUW9uRGBQq5o_E4EQU6qRu442SeMnOf9J_48qfU2sEljmvf0vJJp9_OCf05MxAbwKZb7nTcBdjwAeqY8donn3LXY7NwECvRTFdGUlcrNEwVi0bBfiQ_vBrT6BNy8qWd431trpQdxoNz1GTn1BKHt7t7W-AX2kTbggb4XnKVvjqbNZQxhptwPXdho1rZoaC9cnh5qOinoBwkRmokQRawU2N6D43r--LlGx7vWN271xAZR5GecpC4ln6ynEsjXlgQ-shqIg37xc3ETRdlc3mWRlHX0wL8Cx6MF-g2tHoXmtsS5HWEldnPayexXS0rlnOgrVOua5TLQ7JFaxdbmjMogCWtxUBWsJBpJl5aMNH6tr0eFJf5fDHRtNbPvQtN5H24G2uFT83GN9r_1tWtCw8_nwD57os_daRx_KLGGwTcwP2C5VjfSleqWNouwolb_nFybVEbftzCaOhmM1PBSNvswZQcCIynCd7PnTD4WeYwYWS5F_Gl_PFSgU1SQOPLi.boNfVneOQLeKEIoNq0Q0bZjzbWYqk5XH_lsqvM6d28I",
  "tripType": "ONE_WAY",
  "booker": {
    "name": "Raj Kumar",
    "email": "raj@example-agency.in",
    "phone": "+919800000000"
  }
}
```

**Response**

```json
{
  "success": true,
  "statusCode": 201,
  "data": {
    "id": "bkg_034nVJUDx36SuYpKozD1X1",
    "supplierCode": "kitionz_test_portal",
    "seller": {
      "name": "Kitionz Test Air",
      "website": null,
      "supportPhone": null,
      "supportEmail": null
    },
    "environment": "SANDBOX",
    "status": "PENDING_FULFILMENT",
    "bookingMode": "REQUEST",
    "bookingChannel": "API",
    "supplierReference": null,
    "pnr": null,
    "ticketingTimeLimit": null,
    "booker": {
      "name": "Raj Kumar",
      "email": "raj@example-agency.in",
      "phone": "+919800000000"
    },
    "passengers": [
      {
        "id": "bkgpax_034nVJUEpWs023PXb61mC6",
        "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_034nVJUFDV2kFzs1zlC7JW",
        "segmentIndex": 0,
        "legType": "OUTBOUND",
        "legIndex": 0,
        "marketingCarrier": {
          "iataCode": "ZZ",
          "name": "Zz",
          "flightNumber": "900"
        },
        "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": null,
        "arrivalTerminal": null,
        "cabin": null,
        "airlineCode": "ZZ",
        "airlineName": "Zz",
        "flightNumber": "900",
        "originCode": "DEL",
        "originName": "Indira Gandhi International Airport",
        "destCode": "BOM",
        "destName": "Chhatrapati Shivaji Maharaj International Airport",
        "departureTimezone": "Asia/Kolkata",
        "arrivalTimezone": "Asia/Kolkata",
        "originTerminal": null,
        "destinationTerminal": null,
        "cabinClass": null
      }
    ],
    "events": [
      {
        "id": "bkgevent_034nVJUFbzmaqQqDuBw7EI",
        "eventType": "BOOKING_REQUESTED",
        "status": "SUCCESS",
        "errorCode": null,
        "errorMessage": null,
        "createdAt": "2026-10-28T02:02:19.885Z"
      }
    ],
    "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": "SUBMIT_PNR",
      "description": "Nothing is booked yet. Book this itinerary on the supplier’s portal, then POST the PNR here as { \"pnr\": \"…\" } before deadlineAt: after it, Kitionz may cancel the request at any time. To give up instead, POST /cancel on this booking.",
      "method": "POST",
      "path": "/v1/flights/bookings/bkg_034nVJUDx36SuYpKozD1X1/fulfil",
      "pollAfterSeconds": null,
      "deadlineAt": "2026-10-31T02:02:19.872Z"
    },
    "bookedAt": "2026-10-28T02:02:19.872Z",
    "createdAt": "2026-10-28T02:02:19.872Z",
    "updatedAt": "2026-10-28T02:02:19.872Z",
    "sourceCode": "kitionz_test_portal",
    "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_034nVJU7oDE9hc6Uuz4vb4",
    "timestamp": "2026-10-28T02:02:19.926Z",
    "path": "/v1/flights/book",
    "method": "POST"
  }
}
```

**SDK Code**

```python Request recorded (book on the supplier's site)
import requests

url = "https://sandbox-api.kitionz.com/v1/flights/book"

payload = {
    "offerId": "floffer_034nVJS2qRnxKMfFdrMSLK",
    "adults": 1,
    "departureDate": "2026-11-30",
    "passengers": [
        {
            "title": "MR",
            "firstName": "Raj",
            "passengerType": "ADULT",
            "lastName": "Kumar"
        }
    ],
    "quoteToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.aVikY9JRxsEY0mgv_yeg_s1JF04rAq-I5bl2PWHSDUqGPVN8oWzAz7wP749kkTZCyRMj74DG7pZQ0an-hE9guJQeP3R7fUnuXW8_Cf-DUXDQeMWR77xjnl5edeeh_KTYIklIX-M4ERy185mBKeCP8NMnjjVEnlD1nX3DnTc5CbisF7dwygkwSA2VdeX8hi1JTG6JEc5sCBTdw5uDWKghhoWCMxSjFTMyFi4cedOBn_pLa6Yye4lywmUIyWZBRW9f2g_Peyrx86s0FStdn7zB6FmWi_3VBKnVf31vpIP4_Y9XP2ytF8byzSppVcF5aFtR9yEIjXktbfRg1NjnHFVi_GMlEmWpTrVj5Hn3Z4UOf4WQzNjtXy9L-6kH1VNFZl4xWhuQkBGqhM5AnbUfTNMUvklB9kOIPHvLknHBAbYeUVd6Xbb9f6a3RwDBOp7Xg9JTvirKmeL6nAGEFaRh_vREPhr-pNvoSmbFWmyGHbOe00heJw11pJUKfonLDQNY89tGjhkN5pP-1nkpIHRcFSB4MVqCrS5FKsnEMTK_7f9_ixSfdm-AtAgera2-L1o3DpwhTOtF4xizCW-tTIKlOKxyntWtrSqhpVWFSTHeQqo9uhiJo1zNmuQ345EUFv72zJtxfKrJXntWNEd61TBiX8VdAtRcDXRbpCoXvI7cRRGsRilt1b37A4A-eAvBHQJ0gj2-OmVax3cFStamKbLFt2rAk6-JJGOMTFSP-V27I0QtYy5x_j4n-xw2c1CLfXJHlW85HQqyJkPVgIu-0QWRUkgRzAnv7AndWezyJQka28Wl8uVD32YVZqhxOjaYSmbxJZbpcLpybEtrGWtkVcgowRrfmkNHT-9IznUW5F1VkHe7GK1pUKA6AULJ5HnUCoFsnyvmJPVoN4POYFY8lUrN-ST83Hz7v-hO9G83sA41Mrw5eyu4SQKlO7Oequ2VOXmcF4fExGkfZJ4Yit5-qWD2LRXJqmK8KADU_PhHRqJbbcNgATqTVjl_cJpq4f9DfkmO-YztKbFujFpT4hwHE7SJJUW9uRGBQq5o_E4EQU6qRu442SeMnOf9J_48qfU2sEljmvf0vJJp9_OCf05MxAbwKZb7nTcBdjwAeqY8donn3LXY7NwECvRTFdGUlcrNEwVi0bBfiQ_vBrT6BNy8qWd431trpQdxoNz1GTn1BKHt7t7W-AX2kTbggb4XnKVvjqbNZQxhptwPXdho1rZoaC9cnh5qOinoBwkRmokQRawU2N6D43r--LlGx7vWN271xAZR5GecpC4ln6ynEsjXlgQ-shqIg37xc3ETRdlc3mWRlHX0wL8Cx6MF-g2tHoXmtsS5HWEldnPayexXS0rlnOgrVOua5TLQ7JFaxdbmjMogCWtxUBWsJBpJl5aMNH6tr0eFJf5fDHRtNbPvQtN5H24G2uFT83GN9r_1tWtCw8_nwD57os_daRx_KLGGwTcwP2C5VjfSleqWNouwolb_nFybVEbftzCaOhmM1PBSNvswZQcCIynCd7PnTD4WeYwYWS5F_Gl_PFSgU1SQOPLi.boNfVneOQLeKEIoNq0Q0bZjzbWYqk5XH_lsqvM6d28I",
    "tripType": "ONE_WAY",
    "booker": {
        "name": "Raj Kumar",
        "email": "raj@example-agency.in",
        "phone": "+919800000000"
    }
}
headers = {
    "Idempotency-Key": "replace-with-a-new-uuid-request-recorded-book-on-the-supplier-s-site",
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Request recorded (book on the supplier's site)
const url = 'https://sandbox-api.kitionz.com/v1/flights/book';
const options = {
  method: 'POST',
  headers: {
    'Idempotency-Key': 'replace-with-a-new-uuid-request-recorded-book-on-the-supplier-s-site',
    Authorization: 'Bearer <token>',
    'Content-Type': 'application/json'
  },
  body: '{"offerId":"floffer_034nVJS2qRnxKMfFdrMSLK","adults":1,"departureDate":"2026-11-30","passengers":[{"title":"MR","firstName":"Raj","passengerType":"ADULT","lastName":"Kumar"}],"quoteToken":"eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.aVikY9JRxsEY0mgv_yeg_s1JF04rAq-I5bl2PWHSDUqGPVN8oWzAz7wP749kkTZCyRMj74DG7pZQ0an-hE9guJQeP3R7fUnuXW8_Cf-DUXDQeMWR77xjnl5edeeh_KTYIklIX-M4ERy185mBKeCP8NMnjjVEnlD1nX3DnTc5CbisF7dwygkwSA2VdeX8hi1JTG6JEc5sCBTdw5uDWKghhoWCMxSjFTMyFi4cedOBn_pLa6Yye4lywmUIyWZBRW9f2g_Peyrx86s0FStdn7zB6FmWi_3VBKnVf31vpIP4_Y9XP2ytF8byzSppVcF5aFtR9yEIjXktbfRg1NjnHFVi_GMlEmWpTrVj5Hn3Z4UOf4WQzNjtXy9L-6kH1VNFZl4xWhuQkBGqhM5AnbUfTNMUvklB9kOIPHvLknHBAbYeUVd6Xbb9f6a3RwDBOp7Xg9JTvirKmeL6nAGEFaRh_vREPhr-pNvoSmbFWmyGHbOe00heJw11pJUKfonLDQNY89tGjhkN5pP-1nkpIHRcFSB4MVqCrS5FKsnEMTK_7f9_ixSfdm-AtAgera2-L1o3DpwhTOtF4xizCW-tTIKlOKxyntWtrSqhpVWFSTHeQqo9uhiJo1zNmuQ345EUFv72zJtxfKrJXntWNEd61TBiX8VdAtRcDXRbpCoXvI7cRRGsRilt1b37A4A-eAvBHQJ0gj2-OmVax3cFStamKbLFt2rAk6-JJGOMTFSP-V27I0QtYy5x_j4n-xw2c1CLfXJHlW85HQqyJkPVgIu-0QWRUkgRzAnv7AndWezyJQka28Wl8uVD32YVZqhxOjaYSmbxJZbpcLpybEtrGWtkVcgowRrfmkNHT-9IznUW5F1VkHe7GK1pUKA6AULJ5HnUCoFsnyvmJPVoN4POYFY8lUrN-ST83Hz7v-hO9G83sA41Mrw5eyu4SQKlO7Oequ2VOXmcF4fExGkfZJ4Yit5-qWD2LRXJqmK8KADU_PhHRqJbbcNgATqTVjl_cJpq4f9DfkmO-YztKbFujFpT4hwHE7SJJUW9uRGBQq5o_E4EQU6qRu442SeMnOf9J_48qfU2sEljmvf0vJJp9_OCf05MxAbwKZb7nTcBdjwAeqY8donn3LXY7NwECvRTFdGUlcrNEwVi0bBfiQ_vBrT6BNy8qWd431trpQdxoNz1GTn1BKHt7t7W-AX2kTbggb4XnKVvjqbNZQxhptwPXdho1rZoaC9cnh5qOinoBwkRmokQRawU2N6D43r--LlGx7vWN271xAZR5GecpC4ln6ynEsjXlgQ-shqIg37xc3ETRdlc3mWRlHX0wL8Cx6MF-g2tHoXmtsS5HWEldnPayexXS0rlnOgrVOua5TLQ7JFaxdbmjMogCWtxUBWsJBpJl5aMNH6tr0eFJf5fDHRtNbPvQtN5H24G2uFT83GN9r_1tWtCw8_nwD57os_daRx_KLGGwTcwP2C5VjfSleqWNouwolb_nFybVEbftzCaOhmM1PBSNvswZQcCIynCd7PnTD4WeYwYWS5F_Gl_PFSgU1SQOPLi.boNfVneOQLeKEIoNq0Q0bZjzbWYqk5XH_lsqvM6d28I","tripType":"ONE_WAY","booker":{"name":"Raj Kumar","email":"raj@example-agency.in","phone":"+919800000000"}}'
};

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

```go Request recorded (book on the supplier's site)
package main

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

func main() {

	url := "https://sandbox-api.kitionz.com/v1/flights/book"

	payload := strings.NewReader("{\n  \"offerId\": \"floffer_034nVJS2qRnxKMfFdrMSLK\",\n  \"adults\": 1,\n  \"departureDate\": \"2026-11-30\",\n  \"passengers\": [\n    {\n      \"title\": \"MR\",\n      \"firstName\": \"Raj\",\n      \"passengerType\": \"ADULT\",\n      \"lastName\": \"Kumar\"\n    }\n  ],\n  \"quoteToken\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.aVikY9JRxsEY0mgv_yeg_s1JF04rAq-I5bl2PWHSDUqGPVN8oWzAz7wP749kkTZCyRMj74DG7pZQ0an-hE9guJQeP3R7fUnuXW8_Cf-DUXDQeMWR77xjnl5edeeh_KTYIklIX-M4ERy185mBKeCP8NMnjjVEnlD1nX3DnTc5CbisF7dwygkwSA2VdeX8hi1JTG6JEc5sCBTdw5uDWKghhoWCMxSjFTMyFi4cedOBn_pLa6Yye4lywmUIyWZBRW9f2g_Peyrx86s0FStdn7zB6FmWi_3VBKnVf31vpIP4_Y9XP2ytF8byzSppVcF5aFtR9yEIjXktbfRg1NjnHFVi_GMlEmWpTrVj5Hn3Z4UOf4WQzNjtXy9L-6kH1VNFZl4xWhuQkBGqhM5AnbUfTNMUvklB9kOIPHvLknHBAbYeUVd6Xbb9f6a3RwDBOp7Xg9JTvirKmeL6nAGEFaRh_vREPhr-pNvoSmbFWmyGHbOe00heJw11pJUKfonLDQNY89tGjhkN5pP-1nkpIHRcFSB4MVqCrS5FKsnEMTK_7f9_ixSfdm-AtAgera2-L1o3DpwhTOtF4xizCW-tTIKlOKxyntWtrSqhpVWFSTHeQqo9uhiJo1zNmuQ345EUFv72zJtxfKrJXntWNEd61TBiX8VdAtRcDXRbpCoXvI7cRRGsRilt1b37A4A-eAvBHQJ0gj2-OmVax3cFStamKbLFt2rAk6-JJGOMTFSP-V27I0QtYy5x_j4n-xw2c1CLfXJHlW85HQqyJkPVgIu-0QWRUkgRzAnv7AndWezyJQka28Wl8uVD32YVZqhxOjaYSmbxJZbpcLpybEtrGWtkVcgowRrfmkNHT-9IznUW5F1VkHe7GK1pUKA6AULJ5HnUCoFsnyvmJPVoN4POYFY8lUrN-ST83Hz7v-hO9G83sA41Mrw5eyu4SQKlO7Oequ2VOXmcF4fExGkfZJ4Yit5-qWD2LRXJqmK8KADU_PhHRqJbbcNgATqTVjl_cJpq4f9DfkmO-YztKbFujFpT4hwHE7SJJUW9uRGBQq5o_E4EQU6qRu442SeMnOf9J_48qfU2sEljmvf0vJJp9_OCf05MxAbwKZb7nTcBdjwAeqY8donn3LXY7NwECvRTFdGUlcrNEwVi0bBfiQ_vBrT6BNy8qWd431trpQdxoNz1GTn1BKHt7t7W-AX2kTbggb4XnKVvjqbNZQxhptwPXdho1rZoaC9cnh5qOinoBwkRmokQRawU2N6D43r--LlGx7vWN271xAZR5GecpC4ln6ynEsjXlgQ-shqIg37xc3ETRdlc3mWRlHX0wL8Cx6MF-g2tHoXmtsS5HWEldnPayexXS0rlnOgrVOua5TLQ7JFaxdbmjMogCWtxUBWsJBpJl5aMNH6tr0eFJf5fDHRtNbPvQtN5H24G2uFT83GN9r_1tWtCw8_nwD57os_daRx_KLGGwTcwP2C5VjfSleqWNouwolb_nFybVEbftzCaOhmM1PBSNvswZQcCIynCd7PnTD4WeYwYWS5F_Gl_PFSgU1SQOPLi.boNfVneOQLeKEIoNq0Q0bZjzbWYqk5XH_lsqvM6d28I\",\n  \"tripType\": \"ONE_WAY\",\n  \"booker\": {\n    \"name\": \"Raj Kumar\",\n    \"email\": \"raj@example-agency.in\",\n    \"phone\": \"+919800000000\"\n  }\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Idempotency-Key", "replace-with-a-new-uuid-request-recorded-book-on-the-supplier-s-site")
	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

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

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

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

}
```

```ruby Request recorded (book on the supplier's site)
require 'uri'
require 'net/http'

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

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

request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = 'replace-with-a-new-uuid-request-recorded-book-on-the-supplier-s-site'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"offerId\": \"floffer_034nVJS2qRnxKMfFdrMSLK\",\n  \"adults\": 1,\n  \"departureDate\": \"2026-11-30\",\n  \"passengers\": [\n    {\n      \"title\": \"MR\",\n      \"firstName\": \"Raj\",\n      \"passengerType\": \"ADULT\",\n      \"lastName\": \"Kumar\"\n    }\n  ],\n  \"quoteToken\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.aVikY9JRxsEY0mgv_yeg_s1JF04rAq-I5bl2PWHSDUqGPVN8oWzAz7wP749kkTZCyRMj74DG7pZQ0an-hE9guJQeP3R7fUnuXW8_Cf-DUXDQeMWR77xjnl5edeeh_KTYIklIX-M4ERy185mBKeCP8NMnjjVEnlD1nX3DnTc5CbisF7dwygkwSA2VdeX8hi1JTG6JEc5sCBTdw5uDWKghhoWCMxSjFTMyFi4cedOBn_pLa6Yye4lywmUIyWZBRW9f2g_Peyrx86s0FStdn7zB6FmWi_3VBKnVf31vpIP4_Y9XP2ytF8byzSppVcF5aFtR9yEIjXktbfRg1NjnHFVi_GMlEmWpTrVj5Hn3Z4UOf4WQzNjtXy9L-6kH1VNFZl4xWhuQkBGqhM5AnbUfTNMUvklB9kOIPHvLknHBAbYeUVd6Xbb9f6a3RwDBOp7Xg9JTvirKmeL6nAGEFaRh_vREPhr-pNvoSmbFWmyGHbOe00heJw11pJUKfonLDQNY89tGjhkN5pP-1nkpIHRcFSB4MVqCrS5FKsnEMTK_7f9_ixSfdm-AtAgera2-L1o3DpwhTOtF4xizCW-tTIKlOKxyntWtrSqhpVWFSTHeQqo9uhiJo1zNmuQ345EUFv72zJtxfKrJXntWNEd61TBiX8VdAtRcDXRbpCoXvI7cRRGsRilt1b37A4A-eAvBHQJ0gj2-OmVax3cFStamKbLFt2rAk6-JJGOMTFSP-V27I0QtYy5x_j4n-xw2c1CLfXJHlW85HQqyJkPVgIu-0QWRUkgRzAnv7AndWezyJQka28Wl8uVD32YVZqhxOjaYSmbxJZbpcLpybEtrGWtkVcgowRrfmkNHT-9IznUW5F1VkHe7GK1pUKA6AULJ5HnUCoFsnyvmJPVoN4POYFY8lUrN-ST83Hz7v-hO9G83sA41Mrw5eyu4SQKlO7Oequ2VOXmcF4fExGkfZJ4Yit5-qWD2LRXJqmK8KADU_PhHRqJbbcNgATqTVjl_cJpq4f9DfkmO-YztKbFujFpT4hwHE7SJJUW9uRGBQq5o_E4EQU6qRu442SeMnOf9J_48qfU2sEljmvf0vJJp9_OCf05MxAbwKZb7nTcBdjwAeqY8donn3LXY7NwECvRTFdGUlcrNEwVi0bBfiQ_vBrT6BNy8qWd431trpQdxoNz1GTn1BKHt7t7W-AX2kTbggb4XnKVvjqbNZQxhptwPXdho1rZoaC9cnh5qOinoBwkRmokQRawU2N6D43r--LlGx7vWN271xAZR5GecpC4ln6ynEsjXlgQ-shqIg37xc3ETRdlc3mWRlHX0wL8Cx6MF-g2tHoXmtsS5HWEldnPayexXS0rlnOgrVOua5TLQ7JFaxdbmjMogCWtxUBWsJBpJl5aMNH6tr0eFJf5fDHRtNbPvQtN5H24G2uFT83GN9r_1tWtCw8_nwD57os_daRx_KLGGwTcwP2C5VjfSleqWNouwolb_nFybVEbftzCaOhmM1PBSNvswZQcCIynCd7PnTD4WeYwYWS5F_Gl_PFSgU1SQOPLi.boNfVneOQLeKEIoNq0Q0bZjzbWYqk5XH_lsqvM6d28I\",\n  \"tripType\": \"ONE_WAY\",\n  \"booker\": {\n    \"name\": \"Raj Kumar\",\n    \"email\": \"raj@example-agency.in\",\n    \"phone\": \"+919800000000\"\n  }\n}"

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

```java Request recorded (book on the supplier's site)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://sandbox-api.kitionz.com/v1/flights/book")
  .header("Idempotency-Key", "replace-with-a-new-uuid-request-recorded-book-on-the-supplier-s-site")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"offerId\": \"floffer_034nVJS2qRnxKMfFdrMSLK\",\n  \"adults\": 1,\n  \"departureDate\": \"2026-11-30\",\n  \"passengers\": [\n    {\n      \"title\": \"MR\",\n      \"firstName\": \"Raj\",\n      \"passengerType\": \"ADULT\",\n      \"lastName\": \"Kumar\"\n    }\n  ],\n  \"quoteToken\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.aVikY9JRxsEY0mgv_yeg_s1JF04rAq-I5bl2PWHSDUqGPVN8oWzAz7wP749kkTZCyRMj74DG7pZQ0an-hE9guJQeP3R7fUnuXW8_Cf-DUXDQeMWR77xjnl5edeeh_KTYIklIX-M4ERy185mBKeCP8NMnjjVEnlD1nX3DnTc5CbisF7dwygkwSA2VdeX8hi1JTG6JEc5sCBTdw5uDWKghhoWCMxSjFTMyFi4cedOBn_pLa6Yye4lywmUIyWZBRW9f2g_Peyrx86s0FStdn7zB6FmWi_3VBKnVf31vpIP4_Y9XP2ytF8byzSppVcF5aFtR9yEIjXktbfRg1NjnHFVi_GMlEmWpTrVj5Hn3Z4UOf4WQzNjtXy9L-6kH1VNFZl4xWhuQkBGqhM5AnbUfTNMUvklB9kOIPHvLknHBAbYeUVd6Xbb9f6a3RwDBOp7Xg9JTvirKmeL6nAGEFaRh_vREPhr-pNvoSmbFWmyGHbOe00heJw11pJUKfonLDQNY89tGjhkN5pP-1nkpIHRcFSB4MVqCrS5FKsnEMTK_7f9_ixSfdm-AtAgera2-L1o3DpwhTOtF4xizCW-tTIKlOKxyntWtrSqhpVWFSTHeQqo9uhiJo1zNmuQ345EUFv72zJtxfKrJXntWNEd61TBiX8VdAtRcDXRbpCoXvI7cRRGsRilt1b37A4A-eAvBHQJ0gj2-OmVax3cFStamKbLFt2rAk6-JJGOMTFSP-V27I0QtYy5x_j4n-xw2c1CLfXJHlW85HQqyJkPVgIu-0QWRUkgRzAnv7AndWezyJQka28Wl8uVD32YVZqhxOjaYSmbxJZbpcLpybEtrGWtkVcgowRrfmkNHT-9IznUW5F1VkHe7GK1pUKA6AULJ5HnUCoFsnyvmJPVoN4POYFY8lUrN-ST83Hz7v-hO9G83sA41Mrw5eyu4SQKlO7Oequ2VOXmcF4fExGkfZJ4Yit5-qWD2LRXJqmK8KADU_PhHRqJbbcNgATqTVjl_cJpq4f9DfkmO-YztKbFujFpT4hwHE7SJJUW9uRGBQq5o_E4EQU6qRu442SeMnOf9J_48qfU2sEljmvf0vJJp9_OCf05MxAbwKZb7nTcBdjwAeqY8donn3LXY7NwECvRTFdGUlcrNEwVi0bBfiQ_vBrT6BNy8qWd431trpQdxoNz1GTn1BKHt7t7W-AX2kTbggb4XnKVvjqbNZQxhptwPXdho1rZoaC9cnh5qOinoBwkRmokQRawU2N6D43r--LlGx7vWN271xAZR5GecpC4ln6ynEsjXlgQ-shqIg37xc3ETRdlc3mWRlHX0wL8Cx6MF-g2tHoXmtsS5HWEldnPayexXS0rlnOgrVOua5TLQ7JFaxdbmjMogCWtxUBWsJBpJl5aMNH6tr0eFJf5fDHRtNbPvQtN5H24G2uFT83GN9r_1tWtCw8_nwD57os_daRx_KLGGwTcwP2C5VjfSleqWNouwolb_nFybVEbftzCaOhmM1PBSNvswZQcCIynCd7PnTD4WeYwYWS5F_Gl_PFSgU1SQOPLi.boNfVneOQLeKEIoNq0Q0bZjzbWYqk5XH_lsqvM6d28I\",\n  \"tripType\": \"ONE_WAY\",\n  \"booker\": {\n    \"name\": \"Raj Kumar\",\n    \"email\": \"raj@example-agency.in\",\n    \"phone\": \"+919800000000\"\n  }\n}")
  .asString();
```

```php Request recorded (book on the supplier's site)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://sandbox-api.kitionz.com/v1/flights/book', [
  'body' => '{
  "offerId": "floffer_034nVJS2qRnxKMfFdrMSLK",
  "adults": 1,
  "departureDate": "2026-11-30",
  "passengers": [
    {
      "title": "MR",
      "firstName": "Raj",
      "passengerType": "ADULT",
      "lastName": "Kumar"
    }
  ],
  "quoteToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.aVikY9JRxsEY0mgv_yeg_s1JF04rAq-I5bl2PWHSDUqGPVN8oWzAz7wP749kkTZCyRMj74DG7pZQ0an-hE9guJQeP3R7fUnuXW8_Cf-DUXDQeMWR77xjnl5edeeh_KTYIklIX-M4ERy185mBKeCP8NMnjjVEnlD1nX3DnTc5CbisF7dwygkwSA2VdeX8hi1JTG6JEc5sCBTdw5uDWKghhoWCMxSjFTMyFi4cedOBn_pLa6Yye4lywmUIyWZBRW9f2g_Peyrx86s0FStdn7zB6FmWi_3VBKnVf31vpIP4_Y9XP2ytF8byzSppVcF5aFtR9yEIjXktbfRg1NjnHFVi_GMlEmWpTrVj5Hn3Z4UOf4WQzNjtXy9L-6kH1VNFZl4xWhuQkBGqhM5AnbUfTNMUvklB9kOIPHvLknHBAbYeUVd6Xbb9f6a3RwDBOp7Xg9JTvirKmeL6nAGEFaRh_vREPhr-pNvoSmbFWmyGHbOe00heJw11pJUKfonLDQNY89tGjhkN5pP-1nkpIHRcFSB4MVqCrS5FKsnEMTK_7f9_ixSfdm-AtAgera2-L1o3DpwhTOtF4xizCW-tTIKlOKxyntWtrSqhpVWFSTHeQqo9uhiJo1zNmuQ345EUFv72zJtxfKrJXntWNEd61TBiX8VdAtRcDXRbpCoXvI7cRRGsRilt1b37A4A-eAvBHQJ0gj2-OmVax3cFStamKbLFt2rAk6-JJGOMTFSP-V27I0QtYy5x_j4n-xw2c1CLfXJHlW85HQqyJkPVgIu-0QWRUkgRzAnv7AndWezyJQka28Wl8uVD32YVZqhxOjaYSmbxJZbpcLpybEtrGWtkVcgowRrfmkNHT-9IznUW5F1VkHe7GK1pUKA6AULJ5HnUCoFsnyvmJPVoN4POYFY8lUrN-ST83Hz7v-hO9G83sA41Mrw5eyu4SQKlO7Oequ2VOXmcF4fExGkfZJ4Yit5-qWD2LRXJqmK8KADU_PhHRqJbbcNgATqTVjl_cJpq4f9DfkmO-YztKbFujFpT4hwHE7SJJUW9uRGBQq5o_E4EQU6qRu442SeMnOf9J_48qfU2sEljmvf0vJJp9_OCf05MxAbwKZb7nTcBdjwAeqY8donn3LXY7NwECvRTFdGUlcrNEwVi0bBfiQ_vBrT6BNy8qWd431trpQdxoNz1GTn1BKHt7t7W-AX2kTbggb4XnKVvjqbNZQxhptwPXdho1rZoaC9cnh5qOinoBwkRmokQRawU2N6D43r--LlGx7vWN271xAZR5GecpC4ln6ynEsjXlgQ-shqIg37xc3ETRdlc3mWRlHX0wL8Cx6MF-g2tHoXmtsS5HWEldnPayexXS0rlnOgrVOua5TLQ7JFaxdbmjMogCWtxUBWsJBpJl5aMNH6tr0eFJf5fDHRtNbPvQtN5H24G2uFT83GN9r_1tWtCw8_nwD57os_daRx_KLGGwTcwP2C5VjfSleqWNouwolb_nFybVEbftzCaOhmM1PBSNvswZQcCIynCd7PnTD4WeYwYWS5F_Gl_PFSgU1SQOPLi.boNfVneOQLeKEIoNq0Q0bZjzbWYqk5XH_lsqvM6d28I",
  "tripType": "ONE_WAY",
  "booker": {
    "name": "Raj Kumar",
    "email": "raj@example-agency.in",
    "phone": "+919800000000"
  }
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
    'Idempotency-Key' => 'replace-with-a-new-uuid-request-recorded-book-on-the-supplier-s-site',
  ],
]);

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

```csharp Request recorded (book on the supplier's site)
using RestSharp;

var client = new RestClient("https://sandbox-api.kitionz.com/v1/flights/book");
var request = new RestRequest(Method.POST);
request.AddHeader("Idempotency-Key", "replace-with-a-new-uuid-request-recorded-book-on-the-supplier-s-site");
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"offerId\": \"floffer_034nVJS2qRnxKMfFdrMSLK\",\n  \"adults\": 1,\n  \"departureDate\": \"2026-11-30\",\n  \"passengers\": [\n    {\n      \"title\": \"MR\",\n      \"firstName\": \"Raj\",\n      \"passengerType\": \"ADULT\",\n      \"lastName\": \"Kumar\"\n    }\n  ],\n  \"quoteToken\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.aVikY9JRxsEY0mgv_yeg_s1JF04rAq-I5bl2PWHSDUqGPVN8oWzAz7wP749kkTZCyRMj74DG7pZQ0an-hE9guJQeP3R7fUnuXW8_Cf-DUXDQeMWR77xjnl5edeeh_KTYIklIX-M4ERy185mBKeCP8NMnjjVEnlD1nX3DnTc5CbisF7dwygkwSA2VdeX8hi1JTG6JEc5sCBTdw5uDWKghhoWCMxSjFTMyFi4cedOBn_pLa6Yye4lywmUIyWZBRW9f2g_Peyrx86s0FStdn7zB6FmWi_3VBKnVf31vpIP4_Y9XP2ytF8byzSppVcF5aFtR9yEIjXktbfRg1NjnHFVi_GMlEmWpTrVj5Hn3Z4UOf4WQzNjtXy9L-6kH1VNFZl4xWhuQkBGqhM5AnbUfTNMUvklB9kOIPHvLknHBAbYeUVd6Xbb9f6a3RwDBOp7Xg9JTvirKmeL6nAGEFaRh_vREPhr-pNvoSmbFWmyGHbOe00heJw11pJUKfonLDQNY89tGjhkN5pP-1nkpIHRcFSB4MVqCrS5FKsnEMTK_7f9_ixSfdm-AtAgera2-L1o3DpwhTOtF4xizCW-tTIKlOKxyntWtrSqhpVWFSTHeQqo9uhiJo1zNmuQ345EUFv72zJtxfKrJXntWNEd61TBiX8VdAtRcDXRbpCoXvI7cRRGsRilt1b37A4A-eAvBHQJ0gj2-OmVax3cFStamKbLFt2rAk6-JJGOMTFSP-V27I0QtYy5x_j4n-xw2c1CLfXJHlW85HQqyJkPVgIu-0QWRUkgRzAnv7AndWezyJQka28Wl8uVD32YVZqhxOjaYSmbxJZbpcLpybEtrGWtkVcgowRrfmkNHT-9IznUW5F1VkHe7GK1pUKA6AULJ5HnUCoFsnyvmJPVoN4POYFY8lUrN-ST83Hz7v-hO9G83sA41Mrw5eyu4SQKlO7Oequ2VOXmcF4fExGkfZJ4Yit5-qWD2LRXJqmK8KADU_PhHRqJbbcNgATqTVjl_cJpq4f9DfkmO-YztKbFujFpT4hwHE7SJJUW9uRGBQq5o_E4EQU6qRu442SeMnOf9J_48qfU2sEljmvf0vJJp9_OCf05MxAbwKZb7nTcBdjwAeqY8donn3LXY7NwECvRTFdGUlcrNEwVi0bBfiQ_vBrT6BNy8qWd431trpQdxoNz1GTn1BKHt7t7W-AX2kTbggb4XnKVvjqbNZQxhptwPXdho1rZoaC9cnh5qOinoBwkRmokQRawU2N6D43r--LlGx7vWN271xAZR5GecpC4ln6ynEsjXlgQ-shqIg37xc3ETRdlc3mWRlHX0wL8Cx6MF-g2tHoXmtsS5HWEldnPayexXS0rlnOgrVOua5TLQ7JFaxdbmjMogCWtxUBWsJBpJl5aMNH6tr0eFJf5fDHRtNbPvQtN5H24G2uFT83GN9r_1tWtCw8_nwD57os_daRx_KLGGwTcwP2C5VjfSleqWNouwolb_nFybVEbftzCaOhmM1PBSNvswZQcCIynCd7PnTD4WeYwYWS5F_Gl_PFSgU1SQOPLi.boNfVneOQLeKEIoNq0Q0bZjzbWYqk5XH_lsqvM6d28I\",\n  \"tripType\": \"ONE_WAY\",\n  \"booker\": {\n    \"name\": \"Raj Kumar\",\n    \"email\": \"raj@example-agency.in\",\n    \"phone\": \"+919800000000\"\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Request recorded (book on the supplier's site)
import Foundation

let headers = [
  "Idempotency-Key": "replace-with-a-new-uuid-request-recorded-book-on-the-supplier-s-site",
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "offerId": "floffer_034nVJS2qRnxKMfFdrMSLK",
  "adults": 1,
  "departureDate": "2026-11-30",
  "passengers": [
    [
      "title": "MR",
      "firstName": "Raj",
      "passengerType": "ADULT",
      "lastName": "Kumar"
    ]
  ],
  "quoteToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6ImtpdGlvbnouZmxpZ2h0LnF1b3RlIiwia2lkIjoidjEiLCJlbmMiOiJBMjU2R0NNIiwiZWtpZCI6Ijk5YzFjYzI1In0.aVikY9JRxsEY0mgv_yeg_s1JF04rAq-I5bl2PWHSDUqGPVN8oWzAz7wP749kkTZCyRMj74DG7pZQ0an-hE9guJQeP3R7fUnuXW8_Cf-DUXDQeMWR77xjnl5edeeh_KTYIklIX-M4ERy185mBKeCP8NMnjjVEnlD1nX3DnTc5CbisF7dwygkwSA2VdeX8hi1JTG6JEc5sCBTdw5uDWKghhoWCMxSjFTMyFi4cedOBn_pLa6Yye4lywmUIyWZBRW9f2g_Peyrx86s0FStdn7zB6FmWi_3VBKnVf31vpIP4_Y9XP2ytF8byzSppVcF5aFtR9yEIjXktbfRg1NjnHFVi_GMlEmWpTrVj5Hn3Z4UOf4WQzNjtXy9L-6kH1VNFZl4xWhuQkBGqhM5AnbUfTNMUvklB9kOIPHvLknHBAbYeUVd6Xbb9f6a3RwDBOp7Xg9JTvirKmeL6nAGEFaRh_vREPhr-pNvoSmbFWmyGHbOe00heJw11pJUKfonLDQNY89tGjhkN5pP-1nkpIHRcFSB4MVqCrS5FKsnEMTK_7f9_ixSfdm-AtAgera2-L1o3DpwhTOtF4xizCW-tTIKlOKxyntWtrSqhpVWFSTHeQqo9uhiJo1zNmuQ345EUFv72zJtxfKrJXntWNEd61TBiX8VdAtRcDXRbpCoXvI7cRRGsRilt1b37A4A-eAvBHQJ0gj2-OmVax3cFStamKbLFt2rAk6-JJGOMTFSP-V27I0QtYy5x_j4n-xw2c1CLfXJHlW85HQqyJkPVgIu-0QWRUkgRzAnv7AndWezyJQka28Wl8uVD32YVZqhxOjaYSmbxJZbpcLpybEtrGWtkVcgowRrfmkNHT-9IznUW5F1VkHe7GK1pUKA6AULJ5HnUCoFsnyvmJPVoN4POYFY8lUrN-ST83Hz7v-hO9G83sA41Mrw5eyu4SQKlO7Oequ2VOXmcF4fExGkfZJ4Yit5-qWD2LRXJqmK8KADU_PhHRqJbbcNgATqTVjl_cJpq4f9DfkmO-YztKbFujFpT4hwHE7SJJUW9uRGBQq5o_E4EQU6qRu442SeMnOf9J_48qfU2sEljmvf0vJJp9_OCf05MxAbwKZb7nTcBdjwAeqY8donn3LXY7NwECvRTFdGUlcrNEwVi0bBfiQ_vBrT6BNy8qWd431trpQdxoNz1GTn1BKHt7t7W-AX2kTbggb4XnKVvjqbNZQxhptwPXdho1rZoaC9cnh5qOinoBwkRmokQRawU2N6D43r--LlGx7vWN271xAZR5GecpC4ln6ynEsjXlgQ-shqIg37xc3ETRdlc3mWRlHX0wL8Cx6MF-g2tHoXmtsS5HWEldnPayexXS0rlnOgrVOua5TLQ7JFaxdbmjMogCWtxUBWsJBpJl5aMNH6tr0eFJf5fDHRtNbPvQtN5H24G2uFT83GN9r_1tWtCw8_nwD57os_daRx_KLGGwTcwP2C5VjfSleqWNouwolb_nFybVEbftzCaOhmM1PBSNvswZQcCIynCd7PnTD4WeYwYWS5F_Gl_PFSgU1SQOPLi.boNfVneOQLeKEIoNq0Q0bZjzbWYqk5XH_lsqvM6d28I",
  "tripType": "ONE_WAY",
  "booker": [
    "name": "Raj Kumar",
    "email": "raj@example-agency.in",
    "phone": "+919800000000"
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://sandbox-api.kitionz.com/v1/flights/book")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

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()
```