canonical: https://jentic.com/apis/opentable.com/opentable

# OpenTable API Documentation

Jentic maintains a validated, agent-ready OpenAPI specification for OpenTable API Documentation, converted from the Postman collection OpenTable publishes at docs.opentable.com. The OpenTable Partner API gives approved integration partners programmatic access to restaurant availability, reservations, slot locks, booking and cancellation policies, CRM guest records, and partner sync feeds. It is OAuth 2.0 protected and gated by partner approval, with sandbox and production environments. Capabilities span checking availability for a restaurant, locking a slot, creating or modifying reservations, managing guest profiles and tags, and exchanging POS data and menu webhooks.

## For AI agents

Check restaurant availability, lock slots, and create or modify reservations on OpenTable on behalf of approved partners.

## Scope

Does not handle restaurant discovery search by cuisine, payment processing, or food delivery - use for OpenTable partner availability, slot locks, reservations, and CRM only.

## Capabilities

- Check availability for a single OpenTable restaurant by RID and party size
- Lock a reservation slot before booking using POST /v2/booking/{rid}/slot_locks
- Create a reservation with POST /v2/booking/{rid}/reservations
- Modify or cancel an existing reservation by RID and confirmation ID
- Retrieve booking and cancellation policies tied to a date and time
- Manage CRM guest records including tags, photos, insights, and loyalty data
- Exchange partner sync data for guests and restaurant directory feeds

## Use cases

### Concierge Reservation Booking

A concierge or hotel platform integrates OpenTable to book tables on behalf of guests. The flow calls /v2/availability/{rid3} to find open slots, /v2/booking/{rid}/slot_locks to hold a slot during checkout, then /v2/booking/{rid}/reservations to confirm. Booking and cancellation policies retrieved from /v2/booking-policies and /v2/cancellation-policies are surfaced to the guest before commit.

Example prompt: Call GET /v2/availability/{rid3} for a target rid, lock a slot via POST /v2/booking/{rid}/slot_locks, then create the reservation with POST /v2/booking/{rid}/reservations

### Guest CRM Synchronisation

Restaurant groups maintaining a unified CRM can push guest profile updates, tags, photos, loyalty levels, and insights into OpenTable through the /api/v3/external/partners/{partner-id}/restaurants/{rid}/guests endpoints. This keeps host stand staff informed on arrival and ensures preferences flow back into the central CRM after each visit. Photo upload, tag assign, and insight update endpoints are all PUT or POST operations keyed by guest-id.

Example prompt: PUT /api/v3/external/partners/{partner-id}/restaurants/{rid}/guests/{guest-id}/tags with the partner-id, rid, guest-id, and tag payload to apply a 'VIP' tag

### Reservation Modification and Cancellation

Customer service platforms handling restaurant booking changes can modify reservations via PUT /v2/booking/{rid}/reservations/{rid}-{confirmation-id} and cancel via DELETE /inhouse/v1/booking/{rid}/reservations/{confirmation-id}. The /v2/cancellation-policies/{rid}/{cancelationid} endpoint exposes the applicable fee or no-show rules so the agent can warn the guest before issuing the cancellation.

Example prompt: Fetch /v2/cancellation-policies/{rid}/{cancelationid}, present the fee, then DELETE /inhouse/v1/booking/{rid}/reservations/{confirmation-id} to cancel

### AI Agent Restaurant Assistant

An AI agent helping a user 'find and book a steakhouse for 4 tonight' can use OpenTable through Jentic without manually negotiating OAuth flows. Jentic resolves the natural-language intent into the right /v2/availability and /v2/booking/{rid}/reservations calls, supplies partner credentials from the vault, and returns the confirmation number for the agent to relay to the user.

Example prompt: Through Jentic, search 'book a restaurant reservation', resolve to POST /v2/booking/{rid}/reservations, and execute with party size, date, and time

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /v2/availability/{rid3} | Get open availability for a restaurant |
| POST | /v2/booking/{rid}/slot_locks | Lock a reservation slot |
| POST | /v2/booking/{rid}/reservations | Create a reservation |
| PUT | /v2/booking/{rid}/reservations/{rid}-{confirmation-id} | Modify an existing reservation |
| GET | /v2/booking/{rid}/reservations/{rid}-{confirmation-id} | Retrieve a reservation |
| GET | /v2/cancellation-policies/{rid}/{cancelationid} | Fetch the cancellation policy |
| POST | /api/v3/external/partners/{partner-id}/restaurants/{rid}/guests | Create a CRM guest record |
| GET | /api/v2/oauth/token | Obtain an OAuth access token |

