How to Automate Podcast Publishing With the Auphonic API
The Auphonic API gives you a /api/productions.json endpoint that accepts a preset UUID and a file upload, then returns a production UUID you poll or wait on. One call handles leveling, noise reduction and export. It needs paid credits — the free tier has no API access.
If you publish weekly and already have a script doing the upload, bolting this on saves the manual browser step. If you publish monthly, do not bother.
What does the API flow look like end to end?
Four calls, in this order:
GET /api/presets.json— list your saved presets and grab theuuidof the one you want.POST /api/productions.json— create a production, passingpreset,titleand optionallywebhook_url.POST /api/production/{uuid}/upload.json— multipart file upload withinput_file.GET /api/production/{uuid}.json— pollstatus_stringuntilDone.
Authentication is HTTP Basic with your username and API password from the account page — a separate password from your login, which is the first thing people get wrong.
How do you avoid polling?
Pass webhook_url when creating the production. Auphonic POSTs a JSON body to that URL when processing finishes, including status, output_files and metadata.
Two things to know:
- The webhook fires on failure too. Branch on
status == 3for done; anything else is an error state worth logging loudly. - There is no signature header by default. If the endpoint is public, verify by fetching the production back with your credentials rather than trusting the payload.
Polling with a 30-second interval and a 15-minute ceiling is simpler and fine for episode-length files. Webhooks matter when you run many short jobs.
What breaks in unattended pipelines?
Silent upload failure. The upload endpoint returns 200 while the production sits at status_string: "Error" because the file was truncated. Always assert on status after upload, not on the HTTP code.
Preset drift. Someone edits the preset in the browser and your pipeline’s output loudness changes overnight. Presets are server-side objects; version your own copy of the settings in code and create presets via API.
Credit exhaustion. Jobs fail with an error you will not see unless you alert on it. Check the account credit balance before January, when annual plans renew.
Is it worth building a pipeline at all?
Only if the surrounding steps are also automated. Processing audio automatically but still uploading the file to your podcast host by hand moves the bottleneck, not the work.
A realistic full chain: recorder → local trim in ffmpeg → Auphonic API → download output → host API → update RSS. That is about 120 lines of Python and one cron entry.
| Step | Tool | Automatable |
|---|---|---|
| Trim silence/retakes | ffmpeg or editor | Yes, crudely |
| Loudness + noise | Auphonic API | Yes |
| Upload to host | Host API | Usually |
| Show notes | Your CMS | Usually |
Cost math
Credits run roughly $11 per 9 hours of processing, with Business at about $99/month for 100 hours. A 45-minute weekly show uses about 3 hours monthly, so credits are the correct tier — the subscription is for teams with several shows.
Key Takeaways
- The API needs paid credits; the free tier has no programmatic access.
- Four endpoints: presets, create production, upload, poll or webhook.
- Use the API password, not your account login password.
- Webhooks fire on failure too — branch on status, do not assume success.
- Check the production status after upload, since HTTP 200 does not mean processed.
