# bytedance/seedance-2.5/omni-reference > Generate a video from text with reference images, one reference video, and reference audio. Seedance 2.5 preserves key subjects, motion, style, and audio cues across multimodal references. ## Overview - **Endpoint**: `https://api.shortapi.ai/api/v1/job/create` - **Model ID**: `bytedance/seedance-2.5/omni-reference` - **Category**: video-to-video - **Kind**: inference ## Pricing Without video input: 480p $0.16/s, 720p $0.36/s. With video input: 480p $0.112/s, 720p $0.252/s. When video input is provided, Total Cost = Unit Price × (Input Video Duration + Output Video Duration); otherwise, Total Cost = Unit Price × Output Video Duration. For more details, please check our pricing page. ## API Information This model can be used via our HTTP API or more conveniently via our client libraries. See the input and output schema below, as well as the usage examples. ### Input Schema The API accepts the following input parameters: - **`prompt`** (`string`, _required_): Text prompt used to describe the expected video. Do not use video editing or video extension instructions. - Examples: "An action shot of a black lab swimming..." - **`image_urls`** (`list`, _optional_): Reference image URLs. Up to 30 images. The total number of images, the video, and audio files must not exceed 50. - **`video_url`** (`string`, _optional_): One reference video URL. The duration must be between 2 and 30 seconds. - **`audio_urls`** (`list`, _optional_): Reference audio URLs. Up to 10 files; each file and their total duration must be between 2 and 30 seconds. - **`duration`** (`int`, _optional_): Output video duration in seconds. - Default: `5` - Range: `4` to `30` - **`resolution`** (`string`, _optional_): Output video resolution. - Default: `720p` - Options: "480p", "720p" - **`aspect_ratio`** (`string`, _optional_): The aspect ratio of the generated video frame. - Default: `adaptive` - Options: "adaptive", "21:9", "16:9", "9:16", "4:3", "1:1", "3:4" ### Output Schema The API returns a JSON response with a `job_id` for tracking the request status. **Create Job Response:** ```json { "code": 0, "data": { "amount": "0.02", "job_id": "" } } ``` **Query Job Result (when status is 2, meaning succeeded):** ```json { "code": 0, "data": { "status": 2, "result": { "videos": [{ "url": "https://..." }] } } } ``` ## Use Example To use this model, make an HTTP POST request to the API endpoint, then poll for results using the returned `job_id`. ### Bash (cURL) ```bash # Step 1: Create a job response=$(curl --request POST \ --url https://api.shortapi.ai/api/v1/job/create \ --header "Authorization: Bearer $SHORTAPI_KEY" \ --header "Content-Type: application/json" \ --data '{ "model": "bytedance/seedance-2.5/omni-reference", "args": { "prompt": "Render video 1 as a white model, without background music, generating only ambient and action sounds.Rendering requirements: The background is a dark blue and purple nighttime cyberpunk city with dense skyscrapers, giant holographic billboards and neon lights between the buildings, and several aircraft traversing the sky, flashing faint lights and emitting soft mechanical sounds; the character is a raccoon dressed in black night clothes, its silhouette moving cautiously; the character is moving on the rooftop of a building among the skyscrapers." }, "callback_url": "CALLBACK_URL" }') JOB_ID=$(echo "$response" | grep -o '"job_id": *"[^"]*"' | sed 's/"job_id": *//; s/"//g') # Step 2: Poll for results curl --request GET \ --url "https://api.shortapi.ai/api/v1/job/query?id=$JOB_ID" \ --header "Authorization: Bearer $SHORTAPI_KEY" ``` ### JavaScript (Fetch API) ```javascript // Step 1: Create a job const response = await fetch(`https://api.shortapi.ai/api/v1/job/create`, { method: "POST", headers: { "Authorization": `Bearer ${SHORTAPI_KEY}`, "Content-Type": "application/json" }, body: JSON.stringify({ "model": "bytedance/seedance-2.5/omni-reference", "args": { "prompt": "Render video 1 as a white model, without background music, generating only ambient and action sounds.Rendering requirements: The background is a dark blue and purple nighttime cyberpunk city with dense skyscrapers, giant holographic billboards and neon lights between the buildings, and several aircraft traversing the sky, flashing faint lights and emitting soft mechanical sounds; the character is a raccoon dressed in black night clothes, its silhouette moving cautiously; the character is moving on the rooftop of a building among the skyscrapers." }, "callback_url": "CALLBACK_URL" }) }); const data = await response.json(); const JOB_ID = data.job_id; // Step 2: Poll for results const result = await fetch(`https://api.shortapi.ai/api/v1/job/query?id=${JOB_ID}`, { method: "GET", headers: { "Authorization": `Bearer ${SHORTAPI_KEY}` } }); const resultData = await result.json(); console.log(resultData); ``` ### Python (Requests) ```python import requests # Step 1: Create a job url = "https://api.shortapi.ai/api/v1/job/create" payload = { "model": "bytedance/seedance-2.5/omni-reference", "args": { "prompt": "Render video 1 as a white model, without background music, generating only ambient and action sounds.Rendering requirements: The background is a dark blue and purple nighttime cyberpunk city with dense skyscrapers, giant holographic billboards and neon lights between the buildings, and several aircraft traversing the sky, flashing faint lights and emitting soft mechanical sounds; the character is a raccoon dressed in black night clothes, its silhouette moving cautiously; the character is moving on the rooftop of a building among the skyscrapers." }, "callback_url": "CALLBACK_URL" } headers = { "Authorization": f"Bearer {SHORTAPI_KEY}", "Content-Type": "application/json" } response = requests.post(url, headers=headers, json=payload) data = response.json() JOB_ID = data.get("job_id") # Step 2: Poll for results result_url = f"https://api.shortapi.ai/api/v1/job/query?id={JOB_ID}" result = requests.get(result_url, headers={"Authorization": f"Bearer {SHORTAPI_KEY}"}) print(result.json()) ```