LTX 2.3 Quality API, LTX 2.3 (FREE) API, LTX 2.3, 2 Pro API: Pricing, Documentation

by Lightricks

LTX 2.3 Quality API, users can access LTX-Video and LTX-2 variants for generating high-quality video content from text and images. The API is designed for creators and businesses needing production-ready video output with smooth motion and visual coherence.

Get API Key
LTX Video API

Models Version

LIMITED TIME OFFER

Get $5 Free Credit on First Payment

No strings attached — add funds and get $5 bonus instantly

Claim Your $5 →

LTX 2.3 Quality API Documentation

https://gateway.pixazo.ai/ltx-2-3-quality-text-to-video/v1/ltx-2-3-quality-text-to-video-request

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

LTX 2.3 Quality Text to Video generate request

Request Code

POST https://gateway.pixazo.ai/ltx-2-3-quality-text-to-video/v1/ltx-2-3-quality-text-to-video-request
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_API_KEY

{
  "prompt": "A cinematic drone shot gliding over a misty mountain valley at sunrise, golden light",
  "num_frames": 121,
  "resolution": "landscape_16_9",
  "frames_per_second": 24,
  "num_inference_steps": 15,
  "guidance_scale": 1,
  "generate_audio": true,
  "enable_prompt_expansion": true,
  "enable_safety_checker": true,
  "video_quality": "high",
  "video_write_mode": "balanced"
}
import requests

url = "https://gateway.pixazo.ai/ltx-2-3-quality-text-to-video/v1/ltx-2-3-quality-text-to-video-request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
}
data = {
    "prompt": "A cinematic drone shot gliding over a misty mountain valley at sunrise, golden light",
    "num_frames": 121,
    "resolution": "landscape_16_9",
    "frames_per_second": 24,
    "num_inference_steps": 15,
    "guidance_scale": 1,
    "generate_audio": true,
    "enable_prompt_expansion": true,
    "enable_safety_checker": true,
    "video_quality": "high",
    "video_write_mode": "balanced"
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = "https://gateway.pixazo.ai/ltx-2-3-quality-text-to-video/v1/ltx-2-3-quality-text-to-video-request";
const headers = {
  "Content-Type": "application/json",
  "Cache-Control": "no-cache",
  "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
};
const data = {
  "prompt": "A cinematic drone shot gliding over a misty mountain valley at sunrise, golden light",
  "num_frames": 121,
  "resolution": "landscape_16_9",
  "frames_per_second": 24,
  "num_inference_steps": 15,
  "guidance_scale": 1,
  "generate_audio": true,
  "enable_prompt_expansion": true,
  "enable_safety_checker": true,
  "video_quality": "high",
  "video_write_mode": "balanced"
};

fetch(url, {
  method: "POST",
  headers: headers,
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data));
curl -X POST "https://gateway.pixazo.ai/ltx-2-3-quality-text-to-video/v1/ltx-2-3-quality-text-to-video-request" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  --data-raw '{
    "prompt": "A cinematic drone shot gliding over a misty mountain valley at sunrise, golden light",
    "num_frames": 121,
    "resolution": "landscape_16_9",
    "frames_per_second": 24,
    "num_inference_steps": 15,
    "guidance_scale": 1,
    "generate_audio": true,
    "enable_prompt_expansion": true,
    "enable_safety_checker": true,
    "video_quality": "high",
    "video_write_mode": "balanced"
  }'

Output

