Skip to content

Developers

show.fm ships a public, read-only JSON API and an embeddable audio player you can drop into any website. No account, no API key, no sign-up: if a show is published on show.fm, you can read it and embed it.

There is also an MCP server, which is a different thing for a different job: it is for your own account rather than for public content, and it lets an AI assistant you already use read your own show when you ask it to. See Connect an AI assistant.

Know what the API is (and isn't)

  • Read-only. Every public endpoint answers GET, HEAD, and OPTIONS only. There are no write endpoints.
  • Keyless. No authentication is required. An auth scheme is reserved for future endpoints, but v1 read endpoints ignore any credentials you send.
  • Published content only. The API exposes exactly what a show's public RSS feed and listen pages already expose: published episodes of active, show.fm-hosted shows. Drafts, scheduled episodes, and private data are never returned.
  • Browser-friendly. CORS is open (Access-Control-Allow-Origin: *), so you can call it directly from client-side JavaScript on any origin.
  • Fair use. There are no hard published quotas, but abusive traffic is rate limited at the edge. See fair-use limits.

Start with the base URL

https://api.show.fm/v1

All endpoints are versioned under the /v1 path prefix. Additive changes (new fields, new endpoints) land in v1 without notice; breaking changes only ever ship as a new version. Read the versioning policy for the guarantees.

Fetch a podcast

bash
curl https://api.show.fm/v1/podcasts/acme-radio-hour
json
{
	"data": {
		"id": "b7e4c1a0-5f2d-4e8a-9c3b-1d6f8a2e4c90",
		"slug": "acme-radio-hour",
		"title": "The Acme Radio Hour",
		"author": "Jess Doe",
		"episode_count": 42,
		"links": {
			"listen": "https://acme-radio-hour.show.fm",
			"feed": "https://rss.cdn.media/b3d1a9c2-4e5f-4a6b-8c7d-9e0f1a2b3c4d"
		}
	}
}

(Response truncated; see the full payload reference.)

Embed a player in two lines

Paste this anywhere HTML is allowed. The player fetches episode data from the API and renders directly in your page:

html
<script async src="https://embed.cdn.media/player/v1.js"></script>
<showfm-player episode="3f9d2b6e-8c41-4a57-b2f0-6e5d4c3b2a19"></showfm-player>

Or embed a whole show, so the player always plays the newest episode:

html
<script async src="https://embed.cdn.media/player/v1.js"></script>
<showfm-player podcast="acme-radio-hour"></showfm-player>

Full attribute reference, iframe fallback, and oEmbed support are on the embedded player page.

Get ready-made embed code from the dashboard

If you host on show.fm, you don't need to hand-write embeds: every published episode has a Share and embed card in the episode workspace, and Settings → Distribution has a show-level embed builder. See Share and embed your episodes.

Explore the docs

  • API reference: every v1 endpoint, with request conventions, payload shapes, errors, pagination, and caching.
  • Connect an AI assistant (MCP): connect Claude, Cursor, ChatGPT or Codex to your own account and ask about your own show. Read-only, and included on every paid plan.
  • Embedded player: the <showfm-player> web component, iframe fallback, theming, and oEmbed.
  • Webhooks: HTTP callbacks from your automations, with magic-tag payloads.
  • Versioning & policies: versioning and deprecation guarantees, the reserved auth scheme, fair-use limits, and the changelog.

Was this page helpful?