# vidu/vidu-q3/start-end-to-video > Vidu Q3 start-end-to-video generates smooth video transitions between the start and end images with faster generation speeds. ## Overview - **Endpoint**: `https://api.shortapi.ai/api/v1/job/create` - **Model ID**: `vidu/vidu-q3/start-end-to-video` - **Category**: image-to-video - **Kind**: inference ## Pricing The pricing for this model is as follows per second: in Pro mode, the rate is $0.056 for 540p, $0.12 for 720p, and $0.128 for 1080p; in Turbo mode, the rate is $0.032 for 540p, $0.048 for 720p, and $0.064 for 1080p. 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`, _required_): Video generation mode - Default: `pro` - Options: "pro", "turbo" - **`prompt`** (`string`, _required_): Text prompt - Examples: "An action shot of a black lab swimming..." - **`duration`** (`string`, _optional_): Video Length, unit: s (seconds) - Default: `5` - Range: `1` to `16` - **`image`** (`string`, _required_): Reference Image - **`image_tail`** (`string`, _required_): Reference Image - End frame control - **`resolution`** (`string`, _optional_): Output video resolution - Default: `720p` - Options: "540p", "720p", "1080p" - **`generate_audio`** (`bool`, _optional_): Whether to generate original audio for the video - Default: `false` - Options: "true", "false" ### 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": { "images": [{ "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": "vidu/vidu-q3/start-end-to-video", "args": { "mode": "pro", "prompt": "Cinematic time-lapse transition. The thick layer of frost and hanging icicles on the lighthouse gradually melt and drip away, revealing the weathered stone texture underneath. Simultaneously, the white snow on the foreground wall retreats and vanishes, replaced by rapidly growing lush green grass and blooming wildflowers. The dark, chaotic storm clouds dissipate to reveal a clear, bright blue sky with fluffy white clouds. The rough, grey icy waves smooth out into a sparkling, turquoise summer ocean.", "image": "https://file.shortapi.ai/assets/examples/vidu/vidu-q3/start-end-to-image.jpg", "image_tail": "https://file.shortapi.ai/assets/examples/vidu/vidu-q3/start-end-to-image_tail.jpg" }, "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": "vidu/vidu-q3/start-end-to-video", "args": { "mode": "pro", "prompt": "Cinematic time-lapse transition. The thick layer of frost and hanging icicles on the lighthouse gradually melt and drip away, revealing the weathered stone texture underneath. Simultaneously, the white snow on the foreground wall retreats and vanishes, replaced by rapidly growing lush green grass and blooming wildflowers. The dark, chaotic storm clouds dissipate to reveal a clear, bright blue sky with fluffy white clouds. The rough, grey icy waves smooth out into a sparkling, turquoise summer ocean.", "image": "https://file.shortapi.ai/assets/examples/vidu/vidu-q3/start-end-to-image.jpg", "image_tail": "https://file.shortapi.ai/assets/examples/vidu/vidu-q3/start-end-to-image_tail.jpg" }, "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": "vidu/vidu-q3/start-end-to-video", "args": { "mode": "pro", "prompt": "Cinematic time-lapse transition. The thick layer of frost and hanging icicles on the lighthouse gradually melt and drip away, revealing the weathered stone texture underneath. Simultaneously, the white snow on the foreground wall retreats and vanishes, replaced by rapidly growing lush green grass and blooming wildflowers. The dark, chaotic storm clouds dissipate to reveal a clear, bright blue sky with fluffy white clouds. The rough, grey icy waves smooth out into a sparkling, turquoise summer ocean.", "image": "https://file.shortapi.ai/assets/examples/vidu/vidu-q3/start-end-to-image.jpg", "image_tail": "https://file.shortapi.ai/assets/examples/vidu/vidu-q3/start-end-to-image_tail.jpg" }, "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()) ```