Shows and usage
A network can run all its shows from one account: one balance, one team, and each project in its show. Keys, connected apps and webhook endpoints can be limited to one show, and usage is counted per show, for billing your shows yourselves. An account with one podcast doesn’t need any of this.
Owners and admins add shows on the account page under Shows, or with a key that has shows:manage:
curl https://api.podsworth.com/v1/shows \ -H "Authorization: Bearer $PODSWORTH_KEY" -H "Content-Type: application/json" \ -d '{"name": "Acme Weekly", "defaults": {"metadata": {"network": "acme"}}}'{ "id": "shw_…", "name": "Acme Weekly", "defaults": { "metadata": { "network": "acme" } }, "archived": false, "createdAt": "…", "updatedAt": "…" }GET /v1/shows (projects:read) ?archived=true lists the archived ones tooGET /v1/shows/{id} (projects:read)POST /v1/shows (shows:manage)PATCH /v1/shows/{id} (shows:manage) {"name"}, {"defaults"}, {"archived": true | false}Names are up to 200 characters and unique among the account’s shows (409 duplicate_show), and an account has
up to 200 shows that aren’t archived (409 show_limit). Archiving takes a show off the lists and stops new
projects in it (400 show_archived); its projects, keys and endpoints keep it, and it can be unarchived. Shows are
shared by live and test.
Defaults apply to the show’s new projects: metadata is added to each project’s own (the project’s keys win).
keep (true or false) decides whether the show’s projects keep their files (Keeping files).
Changing them doesn’t touch existing projects. PATCH replaces the whole defaults object. metadata has the
same limits as a project’s (400 invalid_metadata).
delivery lists the show’s default destinations, [{"destinationId": "dst_…"}] (up to 5; one that isn’t the
account’s is 400 unknown_destination): its new projects’ files are sent there when they complete, unless the
project names its own. See Sending to Drive and Dropbox.
Projects in a show
Section titled “Projects in a show”Give a project its show when you create it:
{ "show": "shw_…", "files": [{ "fileName": "host.wav" }] }The project’s show holds it, and GET /v1/projects?show=shw_… lists one show’s projects. On the account page,
someone uploading picks the show at checkout. An unknown show is 400 unknown_show.
Keys and apps limited to a show
Section titled “Keys and apps limited to a show”When you create a key on the account page, choose a Show to limit it to that show. People connecting an assistant (MCP) can do the same on the consent page. A key or app limited to a show:
- puts every project it creates in its show (asking for another is
403show_limited); - sees only that show’s projects (another show’s are
404) and only their events, in the events feed and on its webhook endpoints; - makes webhook endpoints for its show only;
- can’t read or change what spans the account (
GET /v1/ledger,GET /v1/orders, the purchases, the plan, auto top-up and invoicing:403show_limited) or manage shows.
It can still read the account’s balance (with account:read), and spend its credits like any key with
credits:spend. GET /v1/me answers show for a key limited to one.
Webhooks for a show
Section titled “Webhooks for a show”An endpoint created with a show gets only that show’s projects’ events, and nothing account-wide
(credits.*, subscription.*):
{ "url": "https://acme.example.com/podsworth", "show": "shw_…" }Each project event’s data.object.show says which show it’s from, for endpoints that get every show’s events.
GET /v1/usage?from=2026-10-01&to=2026-10-31&groupBy=show (account:read)GET /v1/usage.csv?from=2026-10-01&to=2026-10-31&groupBy=show{ "from": "2026-10-01", "to": "2026-10-31", "mode": "live", "groupBy": "show", "total": { "seconds": 54000, "projects": 31 }, "rows": [ { "show": { "id": "shw_…", "name": "Acme Weekly" }, "seconds": 36000, "projects": 20 }, { "show": null, "seconds": 18000, "projects": 11 } ]}secondsare the credits the projects took, refunds taken off, on the day they happened. Store orders paid with credits count, as well as API projects.groupByisday(one row per day with usage,datein US Central time) orshow(show: nullis projects in no show). Without it,rowsis empty andtotalhas the sum.fromdefaults to the first of this month andtoto today, both included; at most 366 days.show=shw_…counts one show. A key limited to a show always gets its own show’s usage.- A test key gets what live would have charged for its test projects.
- The
.csvform has the same rows with minutes, for a spreadsheet.