Generate a podcast
Create a new podcast and batch-generate its episodes from a prompt.
Jellypod creates the podcast, then asynchronously plans episode topics,
writes scripts, and generates audio. Provide your own title and
description, or omit them to have the LLM generate them from the
prompt.
The series plan (podcast metadata and episode outlines) is generated synchronously via LLM before the response is returned. Episode audio generation happens asynchronously after the response.
Returns 202 Accepted with the full podcast and episode stubs
(including LLM-generated titles). Poll individual episodes via
GET /v1/episodes/{id} to check audio generation progress.
Generation time: 5–30 minutes depending on the number of episodes and their length. The initial response (with titles) takes ~5–15 seconds.
Rate limit: Counts as num_episodes requests against the episode
generation rate limit (10 req/min).
Concurrent limit: Max 5 episodes generating simultaneously per
organization. Returns 429 with concurrent_limit_exceeded if
exceeded.
Authorization
BearerAuth Jellypod API key. Create and manage keys from the Jellypod dashboard under Settings → API Keys.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://api.jellypod.com/v1/podcasts/generate" \ -H "Content-Type: application/json" \ -d '{ "host_ids": [ "string" ] }'{
"status": "accepted",
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"title": "The AI Revolution",
"description": "A deep dive into how artificial intelligence is transforming industries.",
"image_url": null,
"host_ids": [
"xK9mQ2pL"
],
"languages": [
"en"
],
"show_order": "episodic",
"show_visibility": "unlisted",
"url": "https://the-ai-revolution-a1b2c3.jellypod.com",
"rss_feed_url": "https://the-ai-revolution-a1b2c3.jellypod.com/rss.xml",
"episode_ids": [
"d4e5f6a7-b8c9-0123-def4-567890abcdef"
],
"created_at": "2026-03-01T10:00:00.000Z",
"updated_at": "2026-03-01T10:00:30.000Z",
"episodes": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"title": "string",
"status": "generating",
"episode_number": 0
}
]
}
}{
"error": {
"code": "bad_request",
"message": "string",
"request_id": "string",
"details": [
{
"field": "string",
"message": "string"
}
]
}
}{
"error": {
"code": "bad_request",
"message": "string",
"request_id": "string",
"details": [
{
"field": "string",
"message": "string"
}
]
}
}{
"error": {
"code": "bad_request",
"message": "string",
"request_id": "string",
"details": [
{
"field": "string",
"message": "string"
}
]
}
}{
"error": {
"code": "bad_request",
"message": "string",
"request_id": "string",
"details": [
{
"field": "string",
"message": "string"
}
]
}
}{
"error": {
"code": "bad_request",
"message": "string",
"request_id": "string",
"details": [
{
"field": "string",
"message": "string"
}
]
}
}{
"error": {
"code": "bad_request",
"message": "string",
"request_id": "string",
"details": [
{
"field": "string",
"message": "string"
}
]
}
}Was this page helpful?
Upload podcast cover image PUT
Upload or replace the podcast's cover image. Send the raw image bytes as the request body with the appropriate `Content-Type` header. **Supported formats:** JPEG, PNG, WebP. **Maximum size:** 10 MB.
Get account info GET
Returns the organization's account details including credit balance, subscription status, and feature entitlements.