Tap List API
Your tap list, in your own design
Manage your taps in EasyTapList and show them anywhere: your website, a custom menu board or your own app. One simple request returns every beer, price and promo slide on a tap list.
Included with Pro Brewer. One key per tap list.

Quick start
Up and running in three steps
Get your key
In EasyTapList, open a tap list, choose Actions, then API Settings. Copy the key right away: it's only shown once.
Ask for your list
Send a GET request with your key in the x-api-key header. You get back the whole list as JSON.
Keep it fresh
Load it when your page loads, or check again every minute or so, the way our own TV boards do.
The request
One endpoint, one header
Each key belongs to one tap list, so there’s nothing else to pass. Running several taprooms? Make a key for each tap list.
- Method
GET- URL
https://cuytcbsfsjnkhdgbrukc.supabase.co/functions/v1/tap-list-api- Header
x-api-key: YOUR_API_KEY
Keep your key on your server, like Pinellas Ale Works does, rather than in code that runs in the browser. If a key ever gets out, rotate it from API Settings and the old one stops working right away.
curl "https://cuytcbsfsjnkhdgbrukc.supabase.co/functions/v1/tap-list-api" \
-H "x-api-key: YOUR_API_KEY"// Run this on your server so your key stays private.
const res = await fetch("https://cuytcbsfsjnkhdgbrukc.supabase.co/functions/v1/tap-list-api", {
headers: { "x-api-key": process.env.TAP_LIST_API_KEY },
});
if (!res.ok) throw new Error(`Tap list API: ${res.status}`);
const { tap_list, products, display_ads } = await res.json();
// Taps arrive in the order you set in EasyTapList.
for (const tap of products) {
console.log(tap.position + 1, tap.product.name, tap.product.abv);
}The response
Everything on the list, as JSON
You get the same details you enter in EasyTapList, so your design can show as much or as little as you like. This is one tap from Pinellas Ale Works’ Downtown Tap Room.
{
"tap_list": {
"id": "605c93b3-…",
"name": "Downtown Tap Room",
"description": null,
"status": "active",
"theme": "dark",
"header_content": "On Tap Now!",
"accent_color": "#F8A600",
"max_taps": 40,
"ad_rotation_interval": 10,
"bartenders": ["Brian", "Rachel"],
"location": {
"id": "0e86d887-…",
"name": "Pinellas Ale Works in St Petersburg FL",
"address": "1962 1st Avenue South",
"city": "St. Petersburg",
"state": "FL",
"zip_code": "33712"
}
},
"products": [
{
"id": "bc3f8cf8-…",
"position": 0,
"price": 7,
"notes": null,
"is_available": true,
"product": {
"id": "a71437dc-…",
"name": "Harold's",
"short_description": "St. Pete Style Lager",
"description": null,
"product_type": "beer",
"abv": 5,
"ibu": 27,
"srm": null,
"color_mode": "custom",
"custom_color": "#F8A600",
"color_type": null,
"glass_type": "pint",
"image_url": null,
"brands": { "name": "Pinellas Ale Works", "origin": "St. Petersburg, FL" },
"product_types": { "name": "beer", "display_name": "Beer" },
"product_styles": { "name": "lager", "display_name": "Lager" },
"product_badges": [],
"product_volumes": [
{ "volume": "16oz", "volume_type": "full-pour", "price": 7, "is_default": true },
{ "volume": "8oz", "volume_type": "half-pour", "price": 4, "is_default": false },
{ "volume": "64oz", "volume_type": "growler", "price": 15, "is_default": false }
]
}
}
],
"display_ads": [
{ "id": "20de1093-…", "image_url": "https://…/ad-0.jpeg", "position": 0 }
]
}Reference
The fields you’ll use most
tap_list
The tap list your key belongs to, with the settings you chose for it in EasyTapList.
| Field | Type | What it is |
|---|---|---|
name | string | The tap list's name, such as “Downtown Tap Room”. |
header_content | string | The headline shown above the list on your TVs. |
theme | string | The TV board color mode you picked: light or dark. |
accent_color | string | Your accent color as a hex value. |
max_taps | number | How many taps this list is set up for. |
bartenders | string[] | Who's pouring today, in the order you entered them. |
ad_rotation_interval | number | Seconds each promo slide stays up before the next. |
location | object | The location's name and street address. |
products[ ]
One entry per tap, already sorted by position. Taps you've archived are left out.
| Field | Type | What it is |
|---|---|---|
position | number | The tap's place in your list, starting at 0. |
price | number | The default pour price for this tap. |
notes | string | Any notes you added to this tap. |
product | object | The drink on this tap. See below. |
product
The drink itself, from your drink library.
| Field | Type | What it is |
|---|---|---|
name | string | The drink's name. |
short_description | string | A one-line description, such as the style. |
abv, ibu, srm | number | Strength, bitterness and SRM color, when you've set them. |
color_mode | string | How to color the drink: custom (use custom_color), srm (use srm) or type (use color_type). |
glass_type | string | pint, nonic_pint, shaker_pint, tulip, snifter, wine, flute, mug, pilsner, stein, goblet or tumbler. |
brands | object | The brewery or maker, with where it's from. |
product_styles | object | The style, with a display_name ready to show. |
product_badges | object[] | Badges like New or Sour, each with a label and color. |
product_volumes | object[] | Every pour size and price. volume_type is full-pour, half-pour, taster, growler or crowler. |
display_ads[ ]
The promo slides turned on for this tap list, in the order you set.
| Field | Type | What it is |
|---|---|---|
image_url | string | A public link to the slide image. |
position | number | The slide's place in the rotation. |
Errors
When something’s off
Errors come back as JSON with an error message, and one of these status codes.
| Status | What it means |
|---|---|
401 | No x-api-key header was sent, or the key isn't valid. Keys stop working when rotated. |
403 | The tap list isn't active, or the account isn't on Pro Brewer. |
500 | Something went wrong on our side. Keep showing your last list and try again shortly. |
Questions about the API? Log in and send us a note from Support, and we’ll help you get set up.
Put your tap list to work tonight
Add your beers, build your list and put it on a TV in one sitting. Free for up to 6 taps, no credit card.