Skip to content

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.

Pinellas Ale Works' Taps & Tails board, showing every tap in four columns on one screen with who's pouring today and a Trivia Night promo
Pinellas Ale Works' own board, fed by the API

Quick start

Up and running in three steps

  1. Get your key

    In EasyTapList, open a tap list, choose Actions, then API Settings. Copy the key right away: it's only shown once.

  2. 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.

  3. 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
curl "https://cuytcbsfsjnkhdgbrukc.supabase.co/functions/v1/tap-list-api" \
  -H "x-api-key: YOUR_API_KEY"
JavaScript
// 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.

200 OK · application/json
{
  "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.

FieldTypeWhat it is
namestringThe tap list's name, such as “Downtown Tap Room”.
header_contentstringThe headline shown above the list on your TVs.
themestringThe TV board color mode you picked: light or dark.
accent_colorstringYour accent color as a hex value.
max_tapsnumberHow many taps this list is set up for.
bartendersstring[]Who's pouring today, in the order you entered them.
ad_rotation_intervalnumberSeconds each promo slide stays up before the next.
locationobjectThe location's name and street address.

products[ ]

One entry per tap, already sorted by position. Taps you've archived are left out.

FieldTypeWhat it is
positionnumberThe tap's place in your list, starting at 0.
pricenumberThe default pour price for this tap.
notesstringAny notes you added to this tap.
productobjectThe drink on this tap. See below.

product

The drink itself, from your drink library.

FieldTypeWhat it is
namestringThe drink's name.
short_descriptionstringA one-line description, such as the style.
abv, ibu, srmnumberStrength, bitterness and SRM color, when you've set them.
color_modestringHow to color the drink: custom (use custom_color), srm (use srm) or type (use color_type).
glass_typestringpint, nonic_pint, shaker_pint, tulip, snifter, wine, flute, mug, pilsner, stein, goblet or tumbler.
brandsobjectThe brewery or maker, with where it's from.
product_stylesobjectThe style, with a display_name ready to show.
product_badgesobject[]Badges like New or Sour, each with a label and color.
product_volumesobject[]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.

FieldTypeWhat it is
image_urlstringA public link to the slide image.
positionnumberThe 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.

StatusWhat it means
401No x-api-key header was sent, or the key isn't valid. Keys stop working when rotated.
403The tap list isn't active, or the account isn't on Pro Brewer.
500Something 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.