Manage podcasts on Transistor.fm via their API. Use when creating, publishing, updating, or deleting podcast episodes, uploading audio files, listing shows/episodes, checking analytics, or managing private podcast subscribers. Triggers on any Transistor.fm podcast management task.
Scanned 9/5/2026
Install to Claude Code
npx -y skills add dvcrn/openclaw-skills-marketplace --skill transistor-fm --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Transistor Fm?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/dvcrn-transistor-fm)More formats (shields.io, HTML) on the badges page.
---
name: transistor-fm
description: "Manage podcasts on Transistor.fm via their API. Use when creating, publishing, updating, or deleting podcast episodes, uploading audio files, listing shows/episodes, checking analytics, or managing private podcast subscribers. Triggers on any Transistor.fm podcast management task."
---
# Transistor.fm Podcast Management
Manage podcasts hosted on Transistor.fm through their REST API.
## Prerequisites
- Transistor.fm API key (from Dashboard → Account)
- Store as environment variable `TRANSISTOR_API_KEY` or retrieve from a secrets manager
## Quick Reference
All requests use base URL `https://api.transistor.fm/v1` with header `x-api-key: <key>`.
Rate limit: 10 requests per 10 seconds.
For full endpoint details, parameters, and response formats, see [references/api.md](references/api.md).
## Core Workflows
### List shows and episodes
```bash
# Get all shows
curl -s "$BASE/shows" -H "x-api-key: $KEY"
# Get episodes for a show
curl -s "$BASE/episodes?show_id=SHOW_ID" -H "x-api-key: $KEY"
```
### Upload audio and create an episode
Three-step process:
```bash
# 1. Get authorized upload URL
UPLOAD=$(curl -s "$BASE/episodes/authorize_upload?filename=episode.mp3" -H "x-api-key: $KEY")
# Extract upload_url and audio_url from response
# 2. Upload the audio file
curl -X PUT -H "Content-Type: audio/mpeg" -T /path/to/episode.mp3 "$UPLOAD_URL"
# 3. Create episode with the audio_url
curl -s "$BASE/episodes" -X POST -H "x-api-key: $KEY" \
-d "episode[show_id]=SHOW_ID" \
-d "episode[title]=My Episode" \
-d "episode[summary]=Short description" \
-d "episode[audio_url]=$AUDIO_URL"
```
Episode is created as **draft**. Publish separately.
### Publish an episode
```bash
# Publish now
curl -s "$BASE/episodes/EPISODE_ID/publish" -X PATCH -H "x-api-key: $KEY" \
-d "episode[status]=published"
# Schedule for future
curl -s "$BASE/episodes/EPISODE_ID/publish" -X PATCH -H "x-api-key: $KEY" \
-d "episode[status]=scheduled" \
-d "episode[published_at]=2026-03-01 09:00:00"
```
### Check analytics
```bash
# Show-level (last 14 days default)
curl -s "$BASE/analytics/SHOW_ID" -H "x-api-key: $KEY"
# Episode-level
curl -s "$BASE/analytics/episodes/EPISODE_ID" -H "x-api-key: $KEY"
# Custom date range (dd-mm-yyyy)
curl -s "$BASE/analytics/SHOW_ID?start_date=01-01-2026&end_date=31-01-2026" -H "x-api-key: $KEY"
```
## Tips
- Episodes are always created as drafts — publish is a separate step, allowing review before going live
- Use `episode[increment_number]=true` to auto-assign the next episode number
- `episode[description]` supports HTML; `episode[summary]` is plain text
- Audio upload URLs expire in 600 seconds — upload promptly after authorizing
- Use sparse fieldsets to reduce response size: `fields[episode][]=title&fields[episode][]=status`

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!