{
  "request_id": "ltx-2-3-quality-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ltx-2-3-quality-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your generate request to receive a POST callback instead of polling.

X-Webhook-URL: https://your-server.com/webhook/callback

Request Parameters - LTX 2.3 Quality Text to Video generate request

Parameter Required Type Default Allowed values / range Description
promptYesstringText prompt describing the desired video scene. Must be detailed for best results.
num_framesNointeger1219–481Total number of frames to generate. Allowed range: 9–481.
resolutionNostring or objectlandscape_16_9square_hd, square, portrait_4_3, portrait_16_9, landscape_4_3, landscape_16_9Preset resolution or custom dimensions. Presets: square_hd, square, portrait_4_3, portrait_16_9, landscape_4_3, landscape_16_9. Custom object: { "width": integer, "height": integer }.
frames_per_secondNofloat241–60Output frame rate. Allowed range: 1–60.
num_inference_stepsNointeger158–30Number of denoising steps during generation. Allowed range: 8–30. Higher values improve quality at increased compute cost.
guidance_scaleNofloat11–20Classifier-free guidance scale. Controls adherence to prompt. Allowed range: 1–20. Higher values increase prompt fidelity.
generate_audioNobooleantrueWhether to generate native audio synchronized with the video.
negative_promptNostringComma-separated terms to avoid in generation (e.g., "blurry, low quality, watermark"). Defaults to a comprehensive built-in negative list.
enable_prompt_expansionNobooleantrueEnables LLM-based prompt enhancement to enrich semantics and detail.
enable_safety_checkerNobooleantrueEnables NSFW content filtering. Disabling is not recommended.
video_qualityNostringhighlow, medium, high, maximumFinal video encode quality. Allowed: low, medium, high, maximum.
video_write_modeNostringbalancedfast, balanced, smallTrade-off between encoding speed and file size. Allowed: fast, balanced, small.
seedNointegerRandom seed for reproducible results. If omitted, a random seed is used.
sync_modeNobooleanfalseIf true, returns the video as a base64-encoded data URI inline in the response. Otherwise, returns a URL to the media file.

Example Request

{
  "prompt": "A cinematic drone shot gliding over a misty mountain valley at sunrise, golden light",
  "num_frames": 121,
  "resolution": "landscape_16_9",
  "frames_per_second": 24,
  "num_inference_steps": 15,
  "guidance_scale": 1,
  "generate_audio": true,
  "enable_prompt_expansion": true,
  "enable_safety_checker": true,
  "video_quality": "high",
  "video_write_mode": "balanced"
}

Response

{
  "request_id": "ltx-2-3-quality-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ltx-2-3-quality-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Cache-Controlno-cache
Ocp-Apim-Subscription-KeyYOUR_API_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'ltx-2-3-quality-text-to-video' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "ltx-2-3-quality-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "ltx-2-3-quality-text-to-video",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/ltx-2-3-quality-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "ltx-2-3-quality-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "ltx-2-3-quality-text-to-video",
  "error": null,
  "output": {
    "media_url": ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/ltx-2-3-quality-text-to-video_019dxxxx/output.mp4"],
    "media_type": "video/mp4"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstringWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

LTX 2.3 Quality API Pricing

No data available

Could not load current pricing

LTX 2.3 Quality API Documentation

https://gateway.pixazo.ai/ltx-2-3-quality-image-to-video/v1/ltx-2-3-quality-image-to-video-request

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

LTX 2.3 Quality Image to Video generate request

Request Code

POST https://gateway.pixazo.ai/ltx-2-3-quality-image-to-video/v1/ltx-2-3-quality-image-to-video-request
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_API_KEY

{
  "prompt": "Subtle cinematic camera move; the scene comes to life with gentle motion",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Image.jpeg",
  "num_frames": 121,
  "resolution": "auto",
  "frames_per_second": 24,
  "num_inference_steps": 15,
  "guidance_scale": 1,
  "generate_audio": true,
  "image_strength": 0.7,
  "enable_prompt_expansion": true,
  "enable_safety_checker": true,
  "video_quality": "high",
  "video_write_mode": "balanced"
}
import requests

url = "https://gateway.pixazo.ai/ltx-2-3-quality-image-to-video/v1/ltx-2-3-quality-image-to-video-request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
}
data = {
    "prompt": "Subtle cinematic camera move; the scene comes to life with gentle motion",
    "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Image.jpeg",
    "num_frames": 121,
    "resolution": "auto",
    "frames_per_second": 24,
    "num_inference_steps": 15,
    "guidance_scale": 1,
    "generate_audio": true,
    "image_strength": 0.7,
    "enable_prompt_expansion": true,
    "enable_safety_checker": true,
    "video_quality": "high",
    "video_write_mode": "balanced"
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = "https://gateway.pixazo.ai/ltx-2-3-quality-image-to-video/v1/ltx-2-3-quality-image-to-video-request";
const headers = {
  "Content-Type": "application/json",
  "Cache-Control": "no-cache",
  "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
};
const data = {
  "prompt": "Subtle cinematic camera move; the scene comes to life with gentle motion",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Image.jpeg",
  "num_frames": 121,
  "resolution": "auto",
  "frames_per_second": 24,
  "num_inference_steps": 15,
  "guidance_scale": 1,
  "generate_audio": true,
  "image_strength": 0.7,
  "enable_prompt_expansion": true,
  "enable_safety_checker": true,
  "video_quality": "high",
  "video_write_mode": "balanced"
};

fetch(url, {
  method: "POST",
  headers: headers,
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data));
curl -X POST "https://gateway.pixazo.ai/ltx-2-3-quality-image-to-video/v1/ltx-2-3-quality-image-to-video-request" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  --data-raw '{
    "prompt": "Subtle cinematic camera move; the scene comes to life with gentle motion",
    "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Image.jpeg",
    "num_frames": 121,
    "resolution": "auto",
    "frames_per_second": 24,
    "num_inference_steps": 15,
    "guidance_scale": 1,
    "generate_audio": true,
    "image_strength": 0.7,
    "enable_prompt_expansion": true,
    "enable_safety_checker": true,
    "video_quality": "high",
    "video_write_mode": "balanced"
  }'

Output

{
  "request_id": "ltx-2-3-quality-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ltx-2-3-quality-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your generate request to receive a POST callback instead of polling.

X-Webhook-URL: https://your-server.com/webhook/callback

Request Parameters - LTX 2.3 Quality Image to Video generate request

Parameter Required Type Default Allowed values / range Description
promptYesstringText prompt guiding the video generation. Must describe motion, camera behavior, and scene evolution.
image_urlYesstringURL of the starting image to animate. Must be publicly accessible.
num_framesNointeger1219–481Total frames to generate.
resolutionNostring or object"auto""auto", "square_hd", "square", "portrait_4_3", "portrait_16_9", "landscape_4_3", "landscape_16_9", or custom {width, height} (max 14142 each)Output resolution preset. Alternative: custom object with width and height.
frames_per_secondNofloat241–60Output frame rate.
num_inference_stepsNointeger158–30Denoising steps during generation. Higher values improve quality at increased compute cost.
guidance_scaleNofloat11–20Classifier-free guidance scale. Controls adherence to prompt.
generate_audioNobooleantrueInclude native audio generated from the video content.
image_strengthNofloat0.70–1Conditioning strength applied to the input image. Higher values preserve more image structure.
negative_promptNostringTerms to steer generation away from. Defaults to a comprehensive built-in negative list.
enable_prompt_expansionNobooleantrueEnable LLM-based prompt enhancement to improve clarity and richness.
enable_safety_checkerNobooleantrueEnable NSFW content filtering. Disabling may expose output to inappropriate material.
video_qualityNostring"high""low", "medium", "high", "maximum"Final video encode quality.
video_write_modeNostring"balanced""fast", "balanced", "small"Encoding optimization strategy.
seedNointegerRandom seed for reproducible results. If omitted, a random seed is used.
sync_modeNobooleanfalseIf true, returns the video as a base64-encoded data URI inline instead of a URL.

Example Request

{
  "prompt": "Subtle cinematic camera move; the scene comes to life with gentle motion",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Image.jpeg",
  "num_frames": 121,
  "resolution": "auto",
  "frames_per_second": 24,
  "num_inference_steps": 15,
  "guidance_scale": 1,
  "generate_audio": true,
  "image_strength": 0.7,
  "enable_prompt_expansion": true,
  "enable_safety_checker": true,
  "video_quality": "high",
  "video_write_mode": "balanced"
}

Response

{
  "request_id": "ltx-2-3-quality-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ltx-2-3-quality-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Cache-Controlno-cache
Ocp-Apim-Subscription-KeyYOUR_API_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'ltx-2-3-quality-image-to-video' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "ltx-2-3-quality-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "ltx-2-3-quality-image-to-video",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/ltx-2-3-quality-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "ltx-2-3-quality-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "ltx-2-3-quality-image-to-video",
  "error": null,
  "output": {
    "media_url": ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/ltx-2-3-quality-image-to-video_019dxxxx/output.mp4"],
    "media_type": "video/mp4"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstringWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

LTX 2.3 Quality API Pricing

No data available

Could not load current pricing

LTX 2.3 Quality API Documentation

https://gateway.pixazo.ai/ltx-2-3-quality-audio-to-video/v1/ltx-2-3-quality-audio-to-video-request

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

LTX 2.3 Quality Audio to Video generate request

Request Code

POST https://gateway.pixazo.ai/ltx-2-3-quality-audio-to-video/v1/ltx-2-3-quality-audio-to-video-request
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_API_KEY

{
  "prompt": "A cinematic music-video montage that matches the rhythm of the audio",
  "audio_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Audio.mp3",
  "match_audio_length": true,
  "num_frames": 121,
  "resolution": "auto",
  "frames_per_second": 24,
  "num_inference_steps": 15,
  "guidance_scale": 1,
  "generate_audio": true,
  "image_strength": 0.7,
  "enable_prompt_expansion": true,
  "enable_safety_checker": true,
  "video_quality": "high",
  "video_write_mode": "balanced"
}
import requests

url = "https://gateway.pixazo.ai/ltx-2-3-quality-audio-to-video/v1/ltx-2-3-quality-audio-to-video-request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
}
data = {
    "prompt": "A cinematic music-video montage that matches the rhythm of the audio",
    "audio_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Audio.mp3",
    "match_audio_length": true,
    "num_frames": 121,
    "resolution": "auto",
    "frames_per_second": 24,
    "num_inference_steps": 15,
    "guidance_scale": 1,
    "generate_audio": true,
    "image_strength": 0.7,
    "enable_prompt_expansion": true,
    "enable_safety_checker": true,
    "video_quality": "high",
    "video_write_mode": "balanced"
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = "https://gateway.pixazo.ai/ltx-2-3-quality-audio-to-video/v1/ltx-2-3-quality-audio-to-video-request";

const headers = {
  "Content-Type": "application/json",
  "Cache-Control": "no-cache",
  "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
};

const data = {
  "prompt": "A cinematic music-video montage that matches the rhythm of the audio",
  "audio_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Audio.mp3",
  "match_audio_length": true,
  "num_frames": 121,
  "resolution": "auto",
  "frames_per_second": 24,
  "num_inference_steps": 15,
  "guidance_scale": 1,
  "generate_audio": true,
  "image_strength": 0.7,
  "enable_prompt_expansion": true,
  "enable_safety_checker": true,
  "video_quality": "high",
  "video_write_mode": "balanced"
};

fetch(url, {
  method: "POST",
  headers: headers,
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data));
curl -X POST "https://gateway.pixazo.ai/ltx-2-3-quality-audio-to-video/v1/ltx-2-3-quality-audio-to-video-request" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  --data-raw '{
    "prompt": "A cinematic music-video montage that matches the rhythm of the audio",
    "audio_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Audio.mp3",
    "match_audio_length": true,
    "num_frames": 121,
    "resolution": "auto",
    "frames_per_second": 24,
    "num_inference_steps": 15,
    "guidance_scale": 1,
    "generate_audio": true,
    "image_strength": 0.7,
    "enable_prompt_expansion": true,
    "enable_safety_checker": true,
    "video_quality": "high",
    "video_write_mode": "balanced"
  }'

Output

{
  "request_id": "ltx-2-3-quality-audio-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ltx-2-3-quality-audio-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your generate request to receive a POST callback instead of polling.

X-Webhook-URL: https://your-server.com/webhook/callback

Request Parameters - LTX 2.3 Quality Audio to Video generate request

Parameter Required Type Default Allowed values / range Description
promptYesstringText prompt guiding the audio-driven video generation. Must be descriptive for best results.
audio_urlYesstringPublicly accessible URL of the audio track that drives the generation. Must be in a supported format (e.g., MP3, WAV).
image_urlNostringURL of an image to use as the first frame of the video. Must be a static image (JPEG, PNG).
image_strengthNofloat0.70.0–1.0Conditioning strength for the optional first frame. Higher values preserve more structure from the input image.
match_audio_lengthNobooleantrueWhen true, the total frame count is automatically derived from the audio duration. When false, num_frames is used.
num_framesNointeger1219–481Total number of frames to generate. Used only when match_audio_length is false.
frames_per_secondNofloat241.0–60.0Output frame rate. Higher values produce smoother motion.
resolutionNostring or object"auto""auto", "square_hd", "square", "portrait_4_3", "portrait_16_9", "landscape_4_3", "landscape_16_9", or {"width": integer, "height": integer}Preset resolution or custom dimensions.
num_inference_stepsNointeger158–30Number of denoising steps during generation. Higher values improve quality at the cost of speed.
guidance_scaleNofloat1.01.0–20.0Classifier-free guidance scale. Controls how closely the output follows the prompt.
generate_audioNobooleantrueIf true, the generated video includes the input audio track. If false, the output video is silent.
negative_promptNostringComma-separated terms to steer generation away from (e.g., "blurry, low quality, watermark"). Defaults to a built-in long negative list.
enable_prompt_expansionNobooleantrueIf true, an LLM enhances the prompt for richer, more detailed generation.
enable_safety_checkerNobooleantrueIf true, applies an NSFW content filter to block inappropriate outputs.
video_qualityNoenum"high""low", "medium", "high", "maximum"Final video encoding quality. Higher quality increases file size and processing time.
video_write_modeNoenum"balanced""fast", "balanced", "small"Trade-off between speed, file size, and quality. fast prioritizes speed, small minimizes file size.
seedNointegerRandom seed for reproducible results. If omitted, a random seed is used.
sync_modeNobooleanfalseIf true, returns the video as a base64-encoded data URI inline in the response instead of a URL. Not recommended for long videos due to payload size.

Example Request

{
  "prompt": "A cinematic music-video montage that matches the rhythm of the audio",
  "audio_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Audio.mp3",
  "match_audio_length": true,
  "num_frames": 121,
  "resolution": "auto",
  "frames_per_second": 24,
  "num_inference_steps": 15,
  "guidance_scale": 1,
  "generate_audio": true,
  "image_strength": 0.7,
  "enable_prompt_expansion": true,
  "enable_safety_checker": true,
  "video_quality": "high",
  "video_write_mode": "balanced"
}

Response

{
  "request_id": "ltx-2-3-quality-audio-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ltx-2-3-quality-audio-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Cache-Controlno-cache
Ocp-Apim-Subscription-KeyYOUR_API_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'ltx-2-3-quality-audio-to-video' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "ltx-2-3-quality-audio-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "ltx-2-3-quality-audio-to-video",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/ltx-2-3-quality-audio-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "ltx-2-3-quality-audio-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "ltx-2-3-quality-audio-to-video",
  "error": null,
  "output": {
    "media_url": ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/ltx-2-3-quality-audio-to-video_019dxxxx/output.mp4"],
    "media_type": "video/mp4"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstringWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

LTX 2.3 Quality API Pricing

No data available

Could not load current pricing

LTX 2.3 Quality API Documentation

https://gateway.pixazo.ai/ltx-2-3-quality-reference-video-to-video/v1/ltx-2-3-quality-reference-video-to-video-request

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

LTX 2.3 Quality Reference Video to Video generate request

Request Code

POST https://gateway.pixazo.ai/ltx-2-3-quality-reference-video-to-video/v1/ltx-2-3-quality-reference-video-to-video-request
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_API_KEY

{
  "prompt": "Restyle the scene as a cinematic anime sequence, vivid color grading and dynamic lighting",
  "video_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Video.mp4",
  "video_strength": 0.6,
  "num_frames": 121,
  "resolution": "auto",
  "frames_per_second": 24,
  "num_inference_steps": 15,
  "guidance_scale": 1,
  "generate_audio": true,
  "enable_prompt_expansion": true,
  "enable_safety_checker": true,
  "video_quality": "high",
  "video_write_mode": "balanced"
}
import requests

url = "https://gateway.pixazo.ai/ltx-2-3-quality-reference-video-to-video/v1/ltx-2-3-quality-reference-video-to-video-request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
}
data = {
    "prompt": "Restyle the scene as a cinematic anime sequence, vivid color grading and dynamic lighting",
    "video_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Video.mp4",
    "video_strength": 0.6,
    "num_frames": 121,
    "resolution": "auto",
    "frames_per_second": 24,
    "num_inference_steps": 15,
    "guidance_scale": 1,
    "generate_audio": true,
    "enable_prompt_expansion": true,
    "enable_safety_checker": true,
    "video_quality": "high",
    "video_write_mode": "balanced"
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = "https://gateway.pixazo.ai/ltx-2-3-quality-reference-video-to-video/v1/ltx-2-3-quality-reference-video-to-video-request";
const headers = {
  "Content-Type": "application/json",
  "Cache-Control": "no-cache",
  "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
};
const data = {
  "prompt": "Restyle the scene as a cinematic anime sequence, vivid color grading and dynamic lighting",
  "video_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Video.mp4",
  "video_strength": 0.6,
  "num_frames": 121,
  "resolution": "auto",
  "frames_per_second": 24,
  "num_inference_steps": 15,
  "guidance_scale": 1,
  "generate_audio": true,
  "enable_prompt_expansion": true,
  "enable_safety_checker": true,
  "video_quality": "high",
  "video_write_mode": "balanced"
};

fetch(url, {
  method: "POST",
  headers: headers,
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data));
curl -X POST "https://gateway.pixazo.ai/ltx-2-3-quality-reference-video-to-video/v1/ltx-2-3-quality-reference-video-to-video-request" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  --data-raw '{
    "prompt": "Restyle the scene as a cinematic anime sequence, vivid color grading and dynamic lighting",
    "video_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Video.mp4",
    "video_strength": 0.6,
    "num_frames": 121,
    "resolution": "auto",
    "frames_per_second": 24,
    "num_inference_steps": 15,
    "guidance_scale": 1,
    "generate_audio": true,
    "enable_prompt_expansion": true,
    "enable_safety_checker": true,
    "video_quality": "high",
    "video_write_mode": "balanced"
}'

Output

{
  "request_id": "ltx-2-3-quality-reference-video-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ltx-2-3-quality-reference-video-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your generate request to receive a POST callback instead of polling.

X-Webhook-URL: https://your-server.com/webhook/callback

Request Parameters - LTX 2.3 Quality Reference Video to Video generate request

Parameter Required Type Default Allowed values / range Description
promptYesstringText prompt guiding the generation. Must describe desired style, content, and aesthetic.
video_urlYesstringURL of the reference video that supplies motion and structural cues. Must be publicly accessible.
image_urlNostringOptional reference image used by IC-LoRA for style or character anchoring. Must be publicly accessible.
video_strengthNofloat0.60–1Video conditioning strength (0-1). Lower values give the model more freedom to deviate from the reference motion.
num_framesNointeger1219–481Total frames to generate. Allowed range: 9-481.
resolutionNostring or object"auto""auto", "square_hd", "square", "portrait_4_3", "portrait_16_9", "landscape_4_3", "landscape_16_9"Output resolution preset. Allowed string values: `auto`, `square_hd`, `square`, `portrait_4_3`, `portrait_16_9`, `landscape_4_3`, `landscape_16_9`. Alternatively, provide a custom object with `width` and `height` integers.
frames_per_secondNofloat241–60Output frame rate. Allowed range: 1-60.
num_inference_stepsNointeger158–30Denoising steps during generation. Allowed range: 8-30. Higher values improve quality at the cost of speed.
guidance_scaleNofloat11–20Classifier-free guidance scale. Controls how closely the output follows the prompt. Allowed range: 1-20.
generate_audioNobooleantrueInclude audio from the reference video in the output. If false, output will be silent.
negative_promptNostringTerms to steer generation away from. Defaults to a comprehensive built-in negative list.
enable_prompt_expansionNobooleantrueEnable LLM-based prompt enhancement to enrich and expand the input prompt for better results.
enable_safety_checkerNobooleantrueEnable NSFW content filtering. Disabling may expose outputs to inappropriate content.
video_qualityNostring"high""low", "medium", "high", "maximum"Output video quality tier. Allowed values: `low`, `medium`, `high`, `maximum`.
video_write_modeNostring"balanced""fast", "balanced", "small"Output encoding strategy. Allowed values: `fast` (optimized for speed), `balanced` (default), `small` (optimized for file size).
seedNointegerRandom seed for reproducible results. If omitted, a random seed is used.
sync_modeNobooleanfalseIf true, returns the video as a data URI inline in the response. Otherwise, returns a media URL.

Example Request

{
  "prompt": "Restyle the scene as a cinematic anime sequence, vivid color grading and dynamic lighting",
  "video_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Video.mp4",
  "video_strength": 0.6,
  "num_frames": 121,
  "resolution": "auto",
  "frames_per_second": 24,
  "num_inference_steps": 15,
  "guidance_scale": 1,
  "generate_audio": true,
  "enable_prompt_expansion": true,
  "enable_safety_checker": true,
  "video_quality": "high",
  "video_write_mode": "balanced"
}

Response

{
  "request_id": "ltx-2-3-quality-reference-video-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ltx-2-3-quality-reference-video-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Cache-Controlno-cache
Ocp-Apim-Subscription-KeyYOUR_API_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'ltx-2-3-quality-reference-video-to-video' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "ltx-2-3-quality-reference-video-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "ltx-2-3-quality-reference-video-to-video",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/ltx-2-3-quality-reference-video-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "ltx-2-3-quality-reference-video-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "ltx-2-3-quality-reference-video-to-video",
  "error": null,
  "output": {
    "media_url": ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/ltx-2-3-quality-reference-video-to-video_019dxxxx/output.mp4"],
    "media_type": "video/mp4"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstringWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

LTX 2.3 Quality API Pricing

No data available

Could not load current pricing

LTX 2.3 Quality API Documentation

https://gateway.pixazo.ai/ltx-2-3-quality-hdr/v1/ltx-2-3-quality-hdr-request

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

LTX 2.3 Quality HDR generate request

Request Code

POST https://gateway.pixazo.ai/ltx-2-3-quality-hdr/v1/ltx-2-3-quality-hdr-request
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_API_KEY

{
  "prompt": "A sunset over the Pacific Ocean, vibrant orange and purple sky, deep contrast, cinematic HDR",
  "video_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Video.mp4"
}
import requests

url = "https://gateway.pixazo.ai/ltx-2-3-quality-hdr/v1/ltx-2-3-quality-hdr-request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
}
data = {
    "prompt": "A sunset over the Pacific Ocean, vibrant orange and purple sky, deep contrast, cinematic HDR",
    "video_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Video.mp4"
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = "https://gateway.pixazo.ai/ltx-2-3-quality-hdr/v1/ltx-2-3-quality-hdr-request";
const headers = {
  "Content-Type": "application/json",
  "Cache-Control": "no-cache",
  "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
};
const data = {
  "prompt": "A sunset over the Pacific Ocean, vibrant orange and purple sky, deep contrast, cinematic HDR",
  "video_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Video.mp4"
};

fetch(url, {
  method: "POST",
  headers: headers,
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data));
curl -X POST "https://gateway.pixazo.ai/ltx-2-3-quality-hdr/v1/ltx-2-3-quality-hdr-request" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  --data-raw '{
    "prompt": "A sunset over the Pacific Ocean, vibrant orange and purple sky, deep contrast, cinematic HDR",
    "video_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Video.mp4"
  }'

Output

{
  "request_id": "ltx-2-3-quality-hdr_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ltx-2-3-quality-hdr_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your generate request to receive a POST callback instead of polling.

X-Webhook-URL: https://your-server.com/webhook/callback

Request Parameters - LTX 2.3 Quality HDR generate request

Parameter Required Type Default Allowed values / range Description
promptYesstringText prompt describing the desired HDR aesthetic. Must be detailed for best results.
video_urlYesstringURL of the SDR input video to lift into HDR. Supported formats: mp4, mov, webm, m4v, gif.
num_framesNointeger1219–481Total frames to generate.
resolutionNostring or object"auto"auto, square_hd, square, portrait_4_3, portrait_16_9, landscape_4_3, landscape_16_9, or {width: integer, height: integer}Resolution preset or custom dimensions.
frames_per_secondNofloat241–60Output frame rate.
num_inference_stepsNointeger158–30Denoising steps during HDR generation. Higher values improve quality at increased compute cost.
guidance_scaleNofloat11–20Classifier-free guidance scale. Controls adherence to prompt. Higher values increase prompt fidelity.
generate_audioNobooleantrueInclude original audio from input video in the MP4 preview.
negative_promptNostringTerms to steer generation away from. Overrides default negative list. Default negative list is long and comprehensive.
enable_prompt_expansionNobooleantrueEnable LLM-based prompt enhancement to enrich semantics and detail.
enable_safety_checkerNobooleantrueEnable NSFW content filtering. Disabling may expose outputs to inappropriate content.
video_qualityNostring"high"low, medium, high, maximumOutput video quality tier.
video_write_modeNostring"balanced"fast, balanced, smallTrade-off mode for video encoding.
seedNointegerRandom seed for reproducible results. If omitted, a random seed is generated.
sync_modeNobooleanfalseIf true, returns media as data URIs inline instead of URLs. Not recommended for large outputs.

Example Request

{
  "prompt": "A sunset over the Pacific Ocean, vibrant orange and purple sky, deep contrast, cinematic HDR",
  "video_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Video.mp4",
  "num_frames": 121,
  "resolution": "auto",
  "frames_per_second": 24,
  "num_inference_steps": 15,
  "guidance_scale": 1,
  "generate_audio": true,
  "enable_prompt_expansion": true,
  "enable_safety_checker": true,
  "video_quality": "high",
  "video_write_mode": "balanced"
}

Response

{
  "request_id": "ltx-2-3-quality-hdr_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ltx-2-3-quality-hdr_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Cache-Controlno-cache
Ocp-Apim-Subscription-KeyYOUR_API_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'ltx-2-3-quality-hdr' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "ltx-2-3-quality-hdr_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "ltx-2-3-quality-hdr",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/ltx-2-3-quality-hdr_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "ltx-2-3-quality-hdr_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "ltx-2-3-quality-hdr",
  "error": null,
  "output": {
    "preview_video": {
      "url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/ltx-2-3-quality-hdr_019dxxxx/output.mp4",
      "content_type": "video/mp4",
      "file_name": "output.mp4",
      "file_size": 12456789,
      "width": 1920,
      "height": 1080,
      "fps": 24,
      "duration": 5.04,
      "num_frames": 121
    },
    "exr_frames_url": {
      "url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/ltx-2-3-quality-hdr_019dxxxx/exr_frames.zip",
      "content_type": "application/zip",
      "file_name": "exr_frames.zip",
      "file_size": 489000000
    }
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstringWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

LTX 2.3 Quality API Pricing

No data available

Could not load current pricing

2. LTX 2.3

LTX 2.3 API Documentation

https://gateway.pixazo.ai/ltx-video/v1/text-to-video

Endpoint URL

POST https://gateway.pixazo.ai/ltx-video/v1/text-to-video

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

LTX Video Text to Video request

Request Code

POST https://gateway.pixazo.ai/ltx-video/v1/text-to-video
Content-Type: application/json
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "prompt": "A red rose blooming in slow motion, golden hour"
}
import requests

url = "https://gateway.pixazo.ai/ltx-video/v1/text-to-video"
headers = {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "prompt": "A red rose blooming in slow motion, golden hour"
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = "https://gateway.pixazo.ai/ltx-video/v1/text-to-video";
const headers = {
  "Content-Type": "application/json",
  "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
};
const data = {
  "prompt": "A red rose blooming in slow motion, golden hour"
};

fetch(url, {
  method: "POST",
  headers: headers,
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data));
curl -X POST "https://gateway.pixazo.ai/ltx-video/v1/text-to-video" \
  -H "Content-Type: application/json" \
  -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  --data-raw '{
    "prompt": "A red rose blooming in slow motion, golden hour"
  }'

Output

{
  "request_id": "ltx-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ltx-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your request to receive a POST callback instead of polling. The webhook payload mirrors the status-endpoint response. Optionally add X-Webhook-Mode: sync to also receive a progress webhook on every poll cycle (roughly every 20s) while the request is still in flight, in addition to the terminal callback.

X-Webhook-URL: https://your-server.com/webhook/callback
X-Webhook-Mode: sync

Using curl? These are HTTP request headers — pass each with -H, e.g. -H "X-Webhook-URL: https://your-server.com/webhook/callback". Do not paste them as bare lines, and end every line of a multi-line command with \.

Webhook Headers

HeaderRequiredDescription
X-Webhook-URLNoHTTPS URL that receives a POST callback when the request reaches a terminal state.
X-Webhook-ModeNoterminal (default) fires once on COMPLETED/FAILED/ERROR. sync also fires a progress webhook each poll cycle (~20s cadence).

Request Parameters - LTX Video Text to Video request

Parameter Required Type Default Allowed values / range Description
promptYesstring≤ 4000 charsText description of the video to generate.
seedNointeger42Seed for reproducibility.
aspectNostring"auto"16:9, 9:16, 1:1, 4:3, 3:4, 21:9, 4:5, 2:3, 3:2, or custom W:HOutput aspect ratio; overrides width/height.
widthNointeger1280divisible by 32, ≤ 1920Output width; overridden by aspect.
heightNointeger704divisible by 32, ≤ 1088Output height; overridden by aspect.
num_framesNointeger1218k+1 form, max 241Number of frames (e.g. 121, 161, 241).
frame_rateNofloat241–60Frames per second.
enhance_promptNobooleanfalsetrue/falseAuto-improve the prompt.

Example Request

{
  "prompt": "A red rose blooming in slow motion, golden hour"
}

Response

{
  "request_id": "ltx-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ltx-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Ocp-Apim-Subscription-KeyYOUR_SUBSCRIPTION_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'ltx-video' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "ltx-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "ltx-video",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/ltx-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "ltx-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "ltx-video",
  "error": null,
  "output": {
    "media_url": ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/ltx-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/output.mp4"],
    "media_type": "video/mp4"
  },
  "created_at": "2026-06-08T10:00:00.000Z",
  "completed_at": "2026-06-08T10:00:30.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output (video/mp4)
created_atstringWhen request was created
completed_atstringWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

LTX 2.3 API Pricing

ResolutionPrice (USD)
All resolutions / all modes$0

LTX 2.3 API Documentation

https://gateway.pixazo.ai/ltx-video/v1/image-to-video

Endpoint URL

POST https://gateway.pixazo.ai/ltx-video/v1/image-to-video

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

LTX Video Image to Video request

Request Code

POST https://gateway.pixazo.ai/ltx-video/v1/image-to-video
Content-Type: application/json
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "prompt": "Hands dance gracefully, rose petals drift",
  "image_url": "https://example.com/hands.jpg"
}
import requests

url = "https://gateway.pixazo.ai/ltx-video/v1/image-to-video"
headers = {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "prompt": "Hands dance gracefully, rose petals drift",
    "image_url": "https://example.com/hands.jpg"
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = "https://gateway.pixazo.ai/ltx-video/v1/image-to-video";
const headers = {
  "Content-Type": "application/json",
  "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
};
const data = {
  "prompt": "Hands dance gracefully, rose petals drift",
  "image_url": "https://example.com/hands.jpg"
};

fetch(url, {
  method: "POST",
  headers: headers,
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data));
curl -X POST "https://gateway.pixazo.ai/ltx-video/v1/image-to-video" \
  -H "Content-Type: application/json" \
  -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  --data-raw '{
    "prompt": "Hands dance gracefully, rose petals drift",
    "image_url": "https://example.com/hands.jpg"
  }'

Output

{
  "request_id": "ltx-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ltx-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your request to receive a POST callback instead of polling. The webhook payload mirrors the status-endpoint response. Optionally add X-Webhook-Mode: sync to also receive a progress webhook on every poll cycle (roughly every 20s) while the request is still in flight, in addition to the terminal callback.

X-Webhook-URL: https://your-server.com/webhook/callback
X-Webhook-Mode: sync

Using curl? These are HTTP request headers — pass each with -H, e.g. -H "X-Webhook-URL: https://your-server.com/webhook/callback". Do not paste them as bare lines, and end every line of a multi-line command with \.

Webhook Headers

HeaderRequiredDescription
X-Webhook-URLNoHTTPS URL that receives a POST callback when the request reaches a terminal state.
X-Webhook-ModeNoterminal (default) fires once on COMPLETED/FAILED/ERROR. sync also fires a progress webhook each poll cycle (~20s cadence).

Request Parameters - LTX Video Image to Video request

Parameter Required Type Default Allowed values / range Description
promptYesstring≤ 4000 charsText description of the video to generate.
image_urlYesstringpublic https URL, ≤ 25MBSource image to animate.
strengthNofloat1.00–1Image conditioning strength.
seedNointeger42Seed for reproducibility.
aspectNostring"auto"16:9, 9:16, 1:1, 4:3, 3:4, 21:9, 4:5, 2:3, 3:2, or custom W:HOutput aspect ratio; overrides width/height.
widthNointeger1280divisible by 32, ≤ 1920Output width; overridden by aspect.
heightNointeger704divisible by 32, ≤ 1088Output height; overridden by aspect.
num_framesNointeger1218k+1 form, max 241Number of frames (e.g. 121, 161, 241).
frame_rateNofloat241–60Frames per second.
enhance_promptNobooleanfalsetrue/falseAuto-improve the prompt.

Example Request

{
  "prompt": "Hands dance gracefully, rose petals drift",
  "image_url": "https://example.com/hands.jpg"
}

Response

{
  "request_id": "ltx-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ltx-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Ocp-Apim-Subscription-KeyYOUR_SUBSCRIPTION_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'ltx-video' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "ltx-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "ltx-video",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/ltx-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "ltx-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "ltx-video",
  "error": null,
  "output": {
    "media_url": ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/ltx-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/output.mp4"],
    "media_type": "video/mp4"
  },
  "created_at": "2026-06-08T10:00:00.000Z",
  "completed_at": "2026-06-08T10:00:30.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output (video/mp4)
created_atstringWhen request was created
completed_atstringWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

LTX 2.3 API Pricing

ResolutionPrice (USD)
All resolutions / all modes$0

LTX 2.3 API Documentation

https://gateway.pixazo.ai/ltx-video/v1/video-to-video

Endpoint URL

POST https://gateway.pixazo.ai/ltx-video/v1/video-to-video

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

LTX Video Video to Video request

Request Code

POST https://gateway.pixazo.ai/ltx-video/v1/video-to-video
Content-Type: application/json
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "prompt": "Anime Studio Ghibli style, vibrant watercolor",
  "video_url": "https://example.com/source.mp4",
  "aspect": "16:9"
}
import requests

url = "https://gateway.pixazo.ai/ltx-video/v1/video-to-video"
headers = {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "prompt": "Anime Studio Ghibli style, vibrant watercolor",
    "video_url": "https://example.com/source.mp4",
    "aspect": "16:9"
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = "https://gateway.pixazo.ai/ltx-video/v1/video-to-video";
const headers = {
  "Content-Type": "application/json",
  "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
};
const data = {
  "prompt": "Anime Studio Ghibli style, vibrant watercolor",
  "video_url": "https://example.com/source.mp4",
  "aspect": "16:9"
};

fetch(url, {
  method: "POST",
  headers: headers,
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data));
curl -X POST "https://gateway.pixazo.ai/ltx-video/v1/video-to-video" \
  -H "Content-Type: application/json" \
  -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  --data-raw '{
    "prompt": "Anime Studio Ghibli style, vibrant watercolor",
    "video_url": "https://example.com/source.mp4",
    "aspect": "16:9"
  }'

Output

{
  "request_id": "ltx-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ltx-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your request to receive a POST callback instead of polling. The webhook payload mirrors the status-endpoint response. Optionally add X-Webhook-Mode: sync to also receive a progress webhook on every poll cycle (roughly every 20s) while the request is still in flight, in addition to the terminal callback.

X-Webhook-URL: https://your-server.com/webhook/callback
X-Webhook-Mode: sync

Using curl? These are HTTP request headers — pass each with -H, e.g. -H "X-Webhook-URL: https://your-server.com/webhook/callback". Do not paste them as bare lines, and end every line of a multi-line command with \.

Webhook Headers

HeaderRequiredDescription
X-Webhook-URLNoHTTPS URL that receives a POST callback when the request reaches a terminal state.
X-Webhook-ModeNoterminal (default) fires once on COMPLETED/FAILED/ERROR. sync also fires a progress webhook each poll cycle (~20s cadence).

Request Parameters - LTX Video Video to Video request

Parameter Required Type Default Allowed values / range Description
promptYesstring≤ 4000 charsTransformation instruction.
video_urlYesstringpublic https URL, ≤ 100MBSource video to transform.
seedNointeger42Seed.
aspectNostring16:9 (1280×768), 9:16 (768×1280), 1:1 (960×960), 4:3, 3:4Output aspect ratio.
widthNointeger1280divisible by 64, ≤ 1920Output width (v2v requires div-by-64).
heightNointeger768divisible by 64, ≤ 1088Output height (v2v requires div-by-64).
num_framesNointeger1218k+1 form, max 241Number of frames.
frame_rateNofloat241–60Frames per second.
video_strengthNofloat1.00–10 = ignore source, 1 = strict adherence.
skip_stage_2Nobooleanfalsetrue/falseSkip upscale → half-res, faster.

Example Request

{
  "prompt": "Anime Studio Ghibli style, vibrant watercolor",
  "video_url": "https://example.com/source.mp4",
  "aspect": "16:9"
}

Response

{
  "request_id": "ltx-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ltx-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Ocp-Apim-Subscription-KeyYOUR_SUBSCRIPTION_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'ltx-video' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "ltx-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "ltx-video",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/ltx-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "ltx-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "ltx-video",
  "error": null,
  "output": {
    "media_url": ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/ltx-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/output.mp4"],
    "media_type": "video/mp4"
  },
  "created_at": "2026-06-08T10:00:00.000Z",
  "completed_at": "2026-06-08T10:00:30.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output (video/mp4)
created_atstringWhen request was created
completed_atstringWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

LTX 2.3 API Pricing

ResolutionPrice (USD)
All resolutions / all modes$0
3. LTX v2.3

LTX v2.3 API Documentation

https://gateway.pixazo.ai/ltx-2-3-text-to-video/v1/ltx-2-3-text-to-video-request

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

LTX-2.3 (Text to Video) generate request

Request Code

POST https://gateway.pixazo.ai/ltx-2-3-text-to-video/v1/ltx-2-3-text-to-video-request
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_API_KEY

{
  "prompt": "Through-the-veil shot of a bride face during an Indian wedding ceremony, embroidered red dupatta texture, eyes lined with kohl, henna-covered hands, marigold garlands in soft bokeh, 85mm f/1.2, warm tungsten and candlelight, cinematic intimacy",
  "duration": 6,
  "resolution": "1080p",
  "aspect_ratio": "16:9",
  "fps": 25,
  "generate_audio": true
}
import requests

url = "https://gateway.pixazo.ai/ltx-2-3-text-to-video/v1/ltx-2-3-text-to-video-request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
}
data = {
    "prompt": "Through-the-veil shot of a bride face during an Indian wedding ceremony, embroidered red dupatta texture, eyes lined with kohl, henna-covered hands, marigold garlands in soft bokeh, 85mm f/1.2, warm tungsten and candlelight, cinematic intimacy",
    "duration": 6,
    "resolution": "1080p",
    "aspect_ratio": "16:9",
    "fps": 25,
    "generate_audio": true
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = "https://gateway.pixazo.ai/ltx-2-3-text-to-video/v1/ltx-2-3-text-to-video-request";
const headers = {
  "Content-Type": "application/json",
  "Cache-Control": "no-cache",
  "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
};
const data = {
  "prompt": "Through-the-veil shot of a bride face during an Indian wedding ceremony, embroidered red dupatta texture, eyes lined with kohl, henna-covered hands, marigold garlands in soft bokeh, 85mm f/1.2, warm tungsten and candlelight, cinematic intimacy",
  "duration": 6,
  "resolution": "1080p",
  "aspect_ratio": "16:9",
  "fps": 25,
  "generate_audio": true
};

fetch(url, {
  method: "POST",
  headers: headers,
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data));
curl -X POST "https://gateway.pixazo.ai/ltx-2-3-text-to-video/v1/ltx-2-3-text-to-video-request" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  --data-raw '{
    "prompt": "Through-the-veil shot of a bride face during an Indian wedding ceremony, embroidered red dupatta texture, eyes lined with kohl, henna-covered hands, marigold garlands in soft bokeh, 85mm f/1.2, warm tungsten and candlelight, cinematic intimacy",
    "duration": 6,
    "resolution": "1080p",
    "aspect_ratio": "16:9",
    "fps": 25,
    "generate_audio": true
  }'

Output

{
  "request_id": "ltx-2-3-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ltx-2-3-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your submit request to receive a POST callback when the job completes — no polling required.

Using curl? These are HTTP request headers — pass each with -H, e.g. -H "X-Webhook-URL: https://your-server.com/webhook/callback". Do not paste them as bare lines, and end every line of a multi-line command with \.

Webhook Headers

HeaderRequiredDefaultDescription
X-Webhook-URLYes (to enable)HTTPS endpoint on your server that will receive the POST callback. Must respond 2xx within a few seconds (process async if needed).
X-Webhook-ModeNoterminalterminal — fires once at the final status (COMPLETED/FAILED/ERROR). sync — fires on every poll cycle plus the terminal event, and caps the queue’s polling delay at 15s for tighter progress updates.

Example: enable webhook

X-Webhook-URL: https://your-server.com/webhook/callback
X-Webhook-Mode: terminal

Callback Payload

Your endpoint receives a POST application/json with the same shape as the GET /v2/requests/status/{request_id} response. Example terminal callback (mode terminal):

{
  "request_id": "ltx-2-3-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "ltx-2-3-text-to-video",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/ltx-2-3-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/output.mp4"
    ],
    "media_type": "video/mp4"
  },
  "created_at": "2026-05-22T13:17:32.110Z",
  "updated_at": "2026-05-22 13:19:23",
  "completed_at": "2026-05-22 13:19:23"
}

Failure callback shape

{
  "request_id": "ltx-2-3-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "ltx-2-3-text-to-video",
  "error": "Description of the error",
  "output": null,
  "created_at": "...",
  "updated_at": "...",
  "completed_at": "..."
}

Delivery semantics

  • terminal mode (default) — exactly one POST when the request reaches a terminal status. No callback during PROCESSING.
  • sync modePOST on every status poll (with delay capped at ~15s) plus a final POST at terminal status. Use when you want progress updates.
  • Idempotency — use request_id as your idempotency key. Network retries can deliver the same callback more than once; your handler must tolerate duplicates.
  • Response — respond 200 OK within a few seconds. The queue does not block on slow handlers, but persistent failures may stop further deliveries.
  • HTTPS required — plain http:// URLs are rejected.

Request Parameters - LTX-2.3 (Text to Video) generate request

Parameter Required Type Default Allowed values / range Description
promptYesstringText description for video generation. Must be detailed and descriptive for optimal results.
durationNoenum66, 8, 10Duration of the generated video in seconds.
resolutionNoenum1080p1080p, 1440p, 2160pOutput video resolution.
aspect_ratioNoenum16:916:9, 9:16Video aspect ratio.
fpsNoenum2524, 25, 48, 50Frames per second of the output video.
generate_audioNobooleantrueWhether to generate synchronized audio for the video. When set to false, output will be silent.

Example Request

{
  "prompt": "Through-the-veil shot of a bride face during an Indian wedding ceremony, embroidered red dupatta texture, eyes lined with kohl, henna-covered hands, marigold garlands in soft bokeh, 85mm f/1.2, warm tungsten and candlelight, cinematic intimacy",
  "duration": 6,
  "resolution": "1080p",
  "aspect_ratio": "16:9",
  "fps": 25,
  "generate_audio": true
}

Response

{
  "request_id": "ltx-2-3-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ltx-2-3-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Cache-Controlno-cache
Ocp-Apim-Subscription-KeyYOUR_API_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'ltx-2-3-text-to-video' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "ltx-2-3-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "ltx-2-3-text-to-video",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/ltx-2-3-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "ltx-2-3-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "ltx-2-3-text-to-video",
  "error": null,
  "output": {
    "media_url": ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/ltx-2-3-text-to-video_019dxxxx/output.mp4"],
    "media_type": "video/mp4"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstringWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

LTX v2.3 API Pricing

ResolutionPrice (USD)
1080p / per second$0.06
1440p / per second$0.12
2160p (4K) / per second$0.24

LTX v2.3 API Documentation

https://gateway.pixazo.ai/ltx-2-3-image-to-video/v1/ltx-2-3-image-to-video-request

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

LTX-2.3 (Image to Video) generate request

Request Code

POST https://gateway.pixazo.ai/ltx-2-3-image-to-video/v1/ltx-2-3-image-to-video-request
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_API_KEY

{
  "image_url": "https://v3b.example.com/files/b/0a90dd31/uJG2pMMJMcnVeC4PmwnAF_image_004.png",
  "prompt": "Periscope-level shot of two Maasai warriors mid-leap during an adumu jumping dance, golden savanna sunset, red shuka robes frozen in motion, dust kicked up catching backlight, 85mm f/1.4",
  "duration": 6,
  "resolution": "1080p",
  "aspect_ratio": "auto",
  "fps": 25,
  "generate_audio": true
}
import requests

url = "https://gateway.pixazo.ai/ltx-2-3-image-to-video/v1/ltx-2-3-image-to-video-request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
}
data = {
    "image_url": "https://v3b.example.com/files/b/0a90dd31/uJG2pMMJMcnVeC4PmwnAF_image_004.png",
    "prompt": "Periscope-level shot of two Maasai warriors mid-leap during an adumu jumping dance, golden savanna sunset, red shuka robes frozen in motion, dust kicked up catching backlight, 85mm f/1.4",
    "duration": 6,
    "resolution": "1080p",
    "aspect_ratio": "auto",
    "fps": 25,
    "generate_audio": true
}

response = requests.post(url, headers=headers, json=data)
print(response.json())
fetch("https://gateway.pixazo.ai/ltx-2-3-image-to-video/v1/ltx-2-3-image-to-video-request", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
  },
  body: JSON.stringify({
    "image_url": "https://v3b.example.com/files/b/0a90dd31/uJG2pMMJMcnVeC4PmwnAF_image_004.png",
    "prompt": "Periscope-level shot of two Maasai warriors mid-leap during an adumu jumping dance, golden savanna sunset, red shuka robes frozen in motion, dust kicked up catching backlight, 85mm f/1.4",
    "duration": 6,
    "resolution": "1080p",
    "aspect_ratio": "auto",
    "fps": 25,
    "generate_audio": true
  })
})
  .then(response => response.json())
  .then(data => console.log(data));
curl -X POST "https://gateway.pixazo.ai/ltx-2-3-image-to-video/v1/ltx-2-3-image-to-video-request" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  --data-raw '{
    "image_url": "https://v3b.example.com/files/b/0a90dd31/uJG2pMMJMcnVeC4PmwnAF_image_004.png",
    "prompt": "Periscope-level shot of two Maasai warriors mid-leap during an adumu jumping dance, golden savanna sunset, red shuka robes frozen in motion, dust kicked up catching backlight, 85mm f/1.4",
    "duration": 6,
    "resolution": "1080p",
    "aspect_ratio": "auto",
    "fps": 25,
    "generate_audio": true
  }'

Output

{
  "request_id": "ltx-2-3-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ltx-2-3-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your submit request to receive a POST callback when the job completes — no polling required.

Using curl? These are HTTP request headers — pass each with -H, e.g. -H "X-Webhook-URL: https://your-server.com/webhook/callback". Do not paste them as bare lines, and end every line of a multi-line command with \.

Webhook Headers

HeaderRequiredDefaultDescription
X-Webhook-URLYes (to enable)HTTPS endpoint on your server that will receive the POST callback. Must respond 2xx within a few seconds (process async if needed).
X-Webhook-ModeNoterminalterminal — fires once at the final status (COMPLETED/FAILED/ERROR). sync — fires on every poll cycle plus the terminal event, and caps the queue’s polling delay at 15s for tighter progress updates.

Example: enable webhook

X-Webhook-URL: https://your-server.com/webhook/callback
X-Webhook-Mode: terminal

Callback Payload

Your endpoint receives a POST application/json with the same shape as the GET /v2/requests/status/{request_id} response. Example terminal callback (mode terminal):

{
  "request_id": "ltx-2-3-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "ltx-2-3-image-to-video",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/ltx-2-3-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/output.mp4"
    ],
    "media_type": "video/mp4"
  },
  "created_at": "2026-05-22T13:17:32.110Z",
  "updated_at": "2026-05-22 13:19:23",
  "completed_at": "2026-05-22 13:19:23"
}

Failure callback shape

{
  "request_id": "ltx-2-3-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "ltx-2-3-image-to-video",
  "error": "Description of the error",
  "output": null,
  "created_at": "...",
  "updated_at": "...",
  "completed_at": "..."
}

Delivery semantics

  • terminal mode (default) — exactly one POST when the request reaches a terminal status. No callback during PROCESSING.
  • sync modePOST on every status poll (with delay capped at ~15s) plus a final POST at terminal status. Use when you want progress updates.
  • Idempotency — use request_id as your idempotency key. Network retries can deliver the same callback more than once; your handler must tolerate duplicates.
  • Response — respond 200 OK within a few seconds. The queue does not block on slow handlers, but persistent failures may stop further deliveries.
  • HTTPS required — plain http:// URLs are rejected.

Request Parameters - LTX-2.3 (Image to Video) generate request

Parameter Required Type Default Allowed values / range Description
image_urlYesstringURL of the start image to use for the generated video. Must be publicly accessible.
end_image_urlNostringURL of an end image. When provided, generates a transition video between start and end frames. Must be publicly accessible.
promptYesstringText prompt describing the desired motion, style, and scene details for the generated video.
durationNoenum66, 8, 10Duration of the output video in seconds.
resolutionNoenum1080p1080p, 1440p, 2160pOutput video resolution.
aspect_ratioNoenumautoauto, 16:9, 9:16Aspect ratio of the output video. If auto, the ratio is inferred from the input image.
fpsNoenum2524, 25, 48, 50Frames per second of the output video.
generate_audioNobooleantrueWhether to generate synchronized audio for the video. If false, output will be silent.

Example Request

{
  "image_url": "https://v3b.example.com/files/b/0a90dd31/uJG2pMMJMcnVeC4PmwnAF_image_004.png",
  "prompt": "Periscope-level shot of two Maasai warriors mid-leap during an adumu jumping dance, golden savanna sunset, red shuka robes frozen in motion, dust kicked up catching backlight, 85mm f/1.4",
  "duration": 6,
  "resolution": "1080p",
  "aspect_ratio": "auto",
  "fps": 25,
  "generate_audio": true
}

Response

{
  "request_id": "ltx-2-3-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ltx-2-3-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Cache-Controlno-cache
Ocp-Apim-Subscription-KeyYOUR_API_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'ltx-2-3-image-to-video' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "ltx-2-3-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "ltx-2-3-image-to-video",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/ltx-2-3-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "ltx-2-3-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "ltx-2-3-image-to-video",
  "error": null,
  "output": {
    "media_url": ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/ltx-2-3-image-to-video_019dxxxx/output.mp4"],
    "media_type": "video/mp4"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstringWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

LTX v2.3 API Pricing

ResolutionPrice (USD)
1080p / per second$0.06
1440p / per second$0.12
2160p (4K) / per second$0.24

LTX v2.3 API Documentation

https://gateway.pixazo.ai/ltx-2-3-audio-to-video/v1/ltx-2-3-audio-to-video-request

Authentication

All requests require an API key passed via header.

Header Type Required Description
Ocp-Apim-Subscription-Key string Yes Your API subscription key

LTX 2.3 Audio to Video generate request - LTX 2.3 Audio to Video

Request Code

POST https://gateway.pixazo.ai/ltx-2-3-audio-to-video/v1/ltx-2-3-audio-to-video-request
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "prompt": "A musician passionately playing piano in a dimly lit jazz club",
  "audio_url": "https://imagesai.appypie.com/7686410/wGrZmX6DC6QbKdp73zyK_017727945871303.mp3",
  "image_url": "https://imagesai.appypie.com/7686410/PaESYuZM3mrXtc08U2vh_017731442751326.png",
  "guidance_scale": 9
}
import requests

url = "https://gateway.pixazo.ai/ltx-2-3-audio-to-video/v1/ltx-2-3-audio-to-video-request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "prompt": "A musician passionately playing piano in a dimly lit jazz club",
    "audio_url": "https://imagesai.appypie.com/7686410/wGrZmX6DC6QbKdp73zyK_017727945871303.mp3",
    "image_url": "https://imagesai.appypie.com/7686410/PaESYuZM3mrXtc08U2vh_017731442751326.png",
    "guidance_scale": 9
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = "https://gateway.pixazo.ai/ltx-2-3-audio-to-video/v1/ltx-2-3-audio-to-video-request";

const data = {
  prompt: "A musician passionately playing piano in a dimly lit jazz club",
  audio_url: "https://imagesai.appypie.com/7686410/wGrZmX6DC6QbKdp73zyK_017727945871303.mp3",
  image_url: "https://imagesai.appypie.com/7686410/PaESYuZM3mrXtc08U2vh_017731442751326.png",
  guidance_scale: 9
};

fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
  },
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error("Error:", error));
curl -X POST "https://gateway.pixazo.ai/ltx-2-3-audio-to-video/v1/ltx-2-3-audio-to-video-request" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  --data-raw '{
    "prompt": "A musician passionately playing piano in a dimly lit jazz club",
    "audio_url": "https://imagesai.appypie.com/7686410/wGrZmX6DC6QbKdp73zyK_017727945871303.mp3",
    "image_url": "https://imagesai.appypie.com/7686410/PaESYuZM3mrXtc08U2vh_017731442751326.png",
    "guidance_scale": 9
}'

Output

{
  "request_id": "ltx-2-3-audio-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ltx-2-3-audio-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your submit request to receive a POST callback when the job completes — no polling required.

Using curl? These are HTTP request headers — pass each with -H, e.g. -H "X-Webhook-URL: https://your-server.com/webhook/callback". Do not paste them as bare lines, and end every line of a multi-line command with \.

Webhook Headers

HeaderRequiredDefaultDescription
X-Webhook-URLYes (to enable)HTTPS endpoint on your server that will receive the POST callback. Must respond 2xx within a few seconds (process async if needed).
X-Webhook-ModeNoterminalterminal — fires once at the final status (COMPLETED/FAILED/ERROR). sync — fires on every poll cycle plus the terminal event, and caps the queue’s polling delay at 15s for tighter progress updates.

Example: enable webhook

X-Webhook-URL: https://your-server.com/webhook/callback
X-Webhook-Mode: terminal

Callback Payload

Your endpoint receives a POST application/json with the same shape as the GET /v2/requests/status/{request_id} response. Example terminal callback (mode terminal):

{
  "request_id": "ltx-2-3-audio-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "ltx-2-3-audio-to-video",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/ltx-2-3-audio-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/output.mp4"
    ],
    "media_type": "video/mp4"
  },
  "created_at": "2026-05-22T13:17:32.110Z",
  "updated_at": "2026-05-22 13:19:23",
  "completed_at": "2026-05-22 13:19:23"
}

Failure callback shape

{
  "request_id": "ltx-2-3-audio-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "ltx-2-3-audio-to-video",
  "error": "Description of the error",
  "output": null,
  "created_at": "...",
  "updated_at": "...",
  "completed_at": "..."
}

Delivery semantics

  • terminal mode (default) — exactly one POST when the request reaches a terminal status. No callback during PROCESSING.
  • sync modePOST on every status poll (with delay capped at ~15s) plus a final POST at terminal status. Use when you want progress updates.
  • Idempotency — use request_id as your idempotency key. Network retries can deliver the same callback more than once; your handler must tolerate duplicates.
  • Response — respond 200 OK within a few seconds. The queue does not block on slow handlers, but persistent failures may stop further deliveries.
  • HTTPS required — plain http:// URLs are rejected.

Request Parameters - LTX 2.3 Audio to Video generate request

ParameterRequiredTypeDefaultAllowed values / rangeDescription
promptYesstringA detailed text description of the desired video scene, including subject, action, lighting, and environment.
audio_urlYesstringPublicly accessible URL to an audio file (MP3, WAV, or other common formats) to drive video motion and timing.
image_urlNostringPublicly accessible URL to a starting frame image that initializes the first frame of the video. If omitted, the model generates an initial frame from the prompt.
guidance_scaleNonumber7.5Controls how closely the output adheres to the prompt. Higher values (e.g., 9–12) increase prompt fidelity; lower values (e.g., 5–7) allow more creative variation.

Minimum Request

{
  "prompt": "A musician passionately playing piano in a dimly lit jazz club",
  "audio_url": "https://imagesai.appypie.com/7686410/wGrZmX6DC6QbKdp73zyK_017727945871303.mp3"
}

Full Request (all options)

{
  "prompt": "A musician passionately playing piano in a dimly lit jazz club",
  "audio_url": "https://imagesai.appypie.com/7686410/wGrZmX6DC6QbKdp73zyK_017727945871303.mp3",
  "image_url": "https://imagesai.appypie.com/7686410/PaESYuZM3mrXtc08U2vh_017731442751326.png",
  "guidance_scale": 9
}

Response

{
  "request_id": "ltx-2-3-audio-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ltx-2-3-audio-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Type application/json
Cache-Control no-cache
Ocp-Apim-Subscription-Key Your API subscription key

Response Handling

Common status codes for LTX 2.3 Audio to Video generate request.

Code Meaning
202 Accepted — Request queued
Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
Too Many Requests
500 Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'ltx-2-3-audio-to-video' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "ltx-2-3-audio-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "ltx-2-3-audio-to-video",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/ltx-2-3-audio-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "ltx-2-3-audio-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "ltx-2-3-audio-to-video",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/ltx-2-3-audio-to-video_019dxxxx-xxxx/output.ext"
    ],
    "media_type": "application/octet-stream"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstring|nullWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

LTX v2.3 API Pricing

ResolutionPrice (USD)
All Resolution / per second$0.1

LTX v2.3 API Documentation

https://gateway.pixazo.ai/ltx-2-3-retake-video/v1/ltx-2-3-retake-video-request

Authentication

All requests require an API key passed via header.

Header Type Required Description
Ocp-Apim-Subscription-Key string Yes Your API subscription key

LTX 2.3 Retake Video generate request - LTX 2.3 Retake Video

Request Code

POST https://gateway.pixazo.ai/ltx-2-3-retake-video/v1/ltx-2-3-retake-video-request
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "prompt": "Transform the scene into a vibrant neon-lit cyberpunk environment",
  "video_url": "https://imagesai.appypie.com/7686410/HjRiOy5cjxaM5YMXUY5U_017731482701572.mp4",
  "start_time": 0,
  "duration": 5,
  "retake_mode": "replace_audio_and_video"
}
import requests

url = "https://gateway.pixazo.ai/ltx-2-3-retake-video/v1/ltx-2-3-retake-video-request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "prompt": "Transform the scene into a vibrant neon-lit cyberpunk environment",
    "video_url": "https://imagesai.appypie.com/7686410/HjRiOy5cjxaM5YMXUY5U_017731482701572.mp4",
    "start_time": 0,
    "duration": 5,
    "retake_mode": "replace_audio_and_video"
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = 'https://gateway.pixazo.ai/ltx-2-3-retake-video/v1/ltx-2-3-retake-video-request';

const data = {
  prompt: 'Transform the scene into a vibrant neon-lit cyberpunk environment',
  video_url: 'https://imagesai.appypie.com/7686410/HjRiOy5cjxaM5YMXUY5U_017731482701572.mp4',
  start_time: 0,
  duration: 5,
  retake_mode: 'replace_audio_and_video'
};

fetch(url, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Cache-Control': 'no-cache',
    'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
  },
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
curl -X POST "https://gateway.pixazo.ai/ltx-2-3-retake-video/v1/ltx-2-3-retake-video-request" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  --data-raw '{
    "prompt": "Transform the scene into a vibrant neon-lit cyberpunk environment",
    "video_url": "https://imagesai.appypie.com/7686410/HjRiOy5cjxaM5YMXUY5U_017731482701572.mp4",
    "start_time": 0,
    "duration": 5,
    "retake_mode": "replace_audio_and_video"
  }'

Output

{
  "request_id": "ltx-2-3-retake-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ltx-2-3-retake-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your submit request to receive a POST callback when the job completes — no polling required.

Using curl? These are HTTP request headers — pass each with -H, e.g. -H "X-Webhook-URL: https://your-server.com/webhook/callback". Do not paste them as bare lines, and end every line of a multi-line command with \.

Webhook Headers

HeaderRequiredDefaultDescription
X-Webhook-URLYes (to enable)HTTPS endpoint on your server that will receive the POST callback. Must respond 2xx within a few seconds (process async if needed).
X-Webhook-ModeNoterminalterminal — fires once at the final status (COMPLETED/FAILED/ERROR). sync — fires on every poll cycle plus the terminal event, and caps the queue’s polling delay at 15s for tighter progress updates.

Example: enable webhook

X-Webhook-URL: https://your-server.com/webhook/callback
X-Webhook-Mode: terminal

Callback Payload

Your endpoint receives a POST application/json with the same shape as the GET /v2/requests/status/{request_id} response. Example terminal callback (mode terminal):

{
  "request_id": "ltx-2-3-retake-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "ltx-2-3-retake-video",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/ltx-2-3-retake-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/output.mp4"
    ],
    "media_type": "video/mp4"
  },
  "created_at": "2026-05-22T13:17:32.110Z",
  "updated_at": "2026-05-22 13:19:23",
  "completed_at": "2026-05-22 13:19:23"
}

Failure callback shape

{
  "request_id": "ltx-2-3-retake-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "ltx-2-3-retake-video",
  "error": "Description of the error",
  "output": null,
  "created_at": "...",
  "updated_at": "...",
  "completed_at": "..."
}

Delivery semantics

  • terminal mode (default) — exactly one POST when the request reaches a terminal status. No callback during PROCESSING.
  • sync modePOST on every status poll (with delay capped at ~15s) plus a final POST at terminal status. Use when you want progress updates.
  • Idempotency — use request_id as your idempotency key. Network retries can deliver the same callback more than once; your handler must tolerate duplicates.
  • Response — respond 200 OK within a few seconds. The queue does not block on slow handlers, but persistent failures may stop further deliveries.
  • HTTPS required — plain http:// URLs are rejected.

Request Parameters - LTX 2.3 Retake Video generate request

ParameterRequiredTypeDefaultAllowed values / rangeDescription
promptYesstringText description describing the desired transformation (e.g., style, lighting, objects). Must be detailed for optimal results.
video_urlYesstringPublicly accessible URL of the source video to be edited. Must be reachable by the API server.
start_timeYesintegerStart time in seconds of the video segment to be retaken. Must be non-negative.
durationYesintegerDuration in seconds of the video segment to be retaken. Must be positive and within video bounds.
retake_modeYesstringSpecifies how the retake should be applied. Valid values: replace_audio_and_video, replace_video_only.

Minimum Request

{
  "prompt": "Transform the scene into a vibrant neon-lit cyberpunk environment",
  "video_url": "https://imagesai.appypie.com/7686410/HjRiOy5cjxaM5YMXUY5U_017731482701572.mp4",
  "start_time": 0,
  "duration": 5,
  "retake_mode": "replace_audio_and_video"
}

Full Request (all options)

{
  "prompt": "Transform the scene into a vibrant neon-lit cyberpunk environment",
  "video_url": "https://imagesai.appypie.com/7686410/HjRiOy5cjxaM5YMXUY5U_017731482701572.mp4",
  "start_time": 0,
  "duration": 5,
  "retake_mode": "replace_audio_and_video"
}

Response

{
  "request_id": "ltx-2-3-retake-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ltx-2-3-retake-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Type application/json
Cache-Control no-cache
Ocp-Apim-Subscription-Key Your subscription key

Response Handling

Common status codes for LTX 2.3 Retake Video generate request.

Code Meaning
202 Accepted — Request queued
Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
Too Many Requests
500 Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'ltx-2-3-retake-video' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "ltx-2-3-retake-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "ltx-2-3-retake-video",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/ltx-2-3-retake-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "ltx-2-3-retake-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "ltx-2-3-retake-video",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/ltx-2-3-retake-video_019dxxxx-xxxx/output.ext"
    ],
    "media_type": "application/octet-stream"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstring|nullWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

LTX v2.3 API Pricing

ResolutionPrice (USD)
All Resolution / per second$0.1
4. LTX v2 Pro

LTX v2 Pro API Documentation

https://gateway.pixazo.ai/lightricks/v1/ltx/generate

Authentication

All requests require an API key passed via header.

Header Type Required Description
Ocp-Apim-Subscription-Key string Yes Your API subscription key

LTX V2 Video Generate - LTX V2 Pro

Request Code

POST https://gateway.pixazo.ai/lightricks/v1/ltx/generate HTTP/1.1

Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
    "prompt": "A cinematic drone shot of a futuristic city at night with flying cars and neon lights",
    "duration": 10,
    "resolution": "1080p",
    "generate_audio": true
}
import requests
import json

url = "https://gateway.pixazo.ai/lightricks/v1/ltx/generate"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "prompt": "A cinematic drone shot of a futuristic city at night with flying cars and neon lights",
    "duration": 10,
    "resolution": "1080p",
    "generate_audio": True
}

response = requests.post(url, headers=headers, json=data)
print(response.json())
const url = 'https://gateway.pixazo.ai/lightricks/v1/ltx/generate';
const headers = {
  'Content-Type': 'application/json',
  'Cache-Control': 'no-cache',
  'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
};

const body = {
  prompt: 'A cinematic drone shot of a futuristic city at night with flying cars and neon lights',
  duration: 10,
  resolution: '1080p',
  generate_audio: true
};

fetch(url, {
  method: 'POST',
  headers: headers,
  body: JSON.stringify(body)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
curl -v -X POST "https://gateway.pixazo.ai/lightricks/v1/ltx/generate" \
-H "Content-Type: application/json" \
-H "Cache-Control: no-cache" \
-H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
--data-raw '{
    "prompt": "A cinematic drone shot of a futuristic city at night with flying cars and neon lights",
    "duration": 10,
    "resolution": "1080p",
    "generate_audio": true
}'

Output

{
  "request_id": "lightricks-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/lightricks-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your submit request to receive a POST callback when the job completes — no polling required.

Using curl? These are HTTP request headers — pass each with -H, e.g. -H "X-Webhook-URL: https://your-server.com/webhook/callback". Do not paste them as bare lines, and end every line of a multi-line command with \.

Webhook Headers

HeaderRequiredDefaultDescription
X-Webhook-URLYes (to enable)HTTPS endpoint on your server that will receive the POST callback. Must respond 2xx within a few seconds (process async if needed).
X-Webhook-ModeNoterminalterminal — fires once at the final status (COMPLETED/FAILED/ERROR). sync — fires on every poll cycle plus the terminal event, and caps the queue’s polling delay at 15s for tighter progress updates.

Example: enable webhook

X-Webhook-URL: https://your-server.com/webhook/callback
X-Webhook-Mode: terminal

Callback Payload

Your endpoint receives a POST application/json with the same shape as the GET /v2/requests/status/{request_id} response. Example terminal callback (mode terminal):

{
  "request_id": "lightricks-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "lightricks-video",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/lightricks-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/output.mp4"
    ],
    "media_type": "video/mp4"
  },
  "created_at": "2026-05-22T13:17:32.110Z",
  "updated_at": "2026-05-22 13:19:23",
  "completed_at": "2026-05-22 13:19:23"
}

Failure callback shape

{
  "request_id": "lightricks-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "lightricks-video",
  "error": "Description of the error",
  "output": null,
  "created_at": "...",
  "updated_at": "...",
  "completed_at": "..."
}

Delivery semantics

  • terminal mode (default) — exactly one POST when the request reaches a terminal status. No callback during PROCESSING.
  • sync modePOST on every status poll (with delay capped at ~15s) plus a final POST at terminal status. Use when you want progress updates.
  • Idempotency — use request_id as your idempotency key. Network retries can deliver the same callback more than once; your handler must tolerate duplicates.
  • Response — respond 200 OK within a few seconds. The queue does not block on slow handlers, but persistent failures may stop further deliveries.
  • HTTPS required — plain http:// URLs are rejected.

Request Parameters - LTX V2 Video Generate

ParameterRequiredTypeDefaultAllowed values / rangeDescription
promptYesstringText description of the video you want to generate. Be specific and descriptive for best results.
imageNostringImage URL for image-to-video mode. Must be publicly accessible (HTTPS recommended).
durationNointeger6Video duration in seconds. Valid values: 6, 8, 10
resolutionNostring1080pOutput resolution. Valid values: 1080p, 1440p, 2160p
generate_audioNobooleantruetrue, falseGenerate audio for the video (audio is preview quality)
webhookNostringCallback URL for completion notification.
webhook_events_filterNoarray["*"]Events that trigger webhook. Valid values: ["*"] (all), ["completed"] (success/failure only)

Minimum Request

{
  "prompt": "A serene mountain landscape at sunset with clouds moving slowly across the sky"
}

Full Request (all options)

{
  "prompt": "A cinematic drone shot of a futuristic city at night with flying cars and neon lights",
  "image": "https://example.com/input-photo.jpg",
  "duration": 10,
  "resolution": "2160p",
  "generate_audio": true,
  "webhook": "https://yourdomain.com/webhook",
  "webhook_events_filter": [
    "*"
  ]
}

Response

{
  "request_id": "lightricks-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/lightricks-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Type application/json
Cache-Control no-cache
Ocp-Apim-Subscription-Key Your API subscription key

Response Handling

Common status codes for LTX V2 Video Generate.

Code Meaning
202 Accepted — Request queued
Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
Too Many Requests
500 Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'lightricks-video' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "lightricks-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "lightricks-video",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/lightricks-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "lightricks-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "lightricks-video",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/lightricks-video_019dxxxx-xxxx/output.ext"
    ],
    "media_type": "application/octet-stream"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstring|nullWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

LTX v2 Pro API Pricing

No data available

Could not load current pricing

5. LTX v2 19B

LTX v2 19B API Documentation

https://gateway.pixazo.ai/ltx-2-19b-api-513/v1/ltx-2-19b-api-request

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

LTX-2 19B API generate request - LTX-2 19B API

Request Code

POST https://gateway.pixazo.ai/ltx-2-19b-api-513/v1/ltx-2-19b-api-request
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "prompt": "A golden retriever running through a sunlit forest, tail wagging, leaves blowing in the wind",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/nano-banana.jpeg",
  "num_frames": 121,
  "video_size": "auto",
  "generate_audio": true,
  "use_multiscale": true,
  "fps": 25,
  "acceleration": "none",
  "camera_lora": "none",
  "camera_lora_scale": 1,
  "negative_prompt": "blurry, out of focus, overexposed, underexposed, low contrast, washed out colors, excessive noise, grainy texture, poor lighting, flickering, motion blur, distorted proportions, unnatural skin tones, deformed facial features, asymmetrical face, missing facial features, extra limbs, disfigured hands, wrong hand count, artifacts around text, inconsistent perspective, camera shake, incorrect depth of field, background too sharp, background clutter, distracting reflections, harsh shadows, inconsistent lighting direction, color banding, cartoonish rendering, 3D CGI look, unrealistic materials, uncanny valley effect, incorrect ethnicity, wrong gender, exaggerated expressions, wrong gaze direction, mismatched lip sync, silent or muted audio, distorted voice, robotic voice, echo, background noise, off-sync audio, incorrect dialogue, added dialogue, repetitive speech, jittery movement, awkward pauses, incorrect timing, unnatural transitions, inconsistent framing, tilted camera, flat lighting, inconsistent tone, cinematic oversaturation, stylized filters, or AI artifacts.",
  "enable_safety_checker": true,
  "video_output_type": "X264 (.mp4)",
  "video_quality": "high",
  "video_write_mode": "balanced"
}
import requests
import json

