Scripts

Generate scripts separately for preview and editing before converting to audio (video coming soon). This workflow allows you to review and modify the generated script before committing to media generation.

Two-Step Workflow

The scripts API enables a preview-edit-convert workflow:

  1. Generate Script - Create a script from your changelog content
  2. Review & Edit - Preview the script and make any desired changes
  3. Convert to Media - Generate audio (video coming soon) from the (optionally edited) script

Note: Scripts expire after 2 hours. Make sure to convert your script before it expires, or generate a new one.

Generate a script

POST/scripts

Generate a script

Parameters

ParameterTypeRequiredDescription
X-Organization-IDstringOptionalSpecify organization context for multi-org users. If omitted, uses default org for API key.

Request Body

ParameterTypeRequiredDescription
contentstringRequired
modestring
changelogproduct-feature
Optional(default: changelog)
settingsobjectOptional
screenshot_urlsstring[]Optional
additional_contextstringOptionalAdditional context for the AI script generator
further_detailsstringOptionalDeprecated alias for additional_context
use_historybooleanOptional(default: true)
history_limitintegerOptional(default: 10)

settings

ParameterTypeRequiredDescription
product_namestringOptional
versionstringOptional
tonestring
casualprofessionalenthusiastictechnical
Optional(default: casual)
audiencestringOptional
verbositystring
briefnormaldetailed
Optional(default: normal)
durationstring
briefnormaldetailed
Optional(default: normal)Alias for verbosity

Body

{
"content": "## v2.0.0 Release\n- New feature A\n- Bug fix B",
"mode": "changelog",
"settings": {
"product_name": "MyApp",
"tone": "casual"
},
"additional_context": "Focus on developer experience improvements.",
"use_history": true,
"history_limit": 10
}

Convert a script to audio

POST/scripts/{id}/convert

Convert a script to audio

Parameters

ParameterTypeRequiredDescription
idstringRequiredScript ID in format script_xxxxxxxxxxxx
X-Organization-IDstringOptionalSpecify organization context for multi-org users. If omitted, uses default org for API key.

Request Body

ParameterTypeRequiredDescription
output_formatstring
audiovideo
Required
edited_contentstringOptionalOptionally provide edited script content to use instead of the original
settingsobjectOptional
webhook_urlstringOptional
waitbooleanOptional(default: false)
voiceobjectOptionalTTS voice configuration. Applies to ElevenLabs when provider is "elevenlabs".

settings

ParameterTypeRequiredDescription
tonestringOptional
audiencestringOptional
verbositystringOptional

voice

ParameterTypeRequiredDescription
providerstring
geminielevenlabs
Optional(default: gemini)Text-to-speech provider
delivery_presetstring
measureddynamictheatrical
OptionalControls the pacing and energy of the narration
expression_settings.emotional_rangestring
subtlemoderatefull
Optional
expression_settings.allow_whisperingbooleanOptional
expression_settings.allow_laughterbooleanOptional
expression_settings.emphasis_stylestring
pausesboth
Optional
expression_settings.emotional_arcbooleanOptional
pronunciation_notesstringOptionalPronunciation guidance for product names, acronyms, etc.
voice_idstringOptionalElevenLabs voice ID for single-speaker mode
modelstring
v3flash_v2
OptionalElevenLabs model to use
host_voice_ids.host1stringOptionalElevenLabs voice ID for host 1
host_voice_ids.host2stringOptionalElevenLabs voice ID for host 2

Body

{
"output_format": "audio",
"edited_content": "Updated script content with edits..."
}

Script Expiration

Generated scripts expire after 2 hours. Attempting to convert an expired script returns a 410 Gone error:

{
"success": false,
"error": {
"code": "SCRIPT_NOT_FOUND",
"message": "Script has expired",
"documentation_url": "https://docs.logtalk.io/errors/resources#script"
},
"request_id": "req_1kn5f2a_a3b4c5d6e7f8",
"timestamp": "2026-01-18T17:00:00.000Z"
}

If your script expires, simply generate a new one with POST /v1/scripts.