Zapier TTS via HTTP: Audra OpenAI-compatible endpoint — Audra
Zapier has no native Audra action, and that is fine: the Webhooks by Zapier app turns any POST into a Zap step. This walkthrough builds a Zap that turns a new Google Docs row (or form submission) into a mastered MP3 in your Drive, using Audra's /v2/speech endpoint. No code, no custom integrations app.
The Zap, step by step
- Trigger: your source app (Google Forms, Docs, Airtable, Schedule, anything with a Zapier trigger). Map the script text to a field you can reference later.
- Action 1 — Webhooks by Zapier, Action Event: POST. URL: https://audratalks.com/v2/speech. Payload Type: Json.
- Data section: Authorization (send as header, value Bearer sk-audra-xxxx), Content-Type: application/json, then model=audra-essential, voice=june (or any /voices slug), text mapped from your trigger, format=mp3.
- Wrap the response in a File-type field, or follow with a Google Drive 'Upload File' action that consumes the raw response body as the file content.
- Name the file with a Zapier Formatter step: {{voice}}-{{timestamp}}.mp3, so episodes sort correctly in Drive.
Two settings that trip people up
- Auth header: in the Webhooks app, headers go under 'Send as headers' — type Authorization for the key and Bearer <your key> for the value. The Bearer prefix is required; a bare key returns 401.
- Silent failures: enable 'Continue on error' on the webhook step, then add a Filter step on {{status_code}} — 402 means you are out of credits (top up at /dashboard/billing), 429 means you hit 60 requests/minute on a free key. Zapier retries failed webhooks automatically; use an Idempotency-Key header (Formatter → UUID) so a retried Zap does not bill you twice.
Zapier-specific guardrails
Audra renders are not sub-second: a ~500-character script takes 1–3 minutes, and Zapier's webhook step will time out waiting for the response body. For scripts under ~8,000 characters you get the MP3 back in the step response (though it may already have been auto-queued as a background job — force synchronous behavior with an extra header X-Audra-Sync: true). For longer scripts, the Zap should submit to POST /v2/speech/jobs and a second Zap on a Schedule trigger polls the job URL every 15 minutes.
Rate limits matter in Zaps because 'every new row' can fan out: a Sheets import firing 50 rows at once will collide with the 60 RPM free-key limit (120 RPM once commercial). Batch your trigger or space the webhooks with a Delay step.
Full field reference lives at /docs. If you would rather start from an SDK example, /blog/audra-sdk-npm-python covers npm and pip.