LTX 2.3 Outpaint
LTX · Video · Video → Video
Expand a video past its original frame — the source stays put inside a wider canvas and the surrounding region is generated to match.
ltx-v2.3-outpaintWorkflow: ltx-2.3-quality/outpaintAuthentication
Send your Picsart API key as a bearer token on every request.
Authorization: Bearer <PICSART_API_KEY>Make a request
One endpoint serves every model: POST to /workflows/v1/models/execute with the model id and its input in the body. The nesting is deliberate — the outer paramsis the envelope every workflow takes, and the inner one is this model's own input. Those inner names are the same unified ones the SDK takes, so a call translates one-to-one between the two — no per-vendor naming to learn.
curl -X POST 'https://api.green-salad-4efd.toolsminati.workers.dev/workflows/v1/models/execute' \
-H 'Authorization: Bearer $PICSART_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"params": {
"model": "ltx-v2.3-outpaint",
"params": {
"prompt": "A serene mountain lake at golden hour, ultra detailed",
"videoUrl": "https://cdn.example.com/input.mp4",
"aspectRatio": "21:9",
"resolution": "720p"
}
}
}'Async (submit & poll)
This model can run longer than the sync limit (~20s), so send it to /workflows/v1/models/submit, which returns a task id, and poll /workflows/v1/models/{taskId}/result until response.status is COMPLETED or FAILED.
# 1. Submit the job
curl -X POST 'https://api.green-salad-4efd.toolsminati.workers.dev/workflows/v1/models/submit' \
-H 'Authorization: Bearer $PICSART_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"params": {
"model": "ltx-v2.3-outpaint",
"params": {
"prompt": "A serene mountain lake at golden hour, ultra detailed",
"videoUrl": "https://cdn.example.com/input.mp4",
"aspectRatio": "21:9",
"resolution": "720p"
}
}
}'
# → { "status": "success", "response": { "id": "task_abc123" } }
# 2. Poll until response.status is COMPLETED
curl 'https://api.green-salad-4efd.toolsminati.workers.dev/workflows/v1/models/task_abc123/result' \
-H 'Authorization: Bearer $PICSART_API_KEY'{
"status": "success",
"response": {
"id": "task_abc123",
"status": "COMPLETED",
"result": {
"url": "https://cdn.green-salad-4efd.toolsminati.workers.dev/…/result",
"items": [
{
"url": "https://cdn.green-salad-4efd.toolsminati.workers.dev/…/result"
}
],
"model": "ltx-v2.3-outpaint"
},
"usage": {
"credits": 1
}
}
}Parameters
17 parameters, sent inside the inner paramsobject. Identical to the SDK's — one parameter set, whichever transport you use.
| Parameter | Type | Required | Default | Details |
|---|---|---|---|---|
promptPrompt | text | yes | — | max 5000 chars |
videoUrlSource Video | file (video) | yes | — | — |
negativePromptNegative Prompt | text | no | — | — |
aspectRatio | enum | no | 21:9 | 21:9, 16:9, 4:3, 1:1, 3:4, 9:16, 9:21 |
resolution | enum | no | 720p | 480p, 720p, 1080p |
numFramesFrames | range | no | 121 | 9–481 |
fpsFPS | range | no | 24 | 1–60 |
sourceScaleSource Scale | range | no | 1 | 0.25–1 (step 0.05) |
videoStrengthSource Strength | range | no | 1 | 0–1 (step 0.05) |
cfgScaleCFG Scale | range | no | 1 | 1–20 |
numInferenceStepsInference Steps | range | no | 15 | 8–30 |
videoQualityVideo Quality | enum | no | high | low, medium, high, maximum |
videoWriteModeWrite Mode | enum | no | balanced | fast, balanced, small |
enhancePrompt | boolean | no | true | — |
generateAudio | boolean | no | true | — |
enableSafetyCheckerSafety Checker | boolean | no | true | — |
seedSeed | range | no | — | 0–2147483647 (step 1) |
Response
The body arrives in the gateway's status envelope, so the output is at response.result — alongside the task id, its status and the credits charged. Asset models return url plus an items array; text models return text instead.
{
"status": "success",
"response": {
"id": "task_abc123",
"status": "COMPLETED",
"result": {
"url": "https://cdn.green-salad-4efd.toolsminati.workers.dev/…/result",
"items": [
{
"url": "https://cdn.green-salad-4efd.toolsminati.workers.dev/…/result"
}
],
"model": "ltx-v2.3-outpaint"
},
"usage": {
"credits": 1
}
}
}