Skip to main content
POST
Preview what cancelling a hotel booking would cost
Quote what cancelling would return to the customer right now: the refund, the penalty in force, and the policy behind them. NOTHING is cancelled. refund is the customer figure, what they paid for the item less the penalty; the supplier’s own net figures are under provider_figures and are not what the customer receives. commitable: false means a commit would be refused and not_commitable_reason says why. The handle this returns is named quote: it is what POST /v1/hotel_cancel_commit consumes, and it stops binding at expires_at. Every call here needs API authentication; this is about which mode identifies the booking. Use EXACTLY ONE: provider_reference, which additionally requires a credential that OWNS the booking, or booking_ref + last_name, which identifies it without one. Sending both is a 422.

Authorizations

X-API-Key
string
header
required

Body

application/json
provider_reference
string

The supplier's own booking reference. OWNER mode: beyond the API authentication every call needs, this one requires a credential that OWNS the booking — a tenant-bound key reaches its whole tenant, any other credential must belong to the booking's own user. Mutually exclusive with booking_ref + last_name; sending both is rejected with 422. An unknown reference, another tenant's booking and another user's booking are all answered identically, so this field cannot be used to discover which supplier references exist.

Example:

"NUITEE-88231"

booking_ref
string

The Jinko reference. GUEST mode: pair it with last_name and the pair identifies the booking on its own — API authentication is still required, as on every call here, but the credential does not have to own the booking. Mutually exclusive with provider_reference; one without the other is rejected with 422.

Example:

"JNK-H1ZK90"

last_name
string

The lead traveller's surname. Required with booking_ref, and only with it.

Example:

"Carrard"

intent
object

Response

What cancelling would cost

quote
string

This quote ("svq_…"). Pass it to POST /v1/hotel_cancel_commit — it binds the commit to the figures below. Opaque; the format may evolve.

Example:

"svq_01J7ZR3M8FKX2P9C"

state
string

Lifecycle of the QUOTE, not of a cancellation — nothing has been cancelled by this call. completed means the figures are final until expires_at.

Example:

"completed"

commitable
boolean

Whether a commit against this quote would be accepted right now. When false, not_commitable_reason says why and committing is pointless.

Example:

true

support_level
enum<string>

How this cancellation would be carried out. AUTO — the platform completes it end to end. MANUAL_REQUIRED — it is possible, but a Jinko agent has to act; expect a delay rather than an immediate result, and do not treat it as a failure. There is no "unsupported" level: a supplier that cannot be cancelled through the API arrives as commitable: false with not_commitable_reason: provider_unsupported, or as a 409 not_cancellable on commit.

Available options:
AUTO,
MANUAL_REQUIRED
expires_at
string

When this quote stops binding. Committing after it answers 409 quote_expired; take a fresh quote and show the customer the new figure before committing again.

Example:

"2026-09-03T12:15:00Z"

item
string

The booked item this quote would cancel ("itm_…"). A booking holding several items is quoted and cancelled one item at a time.

Example:

"itm_7f2c9a4e8b1d"

refund
object

THE CUSTOMER FIGURE: what would go back to the payment method, on the basis named in basis. Show this one. Absent is not zero.

penalty
object

What the customer would forfeit — read fee_known before showing it.

policy
object

The supplier's cancellation policy as it stands, for explaining the figures to the customer.

provider_figures
object

The supplier's own net figures, for reconciliation — never what the customer receives. refund_net is what the supplier returns to Jinko and penalty_net what it withheld from Jinko; on a booking sold at a margin both differ from the customer figures. Show the customer the top-level refund_amount / penalty_amount, never these. currency is the currency the supplier settles in, which can differ from the currency charged.

not_commitable_reason
string

Why commitable is false. Today: provider_unsupported (the supplier offers no cancellation through the API), not_cancellable (this booking cannot be cancelled as it stands), penalty_exceeds_sell (the penalty is at least what the customer paid), multi_currency_basis (the booking was paid across currencies and no single refund figure exists), funds_in_flight (the original payment is still moving). New reasons may be added, so treat an unrecognised value as "not right now".

Example:

"not_cancellable"