url = "https://gateway.pixazo.ai/ltx-2-19b-api-513/v1/ltx-2-19b-api-request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "prompt": "A golden retriever running through a sunlit forest, tail wagging, leaves blowing in the wind",
    "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/nano-banana.jpeg",
    "num_frames": 121,
    "video_size": "auto",
    "generate_audio": true,
    "use_multiscale": true,
    "fps": 25,
    "acceleration": "none",
    "camera_lora": "none",
    "camera_lora_scale": 1,
    "negative_prompt": "blurry, out of focus, overexposed, underexposed, low contrast, washed out colors, excessive noise, grainy texture, poor lighting, flickering, motion blur, distorted proportions, unnatural skin tones, deformed facial features, asymmetrical face, missing facial features, extra limbs, disfigured hands, wrong hand count, artifacts around text, inconsistent perspective, camera shake, incorrect depth of field, background too sharp, background clutter, distracting reflections, harsh shadows, inconsistent lighting direction, color banding, cartoonish rendering, 3D CGI look, unrealistic materials, uncanny valley effect, incorrect ethnicity, wrong gender, exaggerated expressions, wrong gaze direction, mismatched lip sync, silent or muted audio, distorted voice, robotic voice, echo, background noise, off-sync audio, incorrect dialogue, added dialogue, repetitive speech, jittery movement, awkward pauses, incorrect timing, unnatural transitions, inconsistent framing, tilted camera, flat lighting, inconsistent tone, cinematic oversaturation, stylized filters, or AI artifacts.",
    "enable_safety_checker": true,
    "video_output_type": "X264 (.mp4)",
    "video_quality": "high",
    "video_write_mode": "balanced"
}

