Veo V2

Frames to Video

Changed on

Generate video from a start image (required) and optional end image, guided by a text prompt. Returns immediately with 202 Accepted.

Example

curl -X POST https://genaipro.io/api/v2/veo/frames-to-video \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -F "start_image=@photo.jpg" \
  -F "prompt=Animate this photo with gentle motion" \
  -F "aspect_ratio=VIDEO_ASPECT_RATIO_LANDSCAPE" \
  -F "number_of_videos=1"

Rate limit: 30 requests/minute — shared across all four Veo creation endpoints.

post/v2/veo/frames-to-video

Request

Request body multipart/form-data

start_imagestring binary required

Start frame image file (max 20MB, JPEG/PNG/WEBP)

end_imagestring binary

End frame image file (optional, max 20MB, JPEG/PNG/WEBP)

promptstring required

Text description to guide the video generation

aspect_ratio'VIDEO_ASPECT_RATIO_LANDSCAPE' | 'VIDEO_ASPECT_RATIO_PORTRAIT' required

Video aspect ratio

number_of_videosstring required

Number of videos to generate (1–4). Sent as string in form data.

model'veo' | 'omni_flash'

Video model — veo (default) or omni_flash (Omni 1.1, see Video models in the Veo V2 tag). 403 omni_disabled if Omni is not enabled for your account.

duration'4' | '6' | '8' | '10'

Omni only — clip length in seconds. Sent as string in form data.

resolution'360p' | '720p' | '1080p'

Omni only — output resolution (1080p = 720p + upscale; upscale_resolution is ignored for Omni).

watermarkstring

Omni only (true/false, sent as string in form data) — cheaper clip with a ✦ watermark. Requires resolution 720p or 1080p.

upscale_resolution'' | 'none' | '1080p'

Optional upscale resolution. Leave empty or none to disable upscale. 4k is not supported for video and returns 400. Veo only — ignored for omni_flash (use resolution instead).

callback_urlstring

Optional webhook URL. When the task reaches a terminal state (completed or failed), GenAIPro POSTs the task status (same shape as GET /v2/veo/tasks/{id}) to this URL.

Response

Task accepted for processing. Returns exactly one history item representing the parent task; use its id to poll GET /v2/veo/tasks/{id}.

Example response

{
  "histories": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "prompt": "A cat walking on the beach at sunset",
      "status": "processing",
      "created_at": "2026-04-03T10:00:00Z"
    }
  ]
}

Changes

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status