> ## Documentation Index
> Fetch the complete documentation index at: https://docs.routerbase.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Google Veo 3.1 — Image to Video

> Animate a still image into a high-quality short video with Google Veo 3.1.

|              |                             |
| ------------ | --------------------------- |
| **Model ID** | `google/veo-3-1-i2v-novita` |
| **Family**   | `veo-3-1-novita`            |
| **Task**     | `image-to-video`            |
| **Modality** | Video                       |
| **Upstream** | Google Veo 3.1              |

## Endpoint

```http theme={null}
POST https://routerbase.com/v1/videos/generations
```

Async — returns `{id, status: "pending"}`; poll
`GET /v1/videos/generations/{id}` until `success` or `failed`.

## Parameters

<ParamField body="prompt" type="string" required>
  Text prompt describing the desired motion or scene change.
</ParamField>

<ParamField body="image_urls" type="string[]" required>
  Exactly one source-image URL (PNG / JPEG, publicly accessible over
  HTTPS). Mapped to upstream `image`.
</ParamField>

<ParamField body="duration" type="&#x22;4&#x22; | &#x22;6&#x22; | &#x22;8&#x22;" default="&#x22;8&#x22;">
  Length of the generated clip in seconds. Pricing tiers depend on
  this. When you supply `reference_images`, upstream requires `8`.
</ParamField>

<ParamField body="sound" type="boolean" default="false">
  Whether to include Gemini-synthesized audio. Each duration has a
  separate audio-on tier (e.g. 8s: $1.52 → $3.04). Mapped to upstream
  `generate_audio`.
</ParamField>

<ParamField body="aspect_ratio" type="&#x22;16:9&#x22; | &#x22;9:16&#x22;" default="&#x22;16:9&#x22;">
  Aspect ratio of the generated video.
</ParamField>

<ParamField body="resolution" type="&#x22;720p&#x22; | &#x22;1080p&#x22;" default="&#x22;720p&#x22;">
  Output resolution.
</ParamField>

<ParamField body="negative_prompt" type="string">
  Content to actively steer the model away from generating.
</ParamField>

<ParamField body="enhance_prompt" type="boolean" default="true">
  Whether Gemini should expand and refine your prompt before generation.
  Set `false` if you've already crafted a precise prompt.
</ParamField>

<ParamField body="person_generation" type="&#x22;allow_adult&#x22; | &#x22;dont_allow&#x22; | &#x22;allow_all&#x22;" default="&#x22;allow_adult&#x22;">
  Safety controls for human generation. `allow_all` requires the
  upstream project to be allowlisted by Google.
</ParamField>

<ParamField body="last_image" type="string">
  Optional URL or base64 data for the final frame. Lets you pin the
  ending of the clip.
</ParamField>

<ParamField body="reference_images" type="object[]">
  Up to three reference assets (or one style image) used to bias the
  generation. When set, `duration` must be `8`. Each entry is
  `{ image: string, reference_type: "asset" }`.
</ParamField>

<ParamField body="sample_count" type="integer" default="1">
  Number of clips to generate (1–4). Each counts as a separate
  generation for billing.
</ParamField>

<ParamField body="seed" type="integer">
  Initialiser for the random generator. Same seed + prompt + params
  produces deterministic output. Range: 0 – 4,294,967,295.
</ParamField>

## Example

```bash theme={null}
curl https://routerbase.com/v1/videos/generations \
  -H "Authorization: Bearer $ROUTERBASE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "google/veo-3-1-i2v-novita",
    "prompt": "the cat slowly turns its head and blinks",
    "image_urls": ["https://example.com/cat.jpg"],
    "duration": "4",
    "sound": false
  }'
```

```json theme={null}
{ "id": "abc123…", "status": "pending", "model": "google/veo-3-1-i2v-novita" }
```

Poll until terminal:

```bash theme={null}
curl https://routerbase.com/v1/videos/generations/abc123… \
  -H "Authorization: Bearer $ROUTERBASE_API_KEY"
```

```json theme={null}
{
  "id": "abc123…",
  "status": "success",
  "data": [{ "url": "https://…mp4" }]
}
```

<Note>
  Try it live in the
  [Playground](https://routerbase.com/models/google/veo-3-1/image-to-video).
</Note>
