API Free WeekHundreds of APIs are free to call this week.Browse free APIs

Veo 3.1 First-Last Frame to Video

google/veo3.1/first-last-frame-to-video

Veo3.1 First Last Frame To Video 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
9
Production route

Try the model

Playground

Open playground
Input
The text prompt describing the video you want to generate

PNG, JPEG, WebP, or GIF · 20 MiB maximum

First frame of the video. 720p or higher in 16:9 or 9:16 works best.

PNG, JPEG, WebP, or GIF · 20 MiB maximum

Last frame of the video.
Duration of the generated video in seconds. Allowed values: 4, 6, 8.
Output resolution. Allowed values: 720p, 1080p, 4k.
Output aspect ratio. Omit to match the input image. Allowed values: 16:9, 9:16.
Generate synchronized audio. Videos without audio are cheaper.
What to avoid in the video.
Random seed for more reproducible results. Range: 0 to 4294967295.
OutputReady

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
Google
Model ID
google/veo3.1/first-last-frame-to-video
Execution
async
Base URL
https://api.sandbase.ai
API
Unified Run API
Endpoint
/v1/run

API README

Veo 3.1 First-Last Frame to Video

Veo 3.1 with first and last frame control: send a start image and an end image and Veo generates the motion between them, with native audio.

Fields

FieldTypeDefaultNotes
promptstring, required—Up to 20,000 characters.
imageimage URL, required—First frame. JPEG, PNG, or WebP URL.
end_imageimage URL, required—Last frame. JPEG, PNG, or WebP URL.
duration4 / 6 / 88Output length in seconds.
resolution720p / 1080p / 4k720pSets the per-second rate.
aspect_ratio16:9 / 9:16—Output frame shape.
generate_audiobooleantrueNative dialogue, music, and effects; turning it off lowers the rate.
negative_promptstring—What to avoid.
seedinteger 0–4294967295randomFix 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.

Output720p1080p4k
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

  • Keep both frames compatible in framing and lighting, or describe the transition explicitly.
  • Describe how the subject travels from the first frame to the last.

Limits

  • Both frames are required.
  • 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/image-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.

Production API
Unified Run API endpoint
https://api.sandbase.ai/v1/run
Model ID
google/veo3.1/first-last-frame-to-video
# 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/first-last-frame-to-video",
  "prompt": "A woman looks into the camera, breathes in, then exclaims energetically, \"have you guys checked out Veo3.1 First-Last-Frame-to-Video on Fal? It's incredible!\"",
  "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

All image & video models
ModelTypeDefault priceReleased
GoogleVideo$3.20 / runOct 8, 2025
GoogleVideo$1.12 / runAug 27, 2026
GoogleVideo$0.80 / runAug 27, 2026
GoogleVideo$0.80 / runAug 27, 2026
GoogleVideo$0.80 / runAug 27, 2026
GoogleVideo$1.04 / runJun 30, 2026

Questions

FAQ

How do I call Google Veo 3.1 First-Last Frame to Video through SandBase?

Create a SandBase API key, then send requests with the model ID "google/veo3.1/first-last-frame-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 First-Last Frame to Video and the other models in the catalog; you do not need to sign up with Google separately.