response = requests.post(url, headers=headers, json=data)
print(response.json())
const url = 'https://gateway.pixazo.ai/ltx-2-19b-api-513/v1/ltx-2-19b-api-request';

const data = {
  prompt: 'A golden retriever running through a sunlit forest, tail wagging, leaves blowing in the wind',
  image_url: 'https://pub-582b7213209642b9b995c96c95a30381.r2.dev/nano-banana.jpeg',
  num_frames: 121,
  video_size: 'auto',
  generate_audio: true,
  use_multiscale: true,
  fps: 25,
  acceleration: 'none',
  camera_lora: 'none',
  camera_lora_scale: 1,
  negative_prompt: 'blurry, out of focus, overexposed, underexposed, low contrast, washed out colors, excessive noise, grainy texture, poor lighting, flickering, motion blur, distorted proportions, unnatural skin tones, deformed facial features, asymmetrical face, missing facial features, extra limbs, disfigured hands, wrong hand count, artifacts around text, inconsistent perspective, camera shake, incorrect depth of field, background too sharp, background clutter, distracting reflections, harsh shadows, inconsistent lighting direction, color banding, cartoonish rendering, 3D CGI look, unrealistic materials, uncanny valley effect, incorrect ethnicity, wrong gender, exaggerated expressions, wrong gaze direction, mismatched lip sync, silent or muted audio, distorted voice, robotic voice, echo, background noise, off-sync audio, incorrect dialogue, added dialogue, repetitive speech, jittery movement, awkward pauses, incorrect timing, unnatural transitions, inconsistent framing, tilted camera, flat lighting, inconsistent tone, cinematic oversaturation, stylized filters, or AI artifacts.',
  enable_safety_checker: true,
  video_output_type: 'X264 (.mp4)',
  video_quality: 'high',
  video_write_mode: 'balanced'
};

