/api/v1/podcastsCreate Podcast
Submit your content and get back a podcast ID. The AI will analyze your content and write a two-person conversation script.
Minimal Example
Only 3 fields are required. This is the simplest request you can make:
{
"title": "My First Podcast",
"content": [
{
"type": "text",
"value": "Your article or content goes here..."
}
]
}Required Parameters must include
organizationId stringYour organization ID. Find this in Dashboard → Settings.
"org_abc123"title stringA name for your podcast (1-200 characters).
"The Future of AI in 2024"content arrayThe source material for your podcast. This is what the AI will turn into a conversation.
Paste an article, blog post, or any text directly.
{
"content": [
{
"type": "text",
"value": "Paste your article, blog post, or any text here..."
}
]
}Link to a PDF, webpage, or document. We'll fetch and process it.
{
"content": [
{
"type": "url",
"value": "https://example.com/article.pdf"
}
]
}Combine text and URLs for richer content.
{
"content": [
{ "type": "text", "value": "Introduction paragraph..." },
{ "type": "url", "value": "https://example.com/research.pdf" },
{ "type": "text", "value": "Additional context..." }
]
}Optional Parameters defaults provided
style string · default: "conversational"How the two speakers should interact:
conversational Casual, friendly chat
interview Q&A format, one asks questions
educational Teaching tone, explains concepts
debate Different viewpoints discussed
{
"style": "interview"
}targetDuration number · default: 5How long the podcast should be, in minutes (1-60).
{
"targetDuration": 10
}speakers objectCustomize the two voices. By default, uses Alex (male host) and Olivia (female guest). See available voices.
{
"speakers": {
"host": {
"voice": "Alex",
"displayName": "Dr. Smith"
},
"guest": {
"voice": "Olivia",
"displayName": "AI Expert"
}
}
}description string · optionalA short description of the podcast (for your reference).
model string · default: "inworld-tts-1.5-mini"Which voice synthesis model to use:
inworld-tts-1.5-mini Fastest, efficientinworld-tts-1.5 Standard qualityinworld-tts-1.5-max Premium qualityFull Example (with optional fields)
Here's a request using most available options:
{
"title": "AI in Healthcare",
"description": "A discussion about AI transforming healthcare",
"content": [
{
"type": "text",
"value": "Artificial intelligence is revolutionizing healthcare..."
}
],
"speakers": {
"host": { "voice": "Alex", "displayName": "Dr. Smith" },
"guest": { "voice": "Olivia", "displayName": "AI Expert" }
},
"style": "interview",
"targetDuration": 10,
"model": "inworld-tts-1.5-mini"
}Response
You get back the podcast ID and status. The status starts as draft.
{
"id": "pod_xyz789",
"title": "AI in Healthcare",
"status": "draft",
"createdAt": "2024-01-15T10: 30: 00Z"
}Code Examples
const response = await fetch(class="hl-string">39;https:class="hl-comment">//api.vozia.io/v1/podcasts39;, {
method: class="hl-string">39;POST39;,
headers: {
class="hl-string">39;Authorization39;: class="hl-string">39;Bearer YOUR_API_KEY39;,
class="hl-string">39;Content-Type39;: class="hl-string">39;application/json39;
},
body: JSON.stringify({
title: class="hl-string">39;AI in Healthcare39;,
content: [
{ type: class="hl-string">39;text39;, value: class="hl-string">39;Your content here...39; }
]
})
});
const podcast = await response.json();
console.log(class="hl-string">39;Podcast ID:39;, podcast.id);
class="hl-comment">// Next: call POST /podcasts/{id}/generate to startcurl -X POST https://api.vozia.io/v1/podcasts \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "AI in Healthcare",
"content": [{ "type": "text", "value": "Your content..." }]
}'Common Errors
Make sure you include organizationId, title, and content.
The content array must have at least one item with a non-empty value.
Check your Authorization header. Key should start with vz_live_ or vz_test_.
Next Step: Generate Audio
Creating the podcast only saves the content and writes the script. To actually generate the audio file, call the generate endpoint with your podcast ID.