Use this file to discover all available pages before exploring further.
Try WAN 2.7 - Image to Video in the Workbench
Run this model interactively, tune parameters, and compare outputs.
Model ID:wan-v2-7-image-to-videoWAN 2.7 image-to-video animates a static image into video with enhanced motion smoothness, superior scene fidelity, and greater visual coherence over previous versions. It supports first-frame-to-video, first+last-frame-to-video, and video continuation scenarios. Output up to 1080p resolution with durations from 2-15 seconds, multiple aspect ratios, and optional driving audio.
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.
Minimal
Basic parameters
All parameters
curl -X POST https://hub.oxen.ai/api/ai/videos/generate \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "wan-v2-7-image-to-video", "prompt": "The camera slowly zooms in while the subject comes to life, cinematic lighting.", "input_image": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/ox_zoom_out_1926_1076.png"}'
curl -X POST https://hub.oxen.ai/api/ai/videos/generate \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "wan-v2-7-image-to-video", "prompt": "The camera slowly zooms in while the subject comes to life, cinematic lighting.", "input_image": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/ox_zoom_out_1926_1076.png", "end_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png"}'
curl -X POST https://hub.oxen.ai/api/ai/videos/generate \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "wan-v2-7-image-to-video", "prompt": "The camera slowly zooms in while the subject comes to life, cinematic lighting.", "input_image": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/ox_zoom_out_1926_1076.png", "end_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "resolution": "1080p", "duration": 5}'
# 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": "wan-v2-7-image-to-video", "prompt": "The camera slowly zooms in while the subject comes to life, cinematic lighting.", "input_image": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/ox_zoom_out_1926_1076.png"}' | jq -r '.generations[0].generation_id')# Poll the single generation until it 404s (terminal state).while curl -s -o /dev/null -w "%{http_code}" \ -H "Authorization: Bearer $OXEN_API_KEY" \ "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | grep -q "^200$"; do sleep 5doneecho "Done. See the 'Async with SSE' tab to receive the result URL."
# 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": "wan-v2-7-image-to-video", "prompt": "The camera slowly zooms in while the subject comes to life, cinematic lighting.", "input_image": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/ox_zoom_out_1926_1076.png", "end_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png"}' | jq -r '.generations[0].generation_id')# Poll the single generation until it 404s (terminal state).while curl -s -o /dev/null -w "%{http_code}" \ -H "Authorization: Bearer $OXEN_API_KEY" \ "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | grep -q "^200$"; do sleep 5doneecho "Done. See the 'Async with SSE' tab to receive the result URL."
# 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": "wan-v2-7-image-to-video", "prompt": "The camera slowly zooms in while the subject comes to life, cinematic lighting.", "input_image": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/ox_zoom_out_1926_1076.png", "end_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "resolution": "1080p", "duration": 5}' | jq -r '.generations[0].generation_id')# Poll the single generation until it 404s (terminal state).while curl -s -o /dev/null -w "%{http_code}" \ -H "Authorization: Bearer $OXEN_API_KEY" \ "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | grep -q "^200$"; do sleep 5doneecho "Done. See the 'Async with SSE' tab to receive the result URL."