# google/veo-3.1/image-to-video > Google Veo 3.1 is an Image-to-Video model that generates high-quality videos from images, featuring native 1080P output for greater creative flexibility and enhanced detail. It offers best performance and affordable pricing with no coldstarts. ## Overview - **Endpoint**: `https://api.shortapi.ai/api/v1/job/create` - **Model ID**: `google/veo-3.1/image-to-video` - **Category**: image-to-video - **Kind**: inference ## Pricing The pricing for this model is structured as follows: in Quality mode, the rate for 720p and 1080p is $0.16/sec without audio and $0.32/sec with audio, while 4K is priced at $0.32/sec without audio and $0.48/sec with audio; meanwhile, in Fast mode, 720p and 1080p cost $0.08/sec without audio and $0.12/sec with audio, whereas 4K is $0.24/sec without audio and $0.28/sec with audio. 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: `fast` - Options: "quality", "fast" - **`prompt`** (`string`, _required_): Positive text prompt - Examples: "An action shot of a black lab swimming..." - **`image`** (`string`, _required_): Reference Image - **`duration`** (`string`, _optional_): Video Length, unit: s (seconds) - Default: `8` - Options: "4", "6", "8" - **`aspect_ratio`** (`string`, _optional_): The aspect ratio of the generated video frame (width:height) - Default: `16:9` - Options: "auto", "16:9", "9:16" - **`resolution`** (`string`, _optional_): Output video resolution - Default: `720p` - Options: "720p", "1080p", "4k" - **`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": "google/veo-3.1/image-to-video", "args": { "mode": "quality", "prompt": "The beef sizzled. The chef, with precise and elegant movements, cut the beef with a knife and fork, making two or three clean cuts. With each cut, a gentle sizzling sound was heard, accompanied by realistic ASMR sounds of slicing meat. As the knife cut deeper, the tender and juicy texture of the meat was revealed, and a few drops of juice slowly dripped down the surface. The camera remained focused on the center of the frame.", "image": "https://file.shortapi.ai/assets/examples/google/veo-3.1/image-to-video-image.webp" }, "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": "google/veo-3.1/image-to-video", "args": { "mode": "quality", "prompt": "The beef sizzled. The chef, with precise and elegant movements, cut the beef with a knife and fork, making two or three clean cuts. With each cut, a gentle sizzling sound was heard, accompanied by realistic ASMR sounds of slicing meat. As the knife cut deeper, the tender and juicy texture of the meat was revealed, and a few drops of juice slowly dripped down the surface. The camera remained focused on the center of the frame.", "image": "https://file.shortapi.ai/assets/examples/google/veo-3.1/image-to-video-image.webp" }, "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": "google/veo-3.1/image-to-video", "args": { "mode": "quality", "prompt": "The beef sizzled. The chef, with precise and elegant movements, cut the beef with a knife and fork, making two or three clean cuts. With each cut, a gentle sizzling sound was heard, accompanied by realistic ASMR sounds of slicing meat. As the knife cut deeper, the tender and juicy texture of the meat was revealed, and a few drops of juice slowly dripped down the surface. The camera remained focused on the center of the frame.", "image": "https://file.shortapi.ai/assets/examples/google/veo-3.1/image-to-video-image.webp" }, "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()) ```