Skip to navigation

5 · Fare quote

Re-price an offer & get a quote token.

What: re-prices a chosen offer against the live supplier and returns a signed quoteToken.

When: after the traveller picks an offer from /search, immediately before /book.

Before / After: /search → here → /book (pass the quoteToken).

Gotchas

  • Always show your customer pricing.totalAmount from this response, never the search price. It can differ from Search even when priceChanged is false, because not every supplier reports a change. If priceChanged is true, tell your customer the price moved, and book with this token only if they accept it.
  • The quoteToken binds this price, offer and passengers for about 15 minutes (quoteTokenExpiresAt); after that, quote again.
  • It does not hold the seat. /book asks the supplier again: if the price went up you get FARE_HIGHER_THAN_QUOTED, if the seats are gone you get INSUFFICIENT_SEATS, and nothing is booked; quote again. If the price went down, you are booked at the lower price.
  • Send the same adults/children/infants + supplierOfferRef + dates you’ll book with — the token binds them.
  • Every quote is checked before it is signed. In the quote, every adult and child line in pricing.perPax is present and above 0, and the lines add up to totalAmount exactly. A quote that fails this is refused with 422 FARE_QUOTE_UNUSABLE (the reason is in error.supplierError.failureClass; nothing is quoted or booked): choose another fare or search again.
  • With infants, read pricing.infantFare.status here, not at search — the quote is the truth and can differ. NOT_GIVEN: totalAmount covers adults and children only; add your own infant charge. A missing infant price is never a reason to refuse a quote.
  • Send the offer’s departureDate back from /search. tripType and returnDate may be left out: the offer’s own trip is used. When you send them, they must be the offer’s; another trip answers 400 OFFER_TRIP_MISMATCH (its details name the offer’s values). A returnDate needs tripType: "ROUND_TRIP".
  • No supplier field: supplierOfferRef already names the supplier. Most organisations see the supplier only after booking, and sending sourceCode returns SOURCE_CODE_NOT_ACCEPTED.

Example — request:

{ "supplierOfferRef": "floffer_9x2k7q", "tripType": "ONE_WAY", "departureDate": "2027-01-15", "adults": 1 }

Response (trimmed) — pass quoteToken straight to /book:

{ "data": { "quoteToken": "eyJhbGci…", "quoteTokenExpiresAt": "2027-01-10T04:45:00.000Z", "priceChanged": false, "pricing": { "totalAmount": 5480.00, "currency": "INR" } } }

Authentication

AuthorizationBearer

Your Kitionz API key, sent as Authorization: Bearer keyId:secret. Create it in your Kitionz console under API → API keys.

Request

This endpoint expects an object.
supplierOfferRefstringRequired1-120 characters
adultsintegerRequired1-9
departureDatestringRequired

The offer’s departureDate from /search — send it back unchanged (a different date → 400 OFFER_TRIP_MISMATCH).

sourceCodestringOptional2-50 characters

Leave it out: supplierOfferRef 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.

childrenintegerOptional0-9Defaults to 0
infantsintegerOptional0-9Defaults to 0
tripTypeenumOptional

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:
returnDatestringOptional

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.

Response

Default Response
successboolean
statusCodedouble
dataobject

Re-priced fare quote with per-offer eligibility AND the signed quoteToken + quoteTokenExpiresAt that /book requires.

metaobject