Episodes
These endpoints are deprecated thin wrappers around the Conversions API. They continue to work but will be removed in a future version.
Deprecated. Use
POST /conversionswithsource_type: "changelog"instead. The Episodes endpoints are maintained for backward compatibility and will be removed in a future version. New integrations should use the Conversions API.
Create a new episode (deprecated)
/episodesCreate a new episode (deprecated)
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
Idempotency-Key | string | Optional | Unique key for idempotent requests. Keys must be 1-256 printable ASCII characters. If the same key is sent within 24 hours, the cached response is returned. |
X-Organization-ID | string | Optional | Specify organization context for multi-org users. If omitted, uses default org for API key. |
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
content | string | Required | Changelog content (max 50KB) |
mode | string changelogproduct-feature | Optional(default: changelog) | |
output_format | string audiovideo | Optional(default: audio) | |
settings | object | Optional | |
screenshot_urls | string[] | Optional | |
webhook_url | string | Optional | |
wait | boolean | Optional(default: false) | |
additional_context | string | Optional | Additional context for the AI script generator (max 10KB) |
further_details | string | Optional | Deprecated alias for additional_context. Use additional_context instead. |
use_history | boolean | Optional(default: true) | |
history_limit | integer | Optional(default: 10) | |
public_url | boolean | Optional(default: false) | |
voice | object | Optional | TTS voice configuration. Applies to ElevenLabs when provider is "elevenlabs". |
settings
| Parameter | Type | Required | Description |
|---|---|---|---|
product_name | string | Optional | |
version | string | Optional | |
tone | string casualprofessionalenthusiastictechnical | Optional(default: casual) | |
audience | string | Optional | |
verbosity | string briefnormaldetailed | Optional(default: normal) | |
duration | string briefnormaldetailed | Optional(default: normal) | Alias for verbosity |
voice
| Parameter | Type | Required | Description |
|---|---|---|---|
provider | string geminielevenlabs | Optional(default: gemini) | Text-to-speech provider |
delivery_preset | string measureddynamictheatrical | Optional | Controls the pacing and energy of the narration |
expression_settings.emotional_range | string subtlemoderatefull | Optional | |
expression_settings.allow_whispering | boolean | Optional | |
expression_settings.allow_laughter | boolean | Optional | |
expression_settings.emphasis_style | string pausesboth | Optional | |
expression_settings.emotional_arc | boolean | Optional | |
pronunciation_notes | string | Optional | Pronunciation guidance for product names, acronyms, etc. |
voice_id | string | Optional | ElevenLabs voice ID for single-speaker mode |
model | string v3flash_v2 | Optional | ElevenLabs model to use |
host_voice_ids.host1 | string | Optional | ElevenLabs voice ID for host 1 |
host_voice_ids.host2 | string | Optional | ElevenLabs voice ID for host 2 |
Body
{"content": "## v2.0.0 - New Features\n- Added dark mode support\n- Improved performance by 40%","mode": "changelog","output_format": "audio","settings": {"product_name": "MyApp","version": "2.0.0","tone": "casual"},"additional_context": "This release focuses on performance improvements after customer feedback.","use_history": true,"history_limit": 5}
List episodes (deprecated)
/episodesList episodes (deprecated)
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
X-Organization-ID | string | Optional | Specify organization context for multi-org users. If omitted, uses default org for API key. |
status | string pendingprocessinggeneratingcompletedfailed | Optional | |
mode | string changelogproduct-feature | Optional | |
output_format | string audiovideo | Optional | |
created_after | string | Optional | |
created_before | string | Optional | |
limit | integer | Optional(default: 20) | |
cursor | string | Optional |
curl -X GET https://logtalk.io/api/v1/episodes \-H "Authorization: Bearer lt_live_your_api_key_here" \-H "Content-Type: application/json"
Get episode details (deprecated)
/episodes/{id}Get episode details (deprecated)
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Required | Episode UUID |
X-Organization-ID | string | Optional | Specify organization context for multi-org users. If omitted, uses default org for API key. |
expand | string | Optional |
curl -X GET https://logtalk.io/api/v1/episodes/{id} \-H "Authorization: Bearer lt_live_your_api_key_here" \-H "Content-Type: application/json"
Retry a failed episode (deprecated)
/episodes/{id}/retryRetry a failed episode (deprecated)
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Required | Episode UUID |
X-Organization-ID | string | Optional | Specify organization context for multi-org users. If omitted, uses default org for API key. |
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
override_settings | object | Optional | |
webhook_url | string | Optional |
override_settings
| Parameter | Type | Required | Description |
|---|---|---|---|
product_name | string | Optional | |
version | string | Optional | |
tone | string casualprofessionalenthusiastictechnical | Optional(default: casual) | |
audience | string | Optional | |
verbosity | string briefnormaldetailed | Optional(default: normal) | |
duration | string briefnormaldetailed | Optional(default: normal) | Alias for verbosity |
curl -X POST https://logtalk.io/api/v1/episodes/{id}/retry \-H "Authorization: Bearer lt_live_your_api_key_here" \-H "Content-Type: application/json"
Delete an episode (deprecated)
/episodes/{id}Delete an episode (deprecated)
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Required | Episode UUID |
X-Organization-ID | string | Optional | Specify organization context for multi-org users. If omitted, uses default org for API key. |
curl -X DELETE https://logtalk.io/api/v1/episodes/{id} \-H "Authorization: Bearer lt_live_your_api_key_here" \-H "Content-Type: application/json"
Request Headers
Optional headers that can be used with episode endpoints:
| Header | Description |
|---|---|
X-Organization-ID | Specify organization context for multi-org users. If omitted, uses the default organization for the API key. |
Idempotency-Key | Unique key to prevent duplicate operations (POST endpoints only). |
Idempotency
Use idempotency keys to safely retry requests without creating duplicate episodes. Include the Idempotency-Key header with a unique value:
curl -X POST https://logtalk.io/api/v1/episodes \-H "Authorization: Bearer lt_live_your_key" \-H "Content-Type: application/json" \-H "Idempotency-Key: release-v2.0.0-20260118" \-d '{"content": "...", "output_format": "audio"}'
- Keys must be 1-256 printable ASCII characters
- Keys are valid for 24 hours
- Retrying with the same key returns the cached response
- Using the same key with a different request body returns
409 Conflict
Public Sharing & Embedding
When you create an episode with public_url: true, the response includes URLs for public sharing and embedding:
| Field | Description |
|---|---|
listen_url | Full public page with audio player, show notes, share buttons, and subscribe form. |
embed_url | Compact player designed for iframe embedding on external sites. |
Embedding with iframe
Use the embed_url to embed a compact audio player on your website:
<iframesrc="https://logtalk.io/embed/550e8400-e29b-41d4-a716-446655440000"width="100%"height="180"frameborder="0"allow="autoplay"></iframe>
oEmbed Support
LogTalk supports the oEmbed protocol for automatic embed discovery. Platforms like Notion, Medium, and others can automatically embed your episodes when you paste the listen_url.
oEmbed endpoint: https://logtalk.io/api/oembed?url={listen_url}