Use this file to discover all available pages before exploring further.
Try Seedance 2.0 - Text to Video in the Workbench
Run this model interactively, tune parameters, and compare outputs.
Model ID:bytedance-seedance-2-0-text-to-videoByteDance Seedance 2 text-to-video generates video from a text prompt. It supports 480p or 720p output, durations from 4–15 seconds or automatic length from the prompt, multiple aspect ratios (including auto), and optional synchronized audio (effects, ambience, and lip-synced speech).
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
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": "bytedance-seedance-2-0-text-to-video", "prompt": "An octopus finds a football in the ocean and excitedly calls its octopus friends to come and play. Cut scene to an octopus football game under the sea."}'
curl -X POST https://hub.oxen.ai/api/ai/videos/generate \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "bytedance-seedance-2-0-text-to-video", "prompt": "An octopus finds a football in the ocean and excitedly calls its octopus friends to come and play. Cut scene to an octopus football game under the sea.", "resolution": "720p", "duration": "auto", "aspect_ratio": "auto", "generate_audio": true}'
# 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": "bytedance-seedance-2-0-text-to-video", "prompt": "An octopus finds a football in the ocean and excitedly calls its octopus friends to come and play. Cut scene to an octopus football game under the sea."}' | 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 5done# 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": "bytedance-seedance-2-0-text-to-video", "prompt": "An octopus finds a football in the ocean and excitedly calls its octopus friends to come and play. Cut scene to an octopus football game under the sea.", "resolution": "720p", "duration": "auto", "aspect_ratio": "auto", "generate_audio": true}' | 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 5done# 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": "bytedance-seedance-2-0-text-to-video", "prompt": "An octopus finds a football in the ocean and excitedly calls its octopus friends to come and play. Cut scene to an octopus football game under the sea."}' | 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": "bytedance-seedance-2-0-text-to-video", "prompt": "An octopus finds a football in the ocean and excitedly calls its octopus friends to come and play. Cut scene to an octopus football game under the sea.", "resolution": "720p", "duration": "auto", "aspect_ratio": "auto", "generate_audio": true}' | 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 .
"An octopus finds a football in the ocean and excitedly calls its octopus friends to come and play. Cut scene to an octopus football game under the sea."
Video resolution - 480p for faster generation, 720p for balance. One of: 480p, 720p.
duration
string
"auto"
Duration of the video in seconds. Supports 4 to 15 seconds, or auto to let the model decide based on the prompt. One of: auto, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.
aspect_ratio
string
"auto"
The aspect ratio of the generated video. Use 16:9 for landscape, 9:16 for portrait/vertical, 1:1 for square, 21:9 for ultrawide cinematic, or auto to let the model decide. One of: auto, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16.
generate_audio
boolean
true
Whether to generate synchronized audio for the video, including sound effects, ambient sounds, and lip-synced speech. The cost of video generation is the same regardless of whether audio is generated or not.
seed
integer
—
Random seed for reproducibility. Note that results may still vary slightly even with the same seed.
⌘I
Assistant
Responses are generated using AI and may contain mistakes.