fetch(url, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Cache-Control': 'no-cache',
    'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
  },
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
curl -X POST "https://gateway.pixazo.ai/ltx-2-19b-api-513/v1/ltx-2-19b-api-request" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  --data-raw '{
    "prompt": "A golden retriever running through a sunlit forest, tail wagging, leaves blowing in the wind",
    "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/nano-banana.jpeg",
    "num_frames": 121,
    "video_size": "auto",
    "generate_audio": true,
    "use_multiscale": true,
    "fps": 25,
    "acceleration": "none",
    "camera_lora": "none",
    "camera_lora_scale": 1,
    "negative_prompt": "blurry, out of focus, overexposed, underexposed, low contrast, washed out colors, excessive noise, grainy texture, poor lighting, flickering, motion blur, distorted proportions, unnatural skin tones, deformed facial features, asymmetrical face, missing facial features, extra limbs, disfigured hands, wrong hand count, artifacts around text, inconsistent perspective, camera shake, incorrect depth of field, background too sharp, background clutter, distracting reflections, harsh shadows, inconsistent lighting direction, color banding, cartoonish rendering, 3D CGI look, unrealistic materials, uncanny valley effect, incorrect ethnicity, wrong gender, exaggerated expressions, wrong gaze direction, mismatched lip sync, silent or muted audio, distorted voice, robotic voice, echo, background noise, off-sync audio, incorrect dialogue, added dialogue, repetitive speech, jittery movement, awkward pauses, incorrect timing, unnatural transitions, inconsistent framing, tilted camera, flat lighting, inconsistent tone, cinematic oversaturation, stylized filters, or AI artifacts.",
    "enable_safety_checker": true,
    "video_output_type": "X264 (.mp4)",
    "video_quality": "high",
    "video_write_mode": "balanced"
  }'