## Key resources

- **Availability** — Query open table inventory for a restaurant and date.
- **Slot Locks** — Hold a slot during the booking checkout flow.
- **Reservations** — Create, modify, retrieve, and cancel reservations.
- **Booking and Cancellation Policies** — Surface fee and no-show rules tied to a booking.
- **CRM Guests** — Manage guest profiles, tags, photos, insights, and loyalty data.
- **Sync** — Bulk pull updated guests and restaurant directory data.
- **POS** — Push tickets and fetch restaurants for POS partners.

## Why Jentic

- **Setup:** Wiring OpenTable by hand means running its OAuth token exchange against a separate auth host, refreshing tokens before they expire, and keeping the availability, booking, and CRM hosts straight. Through Jentic you install once, import the OpenTable API from the API Directory, store the client credentials once, and your agent calls it while token refresh is handled for you.
- **Permission scoping:** OpenTable puts the restaurant id in the URL path (/v2/booking/{rid}/...), so a rule can pin your agent to one restaurant: it can check availability and create reservations for that rid and nothing else. You choose the operations it may call, so actions like cancelling or updating a reservation are not included unless you add them.
- **Credential handling:** Your OpenTable OAuth client credentials and refresh tokens are stored once, encrypted, by your own Jentic One instance and injected at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'book a restaurant reservation' or 'lock a table slot', and Jentic returns the matching OpenTable operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Twilio API** — Send SMS confirmations and reminders for OpenTable reservations created via the API.
- **Stripe API** — Charge guests for prepaid reservations or no-show fees referenced in OpenTable policies.
- **SendGrid API** — Send transactional reservation emails - confirmation, modification, cancellation receipts.

## FAQ

### Does OpenTable publish a machine-readable API definition for OpenTable API Documentation?

Yes, but not as an OpenAPI document. OpenTable publishes its official API documentation at docs.opentable.com as a Postman collection, which is machine-readable yet cannot be loaded by tooling that expects OpenAPI. Jentic converts that collection into an OpenAPI specification and maintains it so that AI agents and developers can call OpenTable API Documentation via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the OpenTable API use?

OpenTable uses OAuth 2.0 - partners obtain an access token from /api/v2/oauth/token and pass it as a Bearer token on subsequent requests. Through Jentic, the client credentials are stored encrypted in the vault and the access token is refreshed automatically.

### Can I book an OpenTable reservation with the OpenTable API without slot locking first?

OpenTable strongly recommends the lock-then-book pattern: POST /v2/booking/{rid}/slot_locks before POST /v2/booking/{rid}/reservations. The slot lock holds the inventory during the user's checkout step so concurrent requests don't double-book.

### What are the rate limits for the OpenTable API?

OpenTable enforces partner-specific rate limits set during contracting and may revoke or throttle access at its discretion per the platform policy. Limits are documented in your partner onboarding materials. Subscribe to the OpenTable API Status Dashboard to receive notice of platform-wide limit changes.

### How do I check restaurant availability through Jentic?

Search Jentic for 'check restaurant availability', load the GET /v2/availability/{rid3} schema, and execute with the restaurant ID, date, and party size. Jentic returns the open slot times and prices.

### Is the OpenTable API free to access?

No - access requires a signed partner agreement with OpenTable. Apply via opentable.com/restaurant-solutions/api-partners. Pricing and tier eligibility are negotiated during contracting and depend on use case and integration scope.

### Does the OpenTable API support iOS or Android client apps directly?

The API is REST/JSON over HTTPS and works from any client that can hold OAuth credentials, but OpenTable's policy restricts client-side credential storage. Mobile apps typically proxy through a partner backend that holds the OAuth client secret and forwards user actions.

### Can I limit what my agent is allowed to do with the OpenTable API?

Yes. Because your own self-hosted Jentic One instance enforces the rules you set, you decide which OpenTable operations the agent may call and which credentials it may use. Since OpenTable carries the restaurant id in the URL path (/v2/booking/{rid}/...), you can pin the agent to a single restaurant so it only checks availability via GET /v2/availability/{rid3} and creates reservations via POST /v2/booking/{rid}/reservations. Destructive actions like cancelling a reservation or modifying CRM guest tags stay off-limits unless you explicitly add those operations to the agent's allowed set.
