OpheliaDocs
Search docs⌘K
DashboardCreate an account
Overview

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

EndpointFieldProviders
POST /v1/availability/search
slots[].terms
OpenTable, Resy
POST /v1/venues/search
venues[].slots[].terms
Resy, on a search with a datetime
GET /v1/bookings/{id}
confirmation.terms
OpenTable, Resy, once confirmed

A 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):

json
"terms": {
"source": "opentable_restref",
"card_required": true,
"card_policy": "hold",
"cancellation_fee": { "amount_cents": 2500, "currency": "USD", "per": "guest", "from_text": true },
"policies": [
{ "kind": "cancellation", "text": "This restaurant requires a credit card to secure this reservation. ... No-shows or cancellations less than 1 day in advance may be subject to a charge of $25 per person." },
{ "kind": "restaurant_policy", "text": "... Should you need to cancel your reservation, please do so at least 24 hours in advance to avoid a cancellation charge." },
{ "kind": "booking_policy", "text": "We have a 15 minute grace period. ... Your table will be reserved for 2 hours for parties of up to 4." }
],
"read_for": { "date": "2026-11-14", "time": "17:30", "party_size": 2 },
"provider_fields": { "creditCardPolicyId": "60ac454244f1c50dbdefd229:v6", "creditCardPolicyType": "Hold" }
}

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:

json
"terms": {
"source": "opentable_restref",
"card_required": false,
"card_policy": "none",
"read_for": { "date": "2026-11-14", "time": "19:00", "party_size": 2 }
}

Fields

FieldMeaning
source
Where the terms were read: opentable_restref or resy_find / resy_venuesearch on a slot; opentable_booking_details or resy_details on a confirmation.
card_required
The restaurant's own answer for this slot: does booking it need a card?
card_policy
What the card is for. See the values below.
cancellation_fee
The charge for a late cancellation or a no-show.
deposit
What is charged when the booking is made.
cancellation_cutoff_hours
Cancel at least this many hours before the reservation to avoid the fee.
change_cutoff_hours
Changes are accepted online until this many hours before.
policies[]
The restaurant's and provider's own sentences, each { kind, text }, most expensive first. An experience_terms entry also names its experience.
read_for
The slot the terms were read for: date, time (the venue's local clock) and party_size.
provider_fields
The provider's own fields, passed through unchanged, for anything not covered above.

A 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

ValueMeaning
hold
A card is kept on file and charged only for a late cancellation or a no-show.
deposit
Part of the bill is charged when the booking is made.
prepayment
The booking is paid in full up front, typically for ticketed events and prepaid experiences.
none
No card is needed.
absent
The restaurant asks for a card without saying what for.

Policy kinds

kindWhat it is
cancellation
The cancellation and no-show terms, in the provider's standard wording.
deposit
The deposit terms.
terms_and_conditions
The restaurant's terms and conditions (a minimum spend, a corkage fee). OpenTable shows these only on its booking page, so they appear on a confirmation, not on a slot.
experience_terms
Terms of a set menu, private room or event the slot books. They can be stricter than the restaurant’s own, and when they are, the structured fields follow them.
restaurant_policy
The restaurant's own notes: cancellation reminders, parking, seating.
booking_policy
Grace period, how long the table is held, how to reach the restaurant.

Using 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 terms on 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_policy and terms.deposit. The older deposit_required flag on a slot does not reflect them.
  • Whether a booking needs metadata.payment is still decided by the response's card_required, which is true when any open slot needs a card.

By provider

On a slotOn a confirmation
OpenTable
Card policy, the cancellation sentence with its fee and deadline, the restaurant’s policies, and any experience’s own terms.
Everything on the slot, plus the restaurant's terms_and_conditions.
Resy
The fee, deposit and deadlines as numbers. Resy states no currency or unit there, so neither is given.
The venue's cancellation sentence, word for word, with the fee read out of it.

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.