API Reference

The Radio Index API lets you pull data from our catalog — 3,054 shows, 233,264 episodes, cast and crew, broadcast dates, and audio file metadata. All responses are JSON.

Authentication

Every endpoint requires an API key. Grab one from your Dashboard. Keys start with ri_. Pass it as a Bearer token:

curl -H "Authorization: Bearer ri_your_key_here" \
  https://api.radioindex.org/shows

Each key has an hourly rate limit. Go over it and you get a 429 with a Retry-After header.

Shows

Browse and look up radio shows. Filter by network, genre, or year.

GET /shows

List shows. All parameters are optional — call with no params to get everything.

GET /shows/:id

Get a single show with its genres, networks, and 10 most recent episodes.

Episodes

Get episode metadata — title, logline, broadcast date, duration.

GET /episodes

List episodes. At least one filter is recommended.

GET /episodes/:id

Get a single episode. Use expand to include related data.

POST /episodes/batch

Fetch up to 100 episodes at once by ID.

People

Actors, writers, directors, and other contributors.

GET /people

List people. Filter by name, role, or show.

GET /people/:id

Get a person's profile — roles, top shows, Wikipedia photo.

Genres

All the genres in the catalog and how many shows and episodes each one has.

GET /genres

List all genres. No parameters.

GET /genres/:id

Get a genre with its top shows.

Airdates

Look up what aired on a specific date, browse by year and month, or pull a date range.

GET /airdates

List dates that have episodes. Filter by year and month.

GET /airdates/:date

Get all episodes that aired on a specific date.

GET /airdates/range

Get episodes in a date range.

Files

Audio file metadata — duration, bitrate, sample rate, and quality grade.

GET /files

List audio files. You must pass either episode or show.

GET /files/:id

Get a single file with audio quality metrics.

Base URL for all authenticated endpoints: https://api.radioindex.org

Pagination

Every list endpoint uses cursor-based pagination. The response includes a cursor you pass to get the next page.

Default page size is 50. You can change it with ?limit=, max 100. When has_more is false, you're at the end.

Errors

Errors come back with a standard HTTP status code and a JSON body.

400Bad request — missing or invalid parameters
401Unauthorized — missing or invalid API key
404Resource not found
429Rate limit exceeded
500Internal server error

For LLMs

Machine-readable docs that follow the llms.txt spec.

Get started
Create an API key from your Radio Index account.
Open Dashboard