Public — Opt-in
Recipient-facing podcast opt-in (magic-link token)
Resolve an opt-in invitation token into the context needed to render the screen
Public endpoint authenticated solely by the opaque magic-link token in the path — no API key is required. Returns the curated details needed to render the opt-in page: podcast title, network name, invitation status and expiry, and whether the recipient has already passed email-code verification (plus the current code's expiry, if one is outstanding). Internal ids, the raw verification code, and inviter identity are never exposed.
Submit the opt-in registration: opt the podcast in and record advertiser preferences
Public, token-authenticated final step that records the recipient's opt-in: it flips the podcast to opted-in, saves the contact details, blocked ad categories, and any supplied podcast metadata, and optionally links a previously created READY voice as the podcast's primary voice. Requires that the emailed code has already been verified, otherwise returns 409. The call is idempotent on retry (the original completion timestamp is preserved) and emits an optin.completed webhook to the network.
Generate and email a fresh verification code to the podcast owner
Public, token-authenticated action that generates a numeric verification code and emails it to the podcast's primary contact; the recipient must later submit it to verify-code before completing the opt-in. Code sending is an explicit POST (never a side-effecting GET). The email send is best-effort — the code is stored even if delivery fails. Keyless callers are rate limited per token and per client IP; exceeding the limit returns 429 with a Retry-After hint. A valid API key for the podcast's network bypasses the rate limit.
Transcribe an audio clip with speaker diarization (auto-crop helper)
Public, token-authenticated helper that transcribes an uploaded audio clip (up to 25 MB) into diarized segments, used to assist cropping host audio for voice samples. Requires prior code verification, otherwise returns 409. Keyless callers are rate limited per token and per client IP (429 on excess); a valid API key for the podcast's network bypasses the limit. The transcription runs against an upstream provider, which may return 502 on failure.
Submit a verification code
Public, token-authenticated step that checks the numeric code previously emailed via send-code. Verification must succeed before the opt-in can be completed. Attempts are rate limited per token and per client IP, and the code itself locks out after too many incorrect tries — both cases return 429, after which the recipient must request a fresh code. An expired or never-sent code returns 409.