Sign in to see your venue's slug and publishable key in every sample.
Your account has no venue yet, so the samples keep their placeholders. Sign out
Signed in as · . Create a publishable key in the console and reload to see it here. Sign out
Signed in as · . The samples show your venue's publishable key. Sign out
Developer docs
Overview
What the BookDinePlay developer platform gives you, the three ways to integrate, and where to start.
BookDinePlay turns a venue's own website into its booking channel: restaurant tables, billiard tables, dart boards, bowling lanes and event areas, with menus, opening hours and optional deposits — and, on Pro and higher, the venue's events with guest registration and named tickets. Everything a guest sees on your site comes from one public API, and every way of embedding it talks to that same API.
What you can build
- A booking widget on any page. One script tag from our CDN and one function call render a complete, style-isolated reservation flow inside an element you choose. No framework, no build step.
- An events section with registration. The same script renders a venue's published events as cards, one event's detail, and a registration form that ends in named tickets with a QR code — or hands your own event pages the calls (Events).
- A WordPress site with a shortcode. The plugin loads the same widget and exposes
[bookdineplay_widget venue="…"], plus[bookdineplay_events]and[bookdineplay_event]for the events. - Your own front end or back office. The typed .NET SDK (
BookDinePlay.Sdkon NuGet) wraps every public endpoint, and the REST API is open to any language.
How it fits together
| Piece | What it is | Where it runs |
|---|---|---|
| Public API | https://api.bookdineplay.com/api/venues/{slug}/… — venue, opening hours, menus, resources, availability, reservations, payment intents, events and registrations |
BookDinePlay |
| API key | A publishable key (bdp_pk_…) for browsers, locked to your site's origins; a secret key for servers |
Yours to create in the console |
| Widget / plugin / SDK | The integration path you pick | Your website or server |
Every public call carries an API key; there is no anonymous access — except the routes whose URL already carries a guest's own credential: a scanned table QR token, an e-mailed ticket code or cancel token, or a gift voucher's code. Authentication explains the two key types and exactly what the API refuses.
Start here
- Quickstart — embed the widget in five minutes.
- Authentication — keys, origins, headers and errors.
- Then the guide for your stack: JavaScript SDK, WordPress plugin or .NET SDK — and the CDN if you pin versions.
- API reference — every endpoint with a real response, when you build without the SDKs.
- Tutorials — the widget end to end, and a venue page from nothing to live on Azure.
Questions people ask
Is online payment optional?
Yes. BookDinePlay never requires a payment to book: a reservation is confirmed the moment it is created unless the venue has enabled deposits, the resource carries a deposit amount and the guest ticked the deposit option — only then is it held as Pending until the venue confirms it. Collecting a deposit is a separate, provider-agnostic payment intent, and the API never touches card data.
Do I need an API key?
Yes. Every call to /api/venues/** — including every request the widget makes — must carry an API key in the X-BookDinePlay-Key header (or as a bearer token); there is no anonymous access. A publishable key (bdp_pk_…) is safe in a browser because it only works from the origins you allow; a secret key (bdp_sk_…) stays on your server. Operators create both in the console.
Can guests register for events?
Yes, on the Pro plan and higher. A venue publishes an event — a league night, a screening, a quiz — in the console, and guests register for it on the venue's own website: the events widget (or the WordPress shortcodes, or your own pages on the headless client) shows the event, takes the buyer's contact details and one attendee name per ticket, and the API answers with named tickets that each have a code and a page with the code the venue checks in at the door. The guest gets the tickets and a cancel link by e-mail. On Premium, a Paid event checks out through Stripe on the venue's own connected account instead — the guest pays, the platform's fee is taken automatically, and named tickets are issued the moment the payment confirms. A venue whose payout account isn't connected yet still answers a checkout attempt for its paid events with a generic "not available right now" message, the same one guests see for any other reason ticket sales are not open.
Can I use it on WordPress?
Yes. The BookDinePlay WordPress plugin, downloadable as a zip from every GitHub release, loads the same widget and adds the shortcode [bookdineplay_widget venue="…"]; you paste your publishable key once in its settings, name the venue in the shortcode, and the reservation flow appears wherever the shortcode is.