Output

{
  "request_id": "ltx-2-19b-api-513_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ltx-2-19b-api-513_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your submit request to receive a POST callback when the job completes — no polling required.

Using curl? These are HTTP request headers — pass each with -H, e.g. -H "X-Webhook-URL: https://your-server.com/webhook/callback". Do not paste them as bare lines, and end every line of a multi-line command with \.

Webhook Headers

HeaderRequiredDefaultDescription
X-Webhook-URLYes (to enable)HTTPS endpoint on your server that will receive the POST callback. Must respond 2xx within a few seconds (process async if needed).
X-Webhook-ModeNoterminalterminal — fires once at the final status (COMPLETED/FAILED/ERROR). sync — fires on every poll cycle plus the terminal event, and caps the queue’s polling delay at 15s for tighter progress updates.

Example: enable webhook

X-Webhook-URL: https://your-server.com/webhook/callback
X-Webhook-Mode: terminal

Callback Payload

Your endpoint receives a POST application/json with the same shape as the GET /v2/requests/status/{request_id} response. Example terminal callback (mode terminal):

{
  "request_id": "ltx-2-19b-api-513_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "ltx-2-19b-api-513",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/ltx-2-19b-api-513_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/output.mp4"
    ],
    "media_type": "video/mp4"
  },
  "created_at": "2026-05-22T13:17:32.110Z",
  "updated_at": "2026-05-22 13:19:23",
  "completed_at": "2026-05-22 13:19:23"
}

