Shows
The shows endpoint
This endpoint gives you your production's public shows as JSON: their dates, venues, promotion and confirmed lineups. It's what you point a tour page or a listings site at.
https://confirmed.show/api/v1/<your-production>/shows.jsonIt takes 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.
Making a show public
You publish shows from the listing: select the ones you want and set their publish status from the toolbar. You can put a show back to private the same way, and it 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 line-up 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 |
|---|---|
| The show's id |
| Which of your show types it is |
| The show's public name |
| The show type's emoji, when it has one |
| The description you show the public |
| How long the show runs, in minutes |
| Start time where the show happens, in the venue's timezone |
| The same start time in UTC, as ISO 8601 |
| Whether the show has already ended |
| The show's promotion in full: pictures, video and blurb. See Promotion. |
| How many seats are left, when the room has a capacity on record |
| How many act spots the bill holds |
| The venue |
| The room |
| The confirmed hosts |
| The confirmed acts |
| Hosts and acts together, in running order |
| 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. It's what you build a listing card or a show page out of.
Field | Description |
|---|---|
| Where the audience buys tickets |
| The show's own page, separate from the ticket seller |
| The main promotional picture |
| A thumbnail of it, for a dense listing |
| The picture a link to the show unfurls into on socials. Put it in your |
| A promotional video |
| Poster artwork, usually portrait and larger than the rest |
| A short description for listings and socials |
A field only turns up once a show has something in it, so check before you use one. A show with no promotion at all gives you an empty meta rather than leaving the key out.
Every picture is a URL you can use directly. They're sized to whatever shape the production asked for, so covers and posters from one production arrive at a consistent aspect ratio and you can lay them out without measuring each one.
Where the values come from
Anything a show doesn't carry itself falls back to the defaults you set for its show type under Live Pages, so you can give a whole show type one ticket link and one cover and only override the nights that differ. Where a show sets its own, that's what you get: it's the most specific thing we hold about that night, so it wins over the show type's default and over any city or venue exception.
Fields a production adds for itself under Data & API don't come out here. This endpoint needs no key, and we'd rather not put something on the open web that a production meant for its own integrations. A production's own API key reads and writes all of it through the private Shows API.
Venue fields
Field | Description |
|---|---|
| Venue name |
| The city it's in |
| ISO country code |
| Street address |
| Postcode |
| IANA timezone, which is what |
| Venue description |
Room fields
Field | Description |
|---|---|
| Room name |
| Room description |
| Whether the room is wheelchair accessible |
| Whether there's a green room |
| Whether there's a DI box |
| Notes on the projector |
Performer fields
Everyone in hosts, acts and lineup arrives in this shape.
Field | Description |
|---|---|
| Their name |
|
|
| How long they're on for, in minutes. Acts only. |
| Their bio, unless the production keeps bios off this endpoint |
| Headshot URL |
| Their website |
| Twitter handle or URL |
| |
| |
| TikTok |
| Whatever they're plugging at the moment |
Add -thumb to a headshot URL for a small version of it.
Query parameters
Parameter | Description |
|---|---|
| How many days ahead to include. Thirty by default. |
| Fetches one show by id, whatever the date window says |
| Show type ids to narrow to, separated by 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 [email protected] and we'll sort it out.