Availability
Get bookable slots for a specific venue before creating a booking.
Returns live reservation availability for a specific venue. Supply a venue ID, party size, and preferred datetime to POST /v1/availability/search to retrieve all available booking slots. The venue must come from POST /v1/venues/search first; an unknown venue_id returns 404 ("venue not found; run venues/search first"). The response also says whether the venue requires a card down (card_required) and, on each OpenTable and Resy slot, what booking it commits the guest to (terms; see Restaurant terms).
Required: venue_id. Recommended: party_size (defaults to 2) and datetime (defaults to 24 hours from now). Optional: window_minutes, check_card_required.
ven_1a2b3c4d.party_sizeNumber of guests. Slots are returned for this party size. Defaults to 2.datetimePreferred time, RFC3339 or a local time without an offset (2026-11-14T19:00:00). Interpreted as the venue's local wall-clock time; a timezone suffix is converted to local automatically; no suffix is treated as already local. A date that has already passed is moved to today at the same time of day. Slots are returned in a window centered on this time.window_minutesHow wide a time window to return slots for, centered on the requested datetime.check_card_requiredRarely needed. card_required is reported whenever the restaurant states it, flag or not: OpenTable on every read, Resy whenever it is known. When true and OpenTable's card policy cannot be read directly, Ophelia falls back to clicking a slot to learn it, which briefly holds a table.Each slot's datetime carries the venue's local offset, datetime_utc is the same instant in UTC, and display_time gives the human-readable local time ready to render in your UI. kind says what distinguishes the options: time for a reservation time, room for a hotel room (no clock; see Hotels), itinerary for a flight. Every OpenTable and Resy slot carries its own terms; the example shows them on the first slot only, to keep it short.
To book a slot, send its availability_id and its datetime to POST /v1/bookings. The booking is held to the time the slot was offered at: a different datetime is refused with 400 slot_not_offered. An availability_id is good for 15 minutes; after that it is ignored and the booking runs on venue_id and datetime alone.
card_required is true when any open slot needs a card, and omitted when the policy is unknown. When it is true, the booking needs a card: include metadata.payment, or pay through AgentCard. Each slot's terms says what that card is for and what a late cancellation costs: see Restaurant terms.