Failure callback shape

{
  "request_id": "ltx-2-19b-api-513_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "ltx-2-19b-api-513",
  "error": "Description of the error",
  "output": null,
  "created_at": "...",
  "updated_at": "...",
  "completed_at": "..."
}

Delivery semantics

  • terminal mode (default) — exactly one POST when the request reaches a terminal status. No callback during PROCESSING.
  • sync modePOST on every status poll (with delay capped at ~15s) plus a final POST at terminal status. Use when you want progress updates.
  • Idempotency — use request_id as your idempotency key. Network retries can deliver the same callback more than once; your handler must tolerate duplicates.
  • Response — respond 200 OK within a few seconds. The queue does not block on slow handlers, but persistent failures may stop further deliveries.
  • HTTPS required — plain http:// URLs are rejected.

Request Parameters - LTX-2 19B API generate request

ParameterRequiredTypeDefaultAllowed values / rangeDescription
promptYesstringText description guiding video generation, including actions, style, and context.
image_urlYesstringPublicly accessible URL of the input image to animate. Must be reachable by the server.
num_framesNointegerTotal number of frames to generate in the output video. Higher values produce smoother animations.
video_sizeNostringResolution of the output video. Use "auto" to derive from input image dimensions, or specify "512x512", "768x768", etc.
generate_audioNobooleantrue, falseWhether to generate synchronized audio based on the prompt. If enabled, audio will be embedded in the video.
use_multiscaleNobooleantrue, falseEnables multi-scale motion generation for more natural and detailed motion across different spatial scales.
fpsNointegerFrames per second for the output video. Higher values result in smoother motion.
accelerationNostringHardware acceleration mode. Use "none" for CPU-only, or "cuda" for GPU acceleration if supported.
camera_loraNostringCamera motion control via LoRA adapter. Use "none" for no camera motion, or specify a trained LoRA model name.
camera_lora_scaleNonumberStrength of the camera motion LoRA effect (0.0 to 2.0). Values above 1.0 amplify motion.
negative_promptNostringDescription of undesired elements to exclude from the output (e.g., artifacts, distortions). Enhances output quality.
enable_safety_checkerNobooleantrue, falseEnables content safety filtering to block potentially inappropriate or harmful outputs.
video_output_typeNostringFormat of the output video file. Supports "X264 (.mp4)", "H265 (.mp4)", or "WebM".
video_qualityNostringOutput video quality level. Values: "low", "balanced", "high". Higher quality increases file size and processing time.
video_write_modeNostring"fast", "balanced", "high-quality"Strategy for writing video frames. Options: "fast", "balanced", "high-quality". Influences rendering consistency and file integrity.

