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
Venue directory
The BookDinePlay app's list of venues that opted in — searchable by name and city, paged, and answered only to BookDinePlay's own app and platform keys.
The venue directory is the list the BookDinePlay app shows guests to find a venue. A venue appears in it only after its operator ticks Show my venue in the BookDinePlay app in the console (Venue → BookDinePlay app), and only while its account is active: a venue that switches the setting off again, or whose subscription is suspended, disappears from the next request.
The directory answers only to BookDinePlay's own app key and platform key. A venue's own publishable or secret key is refused with 403 platform-key-required: a key that belongs to one venue has no business listing others. For your own venue, read GET /api/venues/{venueSlug} instead.
Endpoints
GET /api/venues
Query
| Parameter | Type | Meaning |
|---|---|---|
query |
string, optional | Matches anywhere in the venue's name, ignoring case. At most 100 characters |
city |
string, optional | Matches the venue's city exactly, ignoring case. At most 100 characters |
page |
integer, optional | 1-based page number, at most 20000; default 1 |
pageSize |
integer, optional | Venues per page, 1 to 50; default 20 |
Response 200 OK
| Field | Type | Meaning |
|---|---|---|
venues |
object[] | This page's venues, ordered by name |
venues[].slug |
string | The identifier for every other /api/venues/{venueSlug} route |
venues[].name, venues[].tagline |
string | Display text, in the venue's own language |
venues[].city, venues[].country |
string | Location as shown to guests |
venues[].resourceTypes |
string[] | The types a guest can book there, as on the venue profile |
page, pageSize |
integer | The page and page size this answer is for |
totalCount |
integer | How many venues match across all pages |
{
"venues": [
{
"slug": "demo-bowling",
"name": "Strike Lounge",
"tagline": "Bowling, kitchen & bar",
"city": "Hamburg",
"country": "Germany",
"resourceTypes": [
"RestaurantTable",
"BowlingLane"
]
},
{
"slug": "demo-sportsbar",
"name": "The Neon Tap",
"tagline": "Sports bar, kitchen & game house",
"city": "Berlin",
"country": "Germany",
"resourceTypes": [
"RestaurantTable",
"BilliardTable",
"DartBoard"
]
}
],
"page": 1,
"pageSize": 20,
"totalCount": 2
}Errors — 400 a page below 1 or above 20000, a pageSize outside 1–50, or a query or city over 100 characters (the problem's errors names the parameter); 403 platform-key-required for a venue's key; 403 app-key-from-browser when the app key arrives with an Origin; 429 rate-limited when the app key is over its limit (Errors).
curl
curl "https://api.bookdineplay.com/api/venues?query=neon&pageSize=10" \
-H "X-BookDinePlay-Key: $BOOKDINEPLAY_APP_KEY"JavaScript
// Server-side (Node.js): the app key is refused from a browser.
const response = await fetch('https://api.bookdineplay.com/api/venues?query=neon&pageSize=10', {
headers: { 'X-BookDinePlay-Key': process.env.BOOKDINEPLAY_APP_KEY }
});
const { venues, totalCount } = await response.json();C#
var page = await client.ListDirectoryAsync(query: "neon", pageSize: 10, cancellationToken: cancellationToken);
foreach (var venue in page.Venues) { Console.WriteLine($"{venue.Name}, {venue.City}"); }Next steps
- Profile — everything about one venue from the directory.
- Authentication — the key types and what each may call.