Skip to main content
POST
Best Price Guarantee: ask for a hotel offer at a lower price found elsewhere
Submit a hotel offer from POST /v1/hotel_search with the lower price the traveller found for the same stay on another site: the link, a screenshot address and the total payable at booking, in the currency of the offer. The submission is reviewed in the background and this call answers pending with an id, or the result when wait_seconds let it finish in time. The answer carries the state of the request in status: pending while the review runs, then offered with the new offer, or declined with the reason. A decline is a 200: it is an answer, not a failure of the call. An offered result is a NEW offer id to add to a trip; the submitted offer is left as it was. Jinko enables Best Price Guarantee per account: a key it is not enabled for is answered HTTP 200 status: declined with decline.reason: feature_disabled.

Authorizations

X-API-Key
string
header
required

Body

application/json
product
enum<string>
required

The kind of product the request is about. Only hotel exists today.

Available options:
hotel
Example:

"hotel"

trip_item_token
string
required

The hotel offer the traveller compared: hotels[].offers[].trip_item_token from POST /v1/hotel_search. It names the hotel, the dates, the party and the rate. An offer is kept for 75 minutes after the search that returned it.

Minimum string length: 1
Example:

"htl_8f3c1d5e9a7b2c40"

reference
object
required
objective
enum<string>

What is asked for. price_parity (the default, and the only value today) asks for the reference price, nothing lower.

Available options:
price_parity
Example:

"price_parity"

wait_seconds
integer

How long this call waits for the result before answering, 0–20 seconds (default 0: answer at once). It only decides when the call returns; the review continues either way, and a call that waited without a result answers pending.

Required range: 0 <= x <= 20
Example:

15

Response

The state of the request

status
string
required

pending: the review is still running — read the request again; this is not a decline. It can take up to a few minutes when the reference page is checked. offered: offer holds the new offer. declined: no offer, see decline.reason. expired: an offer was made and not used before expires_at. Treat any other value as pending.

Example:

"offered"

id
string

Identifies the request; read its result with GET /v1/best_price_guarantee/{id}. Absent when the submission was declined before being recorded (feature_disabled, an unknown product).

Example:

"ngo_mfrggzdfmztwq2lknnwg23tpob"

poll_after_seconds
integer

Present while status is pending: a suggested pause before reading again.

Example:

2

offer
object
decline
object

Present when status is declined.