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. All amounts are customer-facing only. 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. Call get_booking first, then send booking_ref and the selected item_id. An owning credential identifies the booking without last_name; guests must supply it. provider, order_id, provider_reference and provider_booking_id are not accepted: a request carrying one is refused with 422 naming the field.

Authorizations

X-API-Key
string
header
required

Body

application/json
booking_ref
string
required

Jinko booking reference. Call get_booking first, then select its item_id for servicing.

Minimum string length: 1
Example:

"JNK-A0AUR2"

item_id
integer

Stable booked item ID from get_booking items[].item_id. Preserved across exchanges. Omit only when the booking has exactly one item of the requested domain; otherwise a 409 returns items to choose from.

Required range: 0 < x <= 9007199254740991
Example:

42

last_name
string

Required for guest lookup. A credential that owns the booking may omit it; ownership is checked by the platform.

Minimum string length: 1
Example:

"Doe"

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; manual_reason says why. There is no "unsupported" level: a supplier that cannot be cancelled through the API arrives as commitable: false with not_commitable_reason: provider_unsupported, and a booking the supplier will not cancel as it stands arrives as a 409 not_cancellable — from the preview as well as the commit — with error.message “This booking cannot be cancelled online. Contact Jinko support.”

Available options:
AUTO,
MANUAL_REQUIRED
manual_reason
string

Why a person has to act, in words the customer can be shown. Present with support_level: MANUAL_REQUIRED. Where the reason would be the supplier’s own words, it reads “This request needs manual handling by Jinko support.” not_commitable_reason is the code to branch on; this is the sentence to show.

Example:

"the supplier's cancellation policy names no fee in force for this booking, so the fee could not be established"

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. When unknown, the amount is omitted; a fee_known: false marker may remain. Absent is not zero. Read fee_known before showing it.

policy
object

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

not_commitable_reason
string

Why commitable is false. Today: penalty_exceeds_sell (the penalty is at least what the customer paid), multi_currency_basis (the supplier prices the fee in a currency the customer was not charged in, so no single refund figure exists). A fee the supplier’s policy does not establish (penalty.fee_known: false) is support_level: MANUAL_REQUIRED with no reason code — read manual_reason. Two refusals are never values here: a booking the supplier will not cancel as it stands is 409 not_cancellable from this preview itself, and a supplier with no cancellation route is 422 provider_unsupported. The contract reserves further values (provider_unsupported, funds_unavailable, insufficient_time_to_converge) and new reasons may be added, so treat an unrecognised value as "not right now".

Example:

"penalty_exceeds_sell"