Create video using LTX models
June 3, 2025 (August 25, 2025)
Table of contents
This endpoint creates a video using LTX Studio’s LTX models (LTX-Video) from image inputs.
https://api.useapi.net/v1/ltxstudio/videos/ltx-create
Request Headers
Authorization: Bearer {API token}
Content-Type: application/json
# Alternatively you can use multipart/form-data
# Content-Type: multipart/form-data
API tokenis required, see Setup useapi.net for details.
Request Body
{
"prompt": "A serene landscape with flowing water",
"startAssetId": "asset:3b18…-type:image/png",
"model": "ltxv-turbo",
"duration": "3",
"aspectRatio": "16:9",
"intensity": "medium",
"seed": 123456,
"audioSFX": true
}
emailis optional when only one account configured.
However, if you have multiple accounts configured, this parameter becomes required.promptis required, text description for video generation (max 2000 characters)startAssetIdis optional, asset ID for the starting frame. Use fieldfileIdfrom POST assets or GET assets/?filter=images.endAssetIdis optional, asset ID for the ending frame. Use fieldfileIdfrom POST assets or GET assets/?filter=images.modelis optional, LTX model to use.
Supported values:ltxv,ltxv-turbo.
Default isltxv-turbo.durationis optional, video duration in seconds.
Supported values:3,5,7,9,15,30.
Default is3.aspectRatiois optional, video aspect ratio.
Supported values:16:9,9:16,1:1.
Default is16:9.intensityis optional, motion intensity level.
Supported values:low,medium,high.
Default ismedium.seedis optional, random seed for reproducible results.
Default is random.audioSFXis optional, enable automatic sound effects generation.
Default isfalse.pollForResultis optional, number of polling attempts to wait for completion (each attempt waits 3 seconds, up to 60 seconds total max) before sending job to the scheduler.
For example,pollForResult: 5will poll every 3 seconds for up to 15 seconds total.
Supported values: 1-20.
Default is immediate return with jobId.maxJobsis optional, override the default maximum number of concurrent jobs.replyUrlis optional, webhook URL for job completion notifications.
See GET assets/jobIdfor response model.replyRefis optional, custom reference for webhook identification.
Note: Either startAssetId or endAssetId (or both) must be provided.
Responses
-
{ "jobId": "email:[email protected]:7a34b821-9fd0-205e-d21b-4abc6f7839e7-type:video", "generationId": "gen_abc123def456" } -
200 OK (pollForResult completed)
{ "status": { "type": "completed", "progress": 100, "artifact": { "assetUrl": "https://storage.googleapis.com/lt-infinity-prd/artifacts/model-serving/…", "expirationDateString": "1748919477350", "asset": { "type": "artifact", "fileId": "asset:3b18…-type:video/mp4", "mimeType": "video/mp4", "artifactSubtype": "model-serving" } } }, "jobId": "email:[email protected]:7a34b821-9fd0-205e-d21b-4abc6f7839e7-type:video", "replyRef": "custom-reference-123", "replyUrl": "https://webhook.example.com/ltx-callback", "code": 200 } -
{ "error": "startAssetId or endAssetId is required", "code": 400 } -
{ "error": "Unauthorized", "code": 401 } -
{ "error": "Insufficient credits", "code": 402 }
Model
Use GET assets/jobId to retrieve job status and results if they were not provided with the response.
{ // TypeScript, all fields are optional
status: {
type: 'active' | 'completed' | 'failed'
progress?: number
message?: string
artifact?: {
assetUrl: string
expirationDateString: string
asset: {
type: string
fileId: string
mimeType: string
artifactSubtype: string
}
}
}
jobId?: string
generationId?: string
replyRef?: string
replyUrl?: string
code?: number
}
Examples
-
curl "https://api.useapi.net/v1/ltxstudio/videos/ltx-create" \ -H "Authorization: Bearer …" \ -H "Content-Type: application/json" \ -d '{ "prompt": "A serene landscape with flowing water", "startAssetId": "asset:3b18…-type:image/png", "model": "ltxv-turbo", "duration": "3", "aspectRatio": "16:9", "intensity": "medium", "audioSFX": true, "pollForResult": 10 }' -
const token = "API token"; const apiUrl = "https://api.useapi.net/v1/ltxstudio/videos/ltx-create"; const response = await fetch(apiUrl, { method: "POST", headers: { "Authorization": `Bearer ${token}`, "Content-Type": "application/json", }, body: JSON.stringify({ "prompt": "A serene landscape with flowing water", "startAssetId": "asset:3b18…-type:image/png", "model": "ltxv-turbo", "duration": "3", "aspectRatio": "16:9", "intensity": "medium", "audioSFX": true, "pollForResult": 10 }) }); const result = await response.json(); console.log("response", {response, result}); -
import requests token = "API token" apiUrl = "https://api.useapi.net/v1/ltxstudio/videos/ltx-create" headers = { "Authorization" : f"Bearer {token}", "Content-Type": "application/json" } data = { "prompt": "A serene landscape with flowing water", "startAssetId": "asset:3b18…-type:image/png", "model": "ltxv-turbo", "duration": "3", "aspectRatio": "16:9", "intensity": "medium", "audioSFX": True, "pollForResult": 10 } response = requests.post(apiUrl, headers=headers, json=data) print(response, response.json())