Restaurant terms
What booking a slot commits the guest to: a card held or charged, the cancellation fee and deadline, and the restaurant's own policies in its own words.
Every OpenTable and Resy slot returned by availability carries a terms object, read live from the restaurant on each request. A confirmed booking carries confirmation.terms: the terms the guest agreed to, read off the restaurant's booking page just before the reservation is made. Reading them holds no table and needs no extra call.
Where it appears
POST /v1/availability/searchslots[].termsPOST /v1/venues/searchvenues[].slots[].termsGET /v1/bookings/{id}confirmation.termsA slot or booking with nothing to report has no terms key at all, and every other response is unchanged.
A slot where a card is held
A party of 2 at an OpenTable restaurant that keeps a card on file and charges $25 a guest for a late cancellation or a no-show (policy texts shortened):
A slot where no card is needed
No card, so no fee and no deadline fields. Any policies the restaurant has written still appear; this one has written none:
Fields
sourceopentable_restref or resy_find / resy_venuesearch on a slot; opentable_booking_details or resy_details on a confirmation.card_requiredcard_policycancellation_feedepositcancellation_cutoff_hourschange_cutoff_hourspolicies[]{ kind, text }, most expensive first. An experience_terms entry also names its experience.read_fordate, time (the venue's local clock) and party_size.provider_fieldsA charge (cancellation_fee, deposit) is { amount_cents, currency?, per?, from_text? }. currency is ISO 4217 and appears only when the restaurant makes it unambiguous: a bare “$” can be US, Canadian or Australian dollars, and Resy states no currency. per is guest or reservation when the restaurant says which. from_text: true means the amount was read out of the restaurant's own sentence rather than a number field.
card_policy
holddepositprepaymentnonePolicy kinds
cancellationdepositterms_and_conditionsexperience_termsrestaurant_policybooking_policyUsing terms
- Show the guest
policies[].text. It is always the restaurant's exact wording. Use the structured fields for logic: whether to collect a card, what deadline to remind the guest of. - A field we cannot read with certainty is left out, never guessed. When a structured field is missing, the sentence it would come from is still in
policies. - No
termson a slot means the restaurant told us nothing for it. Treat that as unknown, not as “no conditions”. - Terms belong to a slot, not to a restaurant: a private room or a set menu can carry stricter terms than the main dining room. Show the terms of the slot the guest picks.
- For deposits, read
terms.card_policyandterms.deposit. The olderdeposit_requiredflag on a slot does not reflect them. - Whether a booking needs
metadata.paymentis still decided by the response'scard_required, which istruewhen any open slot needs a card.
By provider
terms_and_conditions.Known limitation
When OpenTable words a deadline in days (“less than 1 day in advance”) instead of hours, cancellation_cutoff_hours is left out. The fee and the full sentence are still returned.