Veo 3.1 Image to Video
google/veo3.1/image-to-videoVeo 3.1 by Google - animate still images into dynamic videos with AI. Transform photos into cinematic clips with natural motion, camera movement, and optional audio generation.
- Base price
- $3.20USD / run
- Execution
- async
- Model type
- video
- Input fields
- 8
Try the model
Playground
PNG, JPEG, WebP, or GIF · 20 MiB maximum
Your output will appear here
Complete the inputs, then click Run.
Model card
Specifications
Pricing
- Base price
- $3.20 / run
Context & modalities
- Input
- Schema-defined
- Output
- video
Capabilities
- Chat
- Not supported
- Vision
- Not supported
- Reasoning
- Not supported
- Structured output
- Not supported
- Function calling
- Not supported
- Audio input
- Not supported
Access
- Provider
- Model ID
- google/veo3.1/image-to-video
- Execution
- async
- Base URL
- https://api.sandbase.ai
- API
- Unified Run API
- Endpoint
- /v1/run
Human preference
Arena
Elo ratings from blind side-by-side votes, compared with other image and video models.
Rankings sourced from Artificial Analysis Arena
- Leaderboard
- Image to Video
- Rank
- #17 of 29
- Elo
- 955 ±19
- Gap to #1
- −175
Image-to-video arena (silent): people pick the better of two clips animated from the same image, without seeing the model names; audio is not judged.
- #12Kling 3.0 Omni 1080p (Pro)1020±19
- #13HappyHorse-1.01014±19
- #14Grok Imagine Video 1.5 Lite1003±19
- #15Kling 3.0 1080p (Pro)1000
- #16PixVerse V6966±19
- #17Veo 3.1955±19
- #18Veo 3.1 Fast938±19
- #19Vidu Q3 Turbo928±19
- #20Veo 3.1 Lite924±19
- #21LTX-2.5 Fast915±20
API README
Veo 3.1 Image to Video
Veo 3.1 image-to-video, Google's highest-quality video model. image becomes the first frame and the prompt directs motion, camera, and sound for a 4–8 second clip.
Fields
| Field | Type | Default | Notes |
|---|---|---|---|
prompt | string, required | — | Up to 20,000 characters. |
image | image URL, required | — | First frame. JPEG, PNG, or WebP URL. |
duration | 4 / 6 / 8 | 8 | Output length in seconds. |
resolution | 720p / 1080p / 4k | 720p | Sets the per-second rate. |
aspect_ratio | 16:9 / 9:16 | — | Output frame shape. |
generate_audio | boolean | true | Native dialogue, music, and effects; turning it off lowers the rate. |
negative_prompt | string | — | What to avoid. |
seed | integer 0–4294967295 | random | Fix it to compare prompt changes. |
Billing
You pay for output seconds, Google's list price. With audio: $0.40 at 720p, $0.40 at 1080p, $0.60 at 4k. Without audio: $0.20 / $0.20 / $0.40 respectively.
| Output | 720p | 1080p | 4k |
|---|---|---|---|
| 4s with audio | $1.60 | $1.60 | $2.40 |
| 6s with audio | $2.40 | $2.40 | $3.60 |
| 8s with audio (default) | $3.20 | $3.20 | $4.80 |
| 8s without audio | $1.60 | $1.60 | $3.20 |
Failed runs are not charged.
Prompting
- Describe what moves and what the audio should be, not what is already visible.
- Match
aspect_ratioto the input image.
Limits
- One input image; use first-last-frame-to-video to control the ending.
- Use Veo 3.1 Fast for cheaper drafts.
Also on SandBase
Other Veo 3.1 endpoints: google/veo3.1/text-to-video, google/veo3.1/first-last-frame-to-video, google/veo3.1/reference-to-video, google/veo3.1/video-extend, google/veo3.1/fast/text-to-video, google/veo3.1/lite/text-to-video.
Start building
Send your first request
OpenAI-compatible endpoint with unified authentication and usage tracking.
# The quoted heredoc keeps Unicode and shell metacharacters unchanged.
result=$(curl --fail-with-body --silent \
-X POST "https://api.sandbase.ai/v1/run" \
-H "Authorization: Bearer $SANDBASE_API_KEY" \
-H "Content-Type: application/json" \
--data-binary @- <<'SANDBASE_JSON'
{
"model": "google/veo3.1/image-to-video",
"prompt": "A monkey and polar bear host a casual podcast about AI inference, bringing their unique perspectives from different environments (tropical vs. arctic) to discuss how AI systems make decisions and process information.\nSample Dialogue:\nMonkey (Banana): \"Welcome back to Bananas & Ice! I am Banana\"\nPolar Bear (Ice): \"And I'm Ice!\"",
"duration": 8,
"resolution": "720p",
"generate_audio": true
}
SANDBASE_JSON
)
run_id=$(printf '%s' "$result" | jq -r .id)
for attempt in $(seq 1 120); do
status=$(printf '%s' "$result" | jq -r .status)
case "$status" in completed|failed|timeout) break ;; esac
sleep 2
result=$(curl --fail-with-body --silent \
-H "Authorization: Bearer $SANDBASE_API_KEY" \
"https://api.sandbase.ai/v1/run/$run_id")
done
status=$(printf '%s' "$result" | jq -r .status)
[ "$status" = completed ] || { echo "Generation ended: $status" >&2; exit 1; }
printf '%s\n' "$result"Choose your model
Compare models
| Model | Type | Default price | Released |
|---|---|---|---|
Veo 3.1 Image to VideoThis model Google | Video | $3.20 / run | Oct 8, 2025 |
Google | Video | $1.12 / run | Aug 27, 2026 |
Google | Video | $0.80 / run | Aug 27, 2026 |
Google | Video | $0.80 / run | Aug 27, 2026 |
Google | Video | $0.80 / run | Aug 27, 2026 |
Google | Video | $1.04 / run | Jun 30, 2026 |
Questions
FAQ
How do I call Google Veo 3.1 Image to Video through SandBase?
Create a SandBase API key, then send requests with the model ID "google/veo3.1/image-to-video" to Unified Run API (/v1/run) at https://api.sandbase.ai. The request examples on this page show the exact payload.
Do I need a separate Google account?
No. One SandBase API key and balance gives you access to Google Veo 3.1 Image to Video and the other models in the catalog; you do not need to sign up with Google separately.
