EchoPod API Documentation
Overview
The EchoPod API allows developers to transform written content into professional-quality podcasts automatically.
Key Features
- Multiple Formats: Generate narrative or discussion-style podcasts
- AI Voices: Four different voice options (2 male, 2 female)
- Content Modes: Optimize (summarize) or preserve (full content) modes
- Music Options: 16 different music tracks
- Custom Instructions: Add specific AI instructions via prompt_instructions
- Async Processing: Non-blocking API with status polling
- Automatic Retries: Failed generations automatically retry up to 3 times with exponential backoff
Base URL
https://backend.echo-pod.ai/enterprise
Authentication
The EchoPod API uses API key authentication. Contact the EchoPod team to obtain your API key.
Include the API key in the request header for all endpoints:
X-API-Key: your-api-key-here
Endpoints
Creates a new podcast generation task. The task will automatically retry up to 3 times if it fails.
Request Parameters
| Parameter | Type | Required | Description | Default |
|---|---|---|---|---|
content |
string | Yes | The text content to convert (max 100,000 chars) | - |
title |
string | Yes | The title of the podcast episode | - |
format |
string | No | Podcast format: narrative or discussion | narrative |
mode |
string | No | Content processing: optimize or preserve | optimize |
voice |
string | No | Voice selection for narrative format | en_m_1 |
music |
string | No | Background music selection | moodclubbin |
prompt_instructions |
string | No | Additional AI instructions | - |
en_m_1 - English Male Voice 1 (default)
en_m_2 - English Male Voice 2
en_f_1 - English Female Voice 1
en_f_2 - English Female Voice 2
Response Examples
{
"success": true,
"task_id": "550e8400-e29b-41d4-a716-446655440000",
"status_url": "https://backend.echo-pod.ai/enterprise/api/v1/status/550e8400-e29b-41d4-a716-446655440000",
"message": "Podcast generation started"
}
{
"success": false,
"error": "Missing required field: title"
}
Try Generate Podcast
Response
Retrieves the status and results of a podcast generation task.
Response States
{
"state": "pending",
"status": "Task is waiting to be processed"
}
{
"state": "progress",
"status": "Processing",
"progress": {
"message": "Generating podcast script",
"progress_percent": 25,
"process_stage": "script_generation"
}
}
Completed Response Parameters
| Parameter | Type | Description |
|---|---|---|
status |
string | Task completion status |
audio_url |
string | Direct URL to the generated audio file (MP3) |
listen_url |
string | Web page URL for listening to the podcast |
embed_url |
string | Complete URL for embedding the audio player |
podcast_id |
string | Unique identifier for the podcast |
title |
string | Title of the generated podcast |
script |
string | Full transcript/script of the generated podcast |
audio_info.duration |
number | Audio duration in seconds |
audio_info.file_size |
number | Audio file size in MB |
{
"state": "completed",
"result": {
"status": "completed",
"audio_url": "https://podcast.echo-pod.ai/api/abc123/EchoPod-2024-03-15-103045-my-podcast-2024-03-15.mp3",
"listen_url": "https://listen.echo-pod.ai/abc123",
"embed_url": "https://echo-pod.ai/api/embed?podcast=abc123",
"podcast_id": "550e8400-e29b-41d4-a716-446655440000",
"title": "My Podcast Title",
"script": "Full transcript of the generated podcast...",
"audio_info": {
"duration": 180,
"file_size": 3.5
}
}
}
Try Check Status
Response
Advanced Features
Discussion Format
The discussion format creates a dialogue between two speakers (a female and a male voice). The voice parameter is ignored in discussion format.
Content Processing Modes
- Transforms content into engaging, listener-optimized podcast script
- Restructures content for natural speech flow and audio comprehension
- Reorganizes information in logical sequence for listener engagement
- Adds conversational transitions and audio-friendly phrasing
- Filters for auditory relevance
- Condenses complex data into benefit-focused summaries
- Creates cohesive narrative arc with varied sentence structures
- Preserves as much of the original content as possible
- Maintains exact structure and order of content
- Only modifies what's necessary for spoken format
- Preserves all facts, data points, quotes, and information exactly
- Uses exact wording from content when possible
- Does not summarize content
- Maintains all figures and technical details
Error Handling
Automatic Retry Mechanism
If podcast generation fails, the system automatically retries up to 3 times with exponential backoff:
- Retry 1: After 60 seconds
- Retry 2: After 120 seconds
- Retry 3: After 240 seconds
Common Error Codes
| Status Code | Description |
|---|---|
| 400 | Bad Request |
| 401 | Unauthorized |
| 429 | Too Many Requests |
| 500 | Internal Server Error |
| 502 | Bad Gateway |
| 503 | Service Unavailable |
Rate Limits
| Limit Type | Value | Scope |
|---|---|---|
| Requests per minute | 5 | Per API key |
| Requests per hour | 20 | Per API key |
| Requests per day | 100 | Per API key |
| Max content length | 100,000 characters | Per request |
Embeddable Audio Player
EchoPod provides an embeddable audio player that can be integrated into any website using an iframe. The player features a transparent background and comes in two variants.
Base URL
https://echo-pod.ai/api/embed
Parameters
| Parameter | Type | Required | Description | Default |
|---|---|---|---|---|
podcast |
string | Yes | The podcast short ID (use embed_url from completed response for full URL) | - |
variant |
string | No | Player size: compact or normal | normal |
Player Variants
Compact Version (350×85)
Ideal for sidebar integration and smaller spaces. Features play controls and progress bar in a single row.
<iframe
src="https://echo-pod.ai/api/embed?podcast=0OEMN0&variant=compact"
width="350"
height="85"
frameborder="0"
allowtransparency="true">
</iframe>
Normal Version (600×220)
Full-featured player with description text, volume control, and larger interface elements.
<iframe
src="https://echo-pod.ai/api/embed?podcast=0OEMN0&variant=normal"
width="600"
height="220"
frameborder="0"
allowtransparency="true">
</iframe>
- Compact: 350×85px - Perfect for sidebars, footers, or compact layouts
- Normal: 600×220px - Ideal for content areas, blog posts, or featured sections