Documentation Index Fetch the complete documentation index at: https://docs.oxen.ai/llms.txt
Use this file to discover all available pages before exploring further.
Try LTX-2 Retake in the Workbench Run this model interactively, tune parameters, and compare outputs.
Model ID: lightricks-ltx-2-retake
LTX-2 Retake is a Multimodal LLM designed for targeted video editing. It excels in regenerating specific segments of existing videos (2-16 seconds) while preserving motion continuity, lighting, timing, and surrounding footage, enabling efficient revisions without full clip regeneration.
Some other noteworthy features of LTX-2 Retake include replace video only, replace audio only (e.g., dialogue or ambience), or replace both with natural language prompts; support for up to 20-second input clips at 1080p output; and seamless integration into iterative production workflows.
Example request
Use the Workbench as a request builder: configure parameters for this model in the UI, then open the API tab to copy the exact cURL or Python call.
Sync
Async
Async with SSE
This blocks until the video is ready (typically 5-15 minutes). Prefer Async or Async with SSE for anything beyond quick experimentation. See the video generation reference for more details. curl -X POST https://hub.oxen.ai/api/ai/videos/generate \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OXEN_API_KEY " \
-d '{
"model": "lightricks-ltx-2-retake",
"prompt": "<prompt>",
"input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4"
}'
curl -X POST https://hub.oxen.ai/api/ai/videos/generate \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OXEN_API_KEY " \
-d '{
"model": "lightricks-ltx-2-retake",
"prompt": "<prompt>",
"input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4",
"start_time": 0,
"duration": 6,
"mode": "replace_video"
}'
See the async queue reference for more details. # Enqueue, capture the generation id.
GEN_ID = $( curl -s -X POST https://hub.oxen.ai/api/ai/queue \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OXEN_API_KEY " \
-d '{
"model": "lightricks-ltx-2-retake",
"prompt": "<prompt>",
"input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4"
}' | jq -r '.generations[0].generation_id' )
# Poll until the generation reaches a terminal status.
while true ; do
STATUS = $( curl -s -H "Authorization: Bearer $OXEN_API_KEY " \
"https://hub.oxen.ai/api/ai/queue/ $GEN_ID " | jq -r '.status' )
echo "Status: $STATUS "
case $STATUS in succeeded | failed | cancelled ) break ;; esac
sleep 5
done
# Print the result.
curl -s -H "Authorization: Bearer $OXEN_API_KEY " \
"https://hub.oxen.ai/api/ai/queue/ $GEN_ID " | jq .
# Enqueue, capture the generation id.
GEN_ID = $( curl -s -X POST https://hub.oxen.ai/api/ai/queue \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OXEN_API_KEY " \
-d '{
"model": "lightricks-ltx-2-retake",
"prompt": "<prompt>",
"input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4",
"start_time": 0,
"duration": 6,
"mode": "replace_video"
}' | jq -r '.generations[0].generation_id' )
# Poll until the generation reaches a terminal status.
while true ; do
STATUS = $( curl -s -H "Authorization: Bearer $OXEN_API_KEY " \
"https://hub.oxen.ai/api/ai/queue/ $GEN_ID " | jq -r '.status' )
echo "Status: $STATUS "
case $STATUS in succeeded | failed | cancelled ) break ;; esac
sleep 5
done
# Print the result.
curl -s -H "Authorization: Bearer $OXEN_API_KEY " \
"https://hub.oxen.ai/api/ai/queue/ $GEN_ID " | jq .
See the async queue reference for more details. # Enqueue, capture the generation id.
GEN_ID = $( curl -s -X POST https://hub.oxen.ai/api/ai/queue \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OXEN_API_KEY " \
-d '{
"model": "lightricks-ltx-2-retake",
"prompt": "<prompt>",
"input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4"
}' | jq -r '.generations[0].generation_id' )
# Stream the SSE channel, grab the data line that follows a
# media_generation_completed event for our id, and pretty-print it.
curl -sN -H "Authorization: Bearer $OXEN_API_KEY " https://hub.oxen.ai/api/events \
| awk -v id=" $GEN_ID " '
/^event: media_generation_completed$/ { expect=1; next }
/^data: / && expect {
payload = substr($0, 7)
if (index(payload, "\"generation_id\":\"" id "\"")) { print payload; exit }
expect = 0
}
' | jq .
# Enqueue, capture the generation id.
GEN_ID = $( curl -s -X POST https://hub.oxen.ai/api/ai/queue \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OXEN_API_KEY " \
-d '{
"model": "lightricks-ltx-2-retake",
"prompt": "<prompt>",
"input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4",
"start_time": 0,
"duration": 6,
"mode": "replace_video"
}' | jq -r '.generations[0].generation_id' )
# Stream the SSE channel, grab the data line that follows a
# media_generation_completed event for our id, and pretty-print it.
curl -sN -H "Authorization: Bearer $OXEN_API_KEY " https://hub.oxen.ai/api/events \
| awk -v id=" $GEN_ID " '
/^event: media_generation_completed$/ { expect=1; next }
/^data: / && expect {
payload = substr($0, 7)
if (index(payload, "\"generation_id\":\"" id "\"")) { print payload; exit }
expect = 0
}
' | jq .
Fetch model details
The models endpoint returns the full model object, including its json_request_schema.
curl -H "Authorization: Bearer $OXEN_API_KEY " https://hub.oxen.ai/api/ai/models/lightricks-ltx-2-retake
Request parameters
Required parameters
Field Type Default Description promptstring— Text prompt describing the edit input_videostring— Input video to edit, must be 1080p. Format: uri.
Optional parameters
Field Type Default Description start_timenumber0Start time of the edit in seconds Range: 0 – +∞. durationnumber6Duration of the edited section in seconds Range: 2 – 16. modestring"replace_video"Mode of operation One of: replace_audio, replace_video, replace_audio_and_video.