Example Request

{
  "prompt": "A golden retriever running through a sunlit forest, tail wagging, leaves blowing in the wind",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/nano-banana.jpeg",
  "num_frames": 121,
  "video_size": "auto",
  "generate_audio": true,
  "use_multiscale": true,
  "fps": 25,
  "acceleration": "none",
  "camera_lora": "none",
  "camera_lora_scale": 1,
  "negative_prompt": "blurry, out of focus, overexposed, underexposed, low contrast, washed out colors, excessive noise, grainy texture, poor lighting, flickering, motion blur, distorted proportions, unnatural skin tones, deformed facial features, asymmetrical face, missing facial features, extra limbs, disfigured hands, wrong hand count, artifacts around text, inconsistent perspective, camera shake, incorrect depth of field, background too sharp, background clutter, distracting reflections, harsh shadows, inconsistent lighting direction, color banding, cartoonish rendering, 3D CGI look, unrealistic materials, uncanny valley effect, incorrect ethnicity, wrong gender, exaggerated expressions, wrong gaze direction, mismatched lip sync, silent or muted audio, distorted voice, robotic voice, echo, background noise, off-sync audio, incorrect dialogue, added dialogue, repetitive speech, jittery movement, awkward pauses, incorrect timing, unnatural transitions, inconsistent framing, tilted camera, flat lighting, inconsistent tone, cinematic oversaturation, stylized filters, or AI artifacts.",
  "enable_safety_checker": true,
  "video_output_type": "X264 (.mp4)",
  "video_quality": "high",
  "video_write_mode": "balanced"
}

Response

{
  "request_id": "ltx-2-19b-api-513_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ltx-2-19b-api-513_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Cache-Controlno-cache
Ocp-Apim-Subscription-KeyYOUR_SUBSCRIPTION_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'ltx-2-19b-api-513' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "ltx-2-19b-api-513_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "ltx-2-19b-api-513",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/ltx-2-19b-api-513_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "ltx-2-19b-api-513_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "ltx-2-19b-api-513",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/ltx-2-19b-api-513_019dxxxx-xxxx/output.ext"
    ],
    "media_type": "application/octet-stream"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstring|nullWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

LTX v2 19B API Pricing

ResolutionPrice (USD)
All Resolution$0.0896
6. LTX v2

LTX v2 API Documentation

https://gateway.pixazo.ai/ltx-2-video-api-581/v1/ltx-2-video-api-request

Authentication

All requests require an API key passed via header.

Header Type Required Description
Ocp-Apim-Subscription-Key string Yes Your API subscription key

LTX-2 Video API generate request - LTX-2 Video API

Request Code

POST https://gateway.pixazo.ai/ltx-2-video-api-581/v1/ltx-2-video-api-request
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "image_url": "https://example.com/example_inputs/ltxv-2-i2v-input.jpg",
  "prompt": "A woman stands still amid a busy neon-lit street at night. The camera slowly dollies in toward her face as people blur past, their motion emphasizing her calm presence. City lights flicker and reflections shift across her denim jacket."
}
import requests

url = "https://gateway.pixazo.ai/ltx-2-video-api-581/v1/ltx-2-video-api-request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "image_url": "https://example.com/example_inputs/ltxv-2-i2v-input.jpg",
    "prompt": "A woman stands still amid a busy neon-lit street at night. The camera slowly dollies in toward her face as people blur past, their motion emphasizing her calm presence. City lights flicker and reflections shift across her denim jacket."
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = "https://gateway.pixazo.ai/ltx-2-video-api-581/v1/ltx-2-video-api-request";
const headers = {
  "Content-Type": "application/json",
  "Cache-Control": "no-cache",
  "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
};
const data = {
  "image_url": "https://example.com/example_inputs/ltxv-2-i2v-input.jpg",
  "prompt": "A woman stands still amid a busy neon-lit street at night. The camera slowly dollies in toward her face as people blur past, their motion emphasizing her calm presence. City lights flicker and reflections shift across her denim jacket."
};

fetch(url, {
  method: "POST",
  headers: headers,
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error("Error:", error));
curl -X POST "https://gateway.pixazo.ai/ltx-2-video-api-581/v1/ltx-2-video-api-request" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  --data-raw '{
    "image_url": "https://example.com/example_inputs/ltxv-2-i2v-input.jpg",
    "prompt": "A woman stands still amid a busy neon-lit street at night. The camera slowly dollies in toward her face as people blur past, their motion emphasizing her calm presence. City lights flicker and reflections shift across her denim jacket."
  }'

Output

{
  "request_id": "ltx-2-video-api-581_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ltx-2-video-api-581_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your submit request to receive a POST callback when the job completes — no polling required.

Using curl? These are HTTP request headers — pass each with -H, e.g. -H "X-Webhook-URL: https://your-server.com/webhook/callback". Do not paste them as bare lines, and end every line of a multi-line command with \.

Webhook Headers

HeaderRequiredDefaultDescription
X-Webhook-URLYes (to enable)HTTPS endpoint on your server that will receive the POST callback. Must respond 2xx within a few seconds (process async if needed).
X-Webhook-ModeNoterminalterminal — fires once at the final status (COMPLETED/FAILED/ERROR). sync — fires on every poll cycle plus the terminal event, and caps the queue’s polling delay at 15s for tighter progress updates.

Example: enable webhook

X-Webhook-URL: https://your-server.com/webhook/callback
X-Webhook-Mode: terminal

Callback Payload

Your endpoint receives a POST application/json with the same shape as the GET /v2/requests/status/{request_id} response. Example terminal callback (mode terminal):

{
  "request_id": "ltx-2-video-api-581_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "ltx-2-video-api-581",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/ltx-2-video-api-581_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/output.mp4"
    ],
    "media_type": "video/mp4"
  },
  "created_at": "2026-05-22T13:17:32.110Z",
  "updated_at": "2026-05-22 13:19:23",
  "completed_at": "2026-05-22 13:19:23"
}

Failure callback shape

{
  "request_id": "ltx-2-video-api-581_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "ltx-2-video-api-581",
  "error": "Description of the error",
  "output": null,
  "created_at": "...",
  "updated_at": "...",
  "completed_at": "..."
}

Delivery semantics

  • terminal mode (default) — exactly one POST when the request reaches a terminal status. No callback during PROCESSING.
  • sync modePOST on every status poll (with delay capped at ~15s) plus a final POST at terminal status. Use when you want progress updates.
  • Idempotency — use request_id as your idempotency key. Network retries can deliver the same callback more than once; your handler must tolerate duplicates.
  • Response — respond 200 OK within a few seconds. The queue does not block on slow handlers, but persistent failures may stop further deliveries.
  • HTTPS required — plain http:// URLs are rejected.

Request Parameters - LTX-2 Video API generate request

ParameterRequiredTypeDefaultAllowed values / rangeDescription
image_urlYesstringPublicly accessible URL to the input image (JPEG/PNG). Must be reachable by the service.
promptYesstringDetailed textual description of the desired motion, camera movement, and visual context for the generated video.
durationNointeger6Duration of the generated video in seconds. Accepted values: 6, 8, 10.
resolutionNostring1080pOutput video resolution. Accepted values: "720p", "1080p", "2160p".
fpsNointeger25Frames per second of the output video. Accepted values: 24, 25, 30.
generate_audioNobooleanfalsetrue, falseWhether to generate synchronized audio that matches the video motion and mood.

Minimum Request

{
  "image_url": "https://example.com/example_inputs/ltxv-2-i2v-input.jpg",
  "prompt": "A woman stands still amid a busy neon-lit street at night. The camera slowly dollies in toward her face as people blur past, their motion emphasizing her calm presence. City lights flicker and reflections shift across her denim jacket."
}

Full Request (all options)

{
  "image_url": "https://example.com/example_inputs/ltxv-2-i2v-input.jpg",
  "prompt": "A woman stands still amid a busy neon-lit street at night. The camera slowly dollies in toward her face as people blur past, their motion emphasizing her calm presence. City lights flicker and reflections shift across her denim jacket.",
  "duration": 6,
  "resolution": "1080p",
  "fps": 25,
  "generate_audio": true
}

Response

{
  "request_id": "ltx-2-video-api-581_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ltx-2-video-api-581_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Type application/json
Cache-Control no-cache
Ocp-Apim-Subscription-Key Your API subscription key

Response Handling

Common status codes for LTX-2 Video API generate request.

Code Meaning
202 Accepted — Request queued
Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
Too Many Requests
500 Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'ltx-2-video-api-581' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "ltx-2-video-api-581_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "ltx-2-video-api-581",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/ltx-2-video-api-581_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "ltx-2-video-api-581_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "ltx-2-video-api-581",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/ltx-2-video-api-581_019dxxxx-xxxx/output.ext"
    ],
    "media_type": "application/octet-stream"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstring|nullWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

LTX v2 API Pricing

ResolutionDurationPrice (USD)
1080p1s$0.06 per second
1440p1s$0.12 per second
2160p1s$0.24 per second