# bytedance/seedance-2.0/omni-reference > Shatter the physical boundaries of traditional video production. bytedance/seedance-2.0/omni-reference features an exceptionally acute "omni-reference" analytical capability, deeply deconstructing the cinematic audiovisual language of any reference footage. It flawlessly replicates complex camera paths and character blocking, while precisely extracting and reconstructing highly dynamic transition rhythms. Whether executing profound visual style reshaping or generating perfectly synced audiovisual sequences, it maintains absolute visual consistency and strict adherence to physical laws across multiple shots. ## Overview - **Endpoint**: `https://api.shortapi.ai/api/v1/job/create` - **Model ID**: `bytedance/seedance-2.0/omni-reference` - **Category**: video-to-video - **Kind**: inference ## Pricing Std: $0.168 per second, Fast: $0.14 per second, Total Cost = Unit Price × (Total Input Video Duration + 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: - **`mode`** (`string`, _optional_): Video generation mode - Default: `std` - Options: "std", "fast" - **`prompt`** (`string`, _required_): Text prompt - Examples: "An action shot of a black lab swimming..." - **`duration`** (`int`, _optional_): Video duration - Default: `5` - Range: `4` to `15` - **`aspect_ratio`** (`string`, _optional_): The aspect ratio of the generated video frame (width:height) - Default: `16:9` - Options: "21:9", "16:9", "9:16", "4:3", "1:1", "3:4" - **`video_url`** (`string`, _required_): List of reference video URLs. Used as references for actions or styles. A maximum of 1 video URL is currently supported. The total number of video_url, image_urls, and audio_urls must be ≤ 12 - **`image_urls`** (`list`, _optional_): Reference image URLs. The total number of video_url, image_urls, and audio_urls must be ≤ 12 - **`audio_urls`** (`list`, _optional_): Audio reference URL. Supported audio formats are MP3 and WAV, with a maximum duration of 15 seconds. Audio-only use is not allowed, and at least one image or video must be included. The total number of video_urls, image_urls, and audio_urls must be ≤ 12 ### 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.0/omni-reference", "args": { "prompt": "Replace the puppy in @Video 1 with the panda from @Image 1", "video_url": "https://file.shortapi.ai/assets/examples/bytedance/seedance-2.0/video-edit-video.mp4" }, "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.0/omni-reference", "args": { "prompt": "Replace the puppy in @Video 1 with the panda from @Image 1", "video_url": "https://file.shortapi.ai/assets/examples/bytedance/seedance-2.0/video-edit-video.mp4" }, "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.0/omni-reference", "args": { "prompt": "Replace the puppy in @Video 1 with the panda from @Image 1", "video_url": "https://file.shortapi.ai/assets/examples/bytedance/seedance-2.0/video-edit-video.mp4" }, "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()) ```