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.totalAmountfrom this response, never the search price. It can differ from Search even whenpriceChangedisfalse, because not every supplier reports a change. IfpriceChangedistrue, tell your customer the price moved, and book with this token only if they accept it. - The
quoteTokenbinds this price, offer and passengers for about 15 minutes (quoteTokenExpiresAt); after that, quote again. - It does not hold the seat.
/bookasks the supplier again: if the price went up you getFARE_HIGHER_THAN_QUOTED, if the seats are gone you getINSUFFICIENT_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.perPaxis present and above 0, and the lines add up tototalAmountexactly. A quote that fails this is refused with422 FARE_QUOTE_UNUSABLE(the reason is inerror.supplierError.failureClass; nothing is quoted or booked): choose another fare or search again. - With infants, read
pricing.infantFare.statushere, not at search — the quote is the truth and can differ.NOT_GIVEN:totalAmountcovers 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
departureDateback from/search.tripTypeandreturnDatemay be left out: the offer’s own trip is used. When you send them, they must be the offer’s; another trip answers400 OFFER_TRIP_MISMATCH(itsdetailsname the offer’s values). AreturnDateneedstripType: "ROUND_TRIP". - No supplier field:
supplierOfferRefalready names the supplier. Most organisations see the supplier only after booking, and sendingsourceCodereturnsSOURCE_CODE_NOT_ACCEPTED.
Example — request:
Response (trimmed) — pass quoteToken straight to /book:
Authentication
Your Kitionz API key, sent as Authorization: Bearer keyId:secret. Create it in your Kitionz console under API → API keys.
Request
The offer’s departureDate from /search — send it back unchanged (a different date → 400 OFFER_TRIP_MISMATCH).
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.
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).
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
Re-priced fare quote with per-offer eligibility AND the signed quoteToken + quoteTokenExpiresAt that /book requires.