API Documentation Preview
Below is a preview of the API structure. Contact us for early API access.
Overview
The Podlovin API provides two core capabilities: generating host-read podcast ads from any episode, and translating episodes into 10 languages in the host's own voice. Send us audio, we handle the rest.
Base URL
https://api.podlovin.ai/v1
Authentication
All API requests require an API key passed in the Authorization header.
Authorization: Bearer pk_live_xxxxxxxxxxxxxxxx
Key prefixes: pk_live_ for production, pk_test_ for sandbox (watermarked output).
Quickstart
Generate your first ad or translate an episode:
# 1. Upload podcast (extracts all voices automatically) POST /v1/podcasts { "source_url": "https://example.com/episode-47.mp3", "name": "Coffee Talk - Episode 47" } # Response (immediate) { "pod_id": "pod_7x9k2m4n", "status": "processing" } # Webhook: podcast.ready (when processing completes) { "event": "podcast.ready", "pod_id": "pod_7x9k2m4n", "data": { "voices": [ { "voice_id": 0, "speaking_percent": 65.2, "is_primary": true }, { "voice_id": 1, "speaking_percent": 28.2 } ] } } # 2a. Generate ad using extracted voice POST /v1/generate { "pod_id": "pod_7x9k2m4n", "voice_id": 0, "script": "Try Acme Coffee. Use code PODCAST for 20% off." } # 2b. Or translate the episode POST /v1/localize { "pod_id": "pod_7x9k2m4n", "voice_id": 0, "languages": ["es", "fr", "ja"] }
Podcasts
Upload a podcast episode. Voices are automatically extracted via speaker diarization.
Get podcast manifest including all detected voices and quality scores.
Voices
List all voices detected in a podcast.
Get voice details including extracted reference clips and quality scores.
Generate Ad
Generate an ad read using a voice from an uploaded podcast. Results delivered via webhook.
Request Body
| Parameter | Type | Description |
|---|---|---|
pod_id |
string | Podcast ID from upload (required) |
voice_id |
int | Speaker index: 0, 1, 2... (required) |
script |
string | Ad copy to generate, max 500 chars (required) |
options.style |
string | conversational | energetic | calm (default: conversational) |
options.speed |
float | 0.8 - 1.2 (default: 1.0) |
Generations
Get generation details and download the output audio URL.
Localize
Translate a podcast episode into one or more languages. Podlovin separates vocals from background audio, translates the speech in the host's voice, and recombines with the original background. Results delivered via webhook.
Request Body
| Parameter | Type | Description |
|---|---|---|
pod_id |
string | Podcast ID from upload (required) |
voice_id |
int | Speaker index: 0, 1, 2... (required) |
languages |
string[] | Target language codes (required, see below) |
options.preserve_background |
bool | Separate and recombine background audio (default: true) |
Supported Languages
zh
French fr
German de
Italian it
Japanese ja
Korean ko
Portuguese pt
Russian ru
Spanish es
English en
Localizations
Get localization details including output audio URLs for each language.
Webhooks
All async operations deliver results via webhooks:
podcast.ready— Podcast processed, voices extractedpodcast.failed— Processing failedgeneration.complete— Ad audio readygeneration.failed— Generation failedlocalization.complete— Translated audio readylocalization.failed— Localization failed