The shows endpoint

This endpoint gives you your production's public shows as JSON: their dates, venues, promotion and confirmed lineups. You can point a tour page or a listings site at it.

https://confirmed.show/api/v1/<your-production>/shows.json

It accepts GET requests, returns JSON, and allows cross-origin calls, so you can read it straight from a browser. You don't need an API key, because everything it returns is already public.


What it covers

You get the shows you've made public that haven't been cancelled, from thirty days ago through to thirty days ahead. You can move the far end of that window with future_shows_limit.

Only confirmed bookings show up in a lineup, so an act you're still waiting to hear from stays private until they say yes.

What stays private

The endpoint only shares information that isn't sensitive. It never includes:

  • fees, settlements or anything else about money;
  • call times, or arrival and leaving times;
  • email addresses, phone numbers or payment details;
  • your crew and production spots;
  • notes, show reports or the custom fields your production adds under Data & API;
  • the room's capacity, though you get tickets_available when the room has one on record.

For any of that, you need an API key and the private Shows API.

Making a show public

You can publish shows from the show list by selecting them and setting their publish status from the toolbar. You can make a show private again the same way. It then drops out of this endpoint on the next call.


Response

You get back an array of shows, each with its scheduling, venue and room, promotional assets and lineup.

[
  {
    "id": "abc123",
    "show_type": "friday-night",
    "name": "Friday Night Comedy",
    "emoji": "🎤",
    "public_description": "Our flagship weekend show",
    "duration": 90,
    "ts": "2026-06-19T20:00:00",
    "ts_utc": "2026-06-19T19:00:00Z",
    "past": false,
    "meta": {
      "tickets_url": "https://tickets.example.com/abc123",
      "event_url": "https://example.com/friday-night/june-19",
      "promo_image": "https://st.confirmed.show/uploads/spectrum/shows/abc123/A1B2C3-promo.webp",
      "promo_thumb": "https://st.confirmed.show/uploads/spectrum/shows/abc123/D4E5F6-thumb.webp",
      "social_card": "https://st.confirmed.show/uploads/spectrum/shows/abc123/G7H8I9-card.webp",
      "poster": "https://st.confirmed.show/uploads/spectrum/shows/abc123/J1K2L3-poster.webp",
      "promo_blurb": "One night only, with a lineup we're keeping quiet until the doors open."
    },
    "tickets_available": 42,
    "total_act_spots": 5,
    "venue": {
      "name": "The Comedy Cellar",
      "city": "London",
      "country": "GB",
      "address": "1 Funny Street",
      "postcode": "W1 2AB",
      "tz": "Europe/London",
      "description": "Basement room off the high street"
    },
    "room": {
      "name": "Main Room",
      "description": "",
      "wheelchairAccess": true,
      "greenRoom": true,
      "diBox": false,
      "projectorInfo": ""
    },
    "hosts": [
      {
        "name": "Jane Doe",
        "category": "host",
        "bio": "Compère and award-winning host.",
        "headshot": "https://.../jane.jpg",
        "website": "https://janedoe.com",
        "instagram": "janedoe"
      }
    ],
    "acts": [
      {
        "name": "John Smith",
        "category": "act",
        "spot_length": 20,
        "bio": "Touring headliner.",
        "headshot": "https://.../john.jpg"
      }
    ],
    "lineup": [
      { "name": "Jane Doe", "category": "host" },
      { "name": "John Smith", "category": "act" }
    ]
  }
]

Show fields

Field Description
id The show's id
show_type Which of your show types it is
name The show's public name
emoji The show type's emoji, when it has one
public_description The description you show the public
duration How long the show runs, in minutes
ts Start time where the show happens, in the venue's timezone
ts_utc The same start time in UTC, as ISO 8601
past Whether the show has already ended
meta The show's promotion in full: pictures, video and blurb. See Promotion.
tickets_available How many seats are left, when the room has a capacity on record
total_act_spots How many act spots the show has
venue The venue
room The room
hosts The confirmed hosts
acts The confirmed acts
lineup Hosts and acts together, in running order
spot_roles The roles in play, when you're filtering by them

Promotion

Everything your team fills in under Meta on the show card comes out in meta: the ticket link, the pictures, a video and a blurb. You can build a listing card or a show page from it.

Field Description
tickets_url Where the audience buys tickets
event_url The show's own page, separate from the ticket seller
promo_image The main promotional picture
promo_thumb A thumbnail of it, for a dense listing
social_card The picture shown when someone shares a link to the show. It's the one to use as your og:image.
promo_video A promotional video
poster Poster artwork, usually portrait and larger than the rest
promo_blurb A short description for listings and socials

A field only appears once a show has a value for it, so it's worth checking before you use one. A show with no promotion at all still has meta, as an empty object.

Every picture is a URL you can use directly. Each one is sized to the shape the production chose, so covers and posters from one production share an aspect ratio. You can lay them out without measuring each one.

Where the values come from

When a show has no value of its own for a field, it falls back to the default you set for its show type under Live Pages. You can give a whole show type one ticket link and one cover, and only override the nights that differ. A show's own value is the most specific, so it always wins over the show type's default and over any city or venue exception.

Custom fields a production adds under Data & API aren't included here. This endpoint needs no key, so it leaves out anything a production may have meant only for its own integrations. With an API key, you can read and write all of them through the private Shows API.

Venue fields

Field Description
name Venue name
city The city it's in
country ISO country code
address Street address
postcode Postcode
tz IANA timezone that ts is in
description Venue description

Room fields

Field Description
name Room name
description Room description
wheelchairAccess Whether the room is wheelchair accessible
greenRoom Whether there's a green room
diBox Whether there's a DI box
projectorInfo Notes on the projector

Performer fields

Everyone in hosts, acts and lineup has these fields.

Field Description
name Their name
category host or act
spot_length How long they're on for, in minutes. Acts only.
bio Their bio, unless the production keeps bios off this endpoint
headshot Headshot URL
website Their website
twitter Twitter handle or URL
instagram Instagram
facebook Facebook
tiktok TikTok
plug What they're plugging at the moment

You can add -thumb to a headshot URL to get a small version of it.


Query parameters

Parameter Description
future_shows_limit How many days ahead to include. Thirty by default.
id / show_id Fetches one show by id, regardless of the date window
show_types Only returns shows of these types. Separate the ids with commas.

Example

const response = await fetch(
  "https://confirmed.show/api/v1/your-production/shows.json?future_shows_limit=60"
);
const shows = await response.json();

for (const show of shows) {
  console.log(show.name, show.ts_utc, show.venue?.city);

  if (show.meta.tickets_url) {
    console.log("  tickets:", show.meta.tickets_url);
  }

  if (show.meta.social_card) {
    console.log("  og:image:", show.meta.social_card);
  }
}

If anything here doesn't behave the way this page describes, write to support@confirmed.show and we'll sort it out.