Skip to main content

Shows

List, create, update, and delete shows for your station.

List shows

GET /v1/shows

Returns all shows for your station, sorted alphabetically by title.

Response

[
{
"id": 15,
"title": "Morning Show",
"description": "The best way to start your day",
"image": "https://cdn.example.com/shows/morning.png",
"published": true,
"presenter": "Jane Smith"
},
{
"id": 16,
"title": "Afternoon Drive",
"description": "Your afternoon soundtrack",
"image": "https://cdn.example.com/shows/afternoon.png",
"published": true,
"presenter": "John Doe"
}
]

Show fields

FieldTypeDescription
idintegerUnique show ID
titlestringShow name
descriptionstringShow description
imagestringShow artwork URL (empty string if none)
publishedbooleanWhether the show is visible in the player and widgets
presenterstringPresenter name (empty string if not set)
info

Both published and unpublished shows are returned. Use the published field to filter if needed.

Example

curl -H "X-API-Key: your-key" \
https://api.autopod.xyz/v1/shows

Get a single show

GET /v1/shows/{id}

Returns a single show by ID.

Response

Returns the same show object format as the list endpoint.

Errors

  • 404 Not Found — Show doesn't exist or doesn't belong to your stream

Example

curl -H "X-API-Key: your-key" \
https://api.autopod.xyz/v1/shows/15

Create a show

POST /v1/shows

Creates a new show. Requires the shows:write scope.

Request body

{
"title": "Morning Show",
"description": "The best way to start your day",
"image_url": "https://example.com/shows/morning.png",
"published": false,
"presenter": "Jane Smith"
}
FieldTypeRequiredMax lengthDescription
titlestringYes200Show name
descriptionstringNo5000Show description
image_urlstringNo2000Show artwork URL (HTTP/HTTPS)
publishedbooleanNoWhether to show in player/widgets (default: false)
presenterstringNo200Presenter name

Response

HTTP 201 Created

Returns the created show object.

What happens behind the scenes

When you create a show via the API, AutoPod also creates a default series for it. Series are used internally to link shows to episodes and the schedule — you don't need to manage them directly.

Errors

  • 400 Bad Request — Missing title, title too long, invalid URL
  • 403 Forbidden — Missing required scope

Example

curl -X POST \
-H "X-API-Key: your-key" \
-H "Content-Type: application/json" \
-d '{"title": "Evening Jazz", "description": "Smooth jazz every evening", "published": true}' \
https://api.autopod.xyz/v1/shows

Update a show

PUT /v1/shows/{id}

Updates an existing show. Only include the fields you want to change. Requires the shows:write scope.

Request body

All fields are optional:

{
"title": "Updated Show Name",
"description": "New description",
"published": true,
"presenter": "New Presenter"
}
FieldTypeMax lengthDescription
titlestring200Show name
descriptionstring5000Show description
publishedbooleanVisibility in player/widgets
presenterstring200Presenter name

Response

Returns the updated show object.

Errors

  • 400 Bad Request — Validation error
  • 403 Forbidden — Missing required scope
  • 404 Not Found — Show doesn't exist or doesn't belong to your stream
info

Sending an empty update (no fields) returns the show unchanged.

Example

curl -X PUT \
-H "X-API-Key: your-key" \
-H "Content-Type: application/json" \
-d '{"published": true, "presenter": "Jane & John"}' \
https://api.autopod.xyz/v1/shows/15

Delete a show

DELETE /v1/shows/{id}

Permanently deletes a show. The show must have no active episodes. Requires the shows:write scope.

Response

HTTP 204 No Content

No response body.

Requirements

The show must have no active (non-archived) episodes. If the show still has episodes, you'll get a 409 Conflict error:

{
"message": "Cannot delete show with existing episodes. Archive the episodes first."
}

Archive all the show's episodes first (via the API or dashboard), then retry the delete.

What gets deleted

  • The show record
  • Associated series records
  • Associated metadata (presenter, etc.)

Episodes are not deleted — they must be archived separately before the show can be deleted.

Errors

  • 403 Forbidden — Missing required scope
  • 404 Not Found — Show doesn't exist or doesn't belong to your stream
  • 409 Conflict — Show still has active episodes

Example

curl -X DELETE \
-H "X-API-Key: your-key" \
https://api.autopod.xyz/v1/shows/15