Getting started¶
This takes about five minutes once you have a key.
1. Get a key¶
Ask your Speakeasy contact for a key. Tell them which venues you need and what you want to build, so they can turn on the right routes. Two kinds of key explains the difference.
Keep the key on your server. Never put it in a web page, a mobile app, a URL or a log.
2. Pick an environment¶
| Environment | Base URL | Use it for |
|---|---|---|
| Production | https://production.speakeasygo.com |
Real venues and real guests |
| Test | https://preprod.speakeasygo.com |
Trying things out with test data |
A key works in one environment only, so ask for a test key too. Data in the test environment can change at any time.
All answers are plain JSON over HTTPS.
3. Make your first call¶
Send your key in the token header. This lists the first venue your key can read.
You get something like this:
{
"list": [
{
"id": "11111111-1111-4111-8111-111111111111",
"url": "https://speakeasygo.com/sample-bar?vid=VN-abc123",
"name": "Sample Bar",
"timezone": "America/New_York"
}
],
"total": 1,
"count": 1,
"hasMany": false,
"nextCursor": null,
"generatedAt": "2026-11-05T12:00:00.000Z"
}
Your integration may see more fields than this. See What your key can reach.
With a venue key¶
A venue key works on the /partners/ routes. This lists upcoming public events for your
venue.
curl "https://preprod.speakeasygo.com/partners/events?take=1&version=PUBLISHED&status=ENABLED&eventStatus=APPROVED&timeVersion=UPCOMING" \
-H "token: $SPEAKEASY_VENUE_TOKEN" \
-H "timezone: America/New_York"
If it does not work¶
| You see | What it means |
|---|---|
401 from /external/v1 |
The key is missing or not valid here. Check it is the key for this environment. |
400 "Token is required" or "Unable to validate token" from /partners |
The same thing on the venue routes. They answer 400 instead of 401. |
403 "Missing venues:read capability" |
Your integration does not have this route yet. Ask your contact to add it. |
403 "... is not provisioned" |
Your integration does not have this filter or sort yet. |
200 with an empty list |
The call worked, and nothing matches. Your key may not cover any venue yet. |
Every answer from /external/v1 carries an X-Request-Id header. Send it to us when you
report a problem.