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

# Veo 3.1 Fast (First & Last frame) · Image to video

> Generate videos from a first/last frame using Google's Veo 3.1 fast

[← Veo](/api-documentation/ai-generation/models/veo)

**Model name:** `veo3.1/fast/first-last-frame-to-video`\
**Generation type:** `image_to_video`\
**Endpoint:** [`POST /api/asset_generator/`](/api-reference/ai-generation/post-ai-generation)

## Pricing

| Duration | Credits |
| - | - |
| 4s | **6.0** |
| 6s | **9.0** |
| 8s | **12.0** |

Prices are per output. When a request asks for several outputs, the charge is this price times the number of outputs.

## Quick start

The example uses sample media from our CDN. Swap in publicly accessible URLs for your own files.

<CodeGroup>
  ```bash cURL theme={null}
  curl --request POST \
    --url https://api.creatify.ai/api/asset_generator/ \
    --header 'Content-Type: application/json' \
    --header 'X-API-ID: your-api-id' \
    --header 'X-API-KEY: your-api-key' \
    --data '{
      "model_name": "veo3.1/fast/first-last-frame-to-video",
      "input_params": {
        "first_frame_url": "https://d35ghwdno3nak3.cloudfront.net/tutorial/avatar-aurora/recommendation-4.jpg",
        "last_frame_url": "https://d35ghwdno3nak3.cloudfront.net/tutorial/avatar-aurora/recommendation-4.jpg",
        "prompt": "She looks up from her laptop and smiles at the camera."
      }
    }'
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://api.creatify.ai/api/asset_generator/",
      headers={"X-API-ID": "your-api-id", "X-API-KEY": "your-api-key"},
      json={
          "model_name": "veo3.1/fast/first-last-frame-to-video",
          "input_params": {
              "first_frame_url": "https://d35ghwdno3nak3.cloudfront.net/tutorial/avatar-aurora/recommendation-4.jpg",
              "last_frame_url": "https://d35ghwdno3nak3.cloudfront.net/tutorial/avatar-aurora/recommendation-4.jpg",
              "prompt": "She looks up from her laptop and smiles at the camera."
          },
      },
  )
  print(response.json()["id"])
  ```
</CodeGroup>

## Input parameters

Send these fields in `input_params`.

<ParamField body="first_frame_url" type="string" required>
  URL of the input image to animate. Should be 720p or higher resolution in 16:9 aspect ratio. If the image is not in 16:9 aspect ratio, it will be cropped to fit.
</ParamField>

<ParamField body="last_frame_url" type="string" required>
  URL of the input image to animate. Should be 720p or higher resolution in 16:9 aspect ratio. If the image is not in 16:9 aspect ratio, it will be cropped to fit.
</ParamField>

<ParamField body="prompt" type="string" required>
  The text prompt describing the video you want to generate

  Minimum characters: `1`.
  Maximum characters: `2000`.
</ParamField>

<ParamField body="duration" type="string" default={"8s"}>
  The duration of the generated video in seconds

  Allowed values: `"4s"`, `"6s"`, `"8s"`.
</ParamField>

<ParamField body="resolution" type="string" default={"720p"}>
  The resolution of the generated video

  Allowed values: `"720p"`, `"1080p"`.
</ParamField>

<ParamField body="aspect_ratio" type="string" default={"auto"}>
  The aspect ratio of the generated video

  Allowed values: `"auto"`, `"16:9"`, `"9:16"`.
</ParamField>

<ParamField body="generate_audio" type="boolean" />

<ParamField body="negative_prompt" type="string">
  A negative prompt to guide the video generation
</ParamField>

<Accordion title="Complete JSON schema">
  ```json theme={null}
  {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "required": [
      "first_frame_url",
      "last_frame_url",
      "prompt"
    ],
    "properties": {
      "prompt": {
        "type": "string",
        "title": "Prompt",
        "maxLength": 2000,
        "minLength": 1,
        "description": "The text prompt describing the video you want to generate"
      },
      "duration": {
        "enum": [
          "4s",
          "6s",
          "8s"
        ],
        "type": "string",
        "title": "Duration",
        "default": "8s",
        "description": "The duration of the generated video in seconds"
      },
      "resolution": {
        "enum": [
          "720p",
          "1080p"
        ],
        "type": "string",
        "title": "Resolution",
        "default": "720p",
        "description": "The resolution of the generated video",
        "x-advance-settings": true
      },
      "aspect_ratio": {
        "enum": [
          "auto",
          "16:9",
          "9:16"
        ],
        "type": "string",
        "title": "Aspect Ratio",
        "default": "auto",
        "description": "The aspect ratio of the generated video"
      },
      "generate_audio": {
        "type": "boolean"
      },
      "last_frame_url": {
        "type": "string",
        "title": "Last Frame Url",
        "x-ui-name": "end_image",
        "description": "URL of the input image to animate. Should be 720p or higher resolution in 16:9 aspect ratio. If the image is not in 16:9 aspect ratio, it will be cropped to fit."
      },
      "first_frame_url": {
        "type": "string",
        "title": "First Frame Url",
        "x-ui-name": "start_image",
        "description": "URL of the input image to animate. Should be 720p or higher resolution in 16:9 aspect ratio. If the image is not in 16:9 aspect ratio, it will be cropped to fit."
      },
      "negative_prompt": {
        "type": "string",
        "title": "Negative Prompt",
        "description": "A negative prompt to guide the video generation",
        "x-advance-settings": true
      }
    }
  }
  ```
</Accordion>

## Response

The request returns the task with `status: "initializing"`. Poll [GET /api/asset\_generator/\{id}/](/api-reference/ai-generation/get-ai-generation-) until `status` is `done` or `failed`, or pass a `webhook_url` to be notified. A finished task lists its files in `assets` and the credits it charged in `credits_used`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.