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:
- Generate Script - Create a script from your changelog content
- Review & Edit - Preview the script and make any desired changes
- 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 Script
/v1/scriptsGenerates a script from changelog content without creating audio. Use this to preview the script before conversion.
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
content | string | Required | Changelog content in markdown format. Maximum 50KB. |
mode | string changelogproduct-feature | Optional(default: changelog) | Content type being converted. |
settings | object | Optional | Script generation settings. |
screenshot_urls | string[] | Optional | HTTPS URLs of screenshots for context. Maximum 20. |
Settings Object
| Parameter | Type | Required | Description |
|---|---|---|---|
product_name | string | Optional | Product or company name to use in the script. |
version | string | Optional | Version number to emphasize. |
tone | string casualprofessionalenthusiastictechnical | Optional(default: casual) | Voice tone for the script. |
audience | string | Optional | Target audience (e.g., "developers"). |
verbosity | string briefnormaldetailed | Optional(default: normal) | Script length preference. |
Body
{"content": "## v2.0.0 Release\n- New feature A\n- Bug fix B","mode": "changelog","settings": {"product_name": "MyApp","tone": "casual"}}
Response Fields
| Field | Type | Description |
|---|---|---|
id | string | Script ID (format: script_xxxxxxxxxxxx) |
content | string | The generated script text |
estimated_duration_seconds | integer | Estimated audio duration based on word count |
word_count | integer | Number of words in the script |
context_used | boolean | Whether historical changelog context was used |
expires_at | string | ISO 8601 timestamp when the script expires (2 hours) |
Convert Script to Media
/v1/scripts/{id}/convertConverts a previously generated script to audio (video coming soon). Optionally provide edited content to use instead of the original script.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Required | Script ID in format script_xxxxxxxxxxxx |
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
output_format | string audiovideo | Required | Desired output format. (Video coming soon) |
edited_content | string | Optional | Edited script content to use instead of the original. |
settings | object | Optional | Additional settings to override. |
webhook_url | string | Optional | HTTPS URL to receive completion webhook. |
wait | boolean | Optional(default: false) | Block until completion (max 90 seconds). |
Body
{"output_format": "audio","edited_content": "[NARRATOR]: Here's an updated version of the script with my 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.