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

# Create Veo 3.1 video

> Veo 3.1 Fast / Lite 专用入口。model：veo3.1-fast、veo3.1-lite、veo3.1-lite-hd。支持文生、最多 3 张参考图、首尾帧（互斥）。完成后用 GET /v1/videos/{task_id} 轮询。

Asynchronously generate **Veo 3.1** videos. Prefer the dedicated endpoint `POST /v1/veo/frames`; you can also use the shared `POST /v1/videos` with the same `model` values. On success you get a `task_id`; poll [Query video task](/en/api-reference/common/query) and read `result.video_url` when completed.

## Models

| `model` | Resolution | Notes |
| - | - | - |
| `veo3.1-fast` | `720p` / `1080p` | Fast tier; default model |
| `veo3.1-lite` | `720p` (passing `1080p` bills as `veo3.1-lite-hd`) | Lite tier |
| `veo3.1-lite-hd` | `1080p` | Lite HD tier |

Billing is `per_task`. See the [model catalog](/en/api-reference/common/model-catalog) and the `cost` field on create for live unit prices. If `model` is omitted, it defaults to `veo3.1-fast`. Legacy aliases such as `veo_3_1_fast` are normalized to the hyphenated form.

## Modes

These three modes are **mutually exclusive**:

| Mode | How to call |
| - | - |
| Text-to-video | `prompt` only — no reference images or frames |
| Reference images | Pass `images` (or `image_urls`), up to **3** |
| First / last frames | Pass `first_frame_url` / `first_image` (required); optional `last_frame_url` / `last_image` |

Reference images and first/last frames **cannot** be combined. If you send a last frame, you must also send a first frame. References must be public `https://` direct links.

## Request fields

| Field | Type | Required | Description |
| - | - | - | - |
| `model` | string | no | See the table above; default `veo3.1-fast` |
| `prompt` | string | yes | Generation description |
| `resolution` | string | no | `720p` (default) or `1080p`; `4k` is not supported |
| `orientation` | string | no | `landscape` (16:9) or `portrait` (9:16); default `landscape` |
| `aspect_ratio` / `ratio` | string | no | Use `16:9` / `9:16` instead of `orientation` if preferred |
| `images` / `image_urls` | string\[] | no | Up to **3** reference images |
| `first_frame_url` / `first_image` | string | conditional | First frame URL |
| `last_frame_url` / `last_image` | string | no | Last frame URL; requires first frame |

## Examples

### Text-to-video (Fast)

```bash theme={null}
curl -X POST 'https://sigrunai.com/v1/veo/frames' \
  -H 'Authorization: Bearer sk_xxx' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "veo3.1-fast",
    "prompt": "A golden retriever running across a sunny meadow, cinematic tracking shot",
    "resolution": "720p",
    "orientation": "landscape"
  }'
```

### Reference images

```bash theme={null}
curl -X POST 'https://sigrunai.com/v1/veo/frames' \
  -H 'Authorization: Bearer sk_xxx' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "veo3.1-fast",
    "prompt": "Keep subject and style consistent; slow push-in",
    "resolution": "1080p",
    "orientation": "portrait",
    "images": [
      "https://example.com/ref1.jpg",
      "https://example.com/ref2.jpg"
    ]
  }'
```

### First / last frames (Lite)

```bash theme={null}
curl -X POST 'https://sigrunai.com/v1/veo/frames' \
  -H 'Authorization: Bearer sk_xxx' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "veo3.1-lite",
    "prompt": "Smooth push from close-up to wide shot with natural lighting",
    "resolution": "720p",
    "aspect_ratio": "16:9",
    "first_frame_url": "https://example.com/first.jpg",
    "last_frame_url": "https://example.com/last.jpg"
  }'
```

### Shared `/v1/videos` entry

```bash theme={null}
curl -X POST 'https://sigrunai.com/v1/videos' \
  -H 'Authorization: Bearer sk_xxx' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "veo3.1-lite-hd",
    "prompt": "City night timelapse with light trails",
    "resolution": "1080p",
    "aspect_ratio": "16:9"
  }'
```

Example success response:

```json theme={null}
{
  "code": 20000,
  "msg": "提交成功",
  "data": {
    "task_id": "vid_xxxxxxxx",
    "status": "queued",
    "progress": 0,
    "model": "veo3.1-fast",
    "cost": 0,
    "result": {}
  }
}
```

`cost` is the points charged for this job. `data.model` is the billing key (e.g. Lite with `1080p` may bill as `veo3.1-lite-hd`).

## Polling

```bash theme={null}
curl -X GET 'https://sigrunai.com/v1/videos/vid_xxxxxxxx' \
  -H 'Authorization: Bearer sk_xxx'
```

See [Query video task](/en/api-reference/common/query) for status values. When completed, read `data.result.video_url` (kept about **3** days — download promptly).


## OpenAPI

````yaml POST /v1/veo/frames
openapi: 3.1.0
info:
  title: AI Platform OpenAPI
  description: 异步图片与视频生成。创建后轮询 task_id；结果 URL 约保留 3 天。
  version: 1.0.0
servers:
  - url: https://sigrunai.com
    description: AI Platform 生产环境
security:
  - bearerAuth: []
paths:
  /v1/veo/frames:
    post:
      tags:
        - Videos
      summary: Create Veo 3.1 video
      description: >-
        Dedicated Veo 3.1 Fast / Lite endpoint. Models: veo3.1-fast,
        veo3.1-lite, veo3.1-lite-hd. Supports text-to-video, up to 3 reference
        images, or first/last frames (mutually exclusive). Poll GET
        /v1/videos/{task_id}.
      operationId: createVeoFrames
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VeoFramesCreateRequest'
            examples:
              textToVideo:
                summary: Text-to-video
                value:
                  model: veo3.1-fast
                  prompt: >-
                    A golden retriever running across a sunny meadow, cinematic
                    tracking shot
                  resolution: 720p
                  orientation: landscape
              referenceImages:
                summary: Reference images
                value:
                  model: veo3.1-fast
                  prompt: Keep subject and style consistent; slow push-in
                  resolution: 1080p
                  orientation: portrait
                  images:
                    - https://example.com/ref1.jpg
                    - https://example.com/ref2.jpg
              firstLastFrames:
                summary: First / last frames
                value:
                  model: veo3.1-lite
                  prompt: Smooth push from close-up to wide shot
                  resolution: 720p
                  aspect_ratio: '16:9'
                  first_frame_url: https://example.com/first.jpg
                  last_frame_url: https://example.com/last.jpg
      responses:
        '200':
          description: Submitted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskQueryResponse'
components:
  schemas:
    VeoFramesCreateRequest:
      type: object
      required:
        - prompt
      properties:
        model:
          type: string
          description: veo3.1-fast (default), veo3.1-lite, veo3.1-lite-hd
          example: veo3.1-fast
        prompt:
          type: string
        resolution:
          type: string
          description: 720p or 1080p; 4k is not supported
          example: 720p
        orientation:
          type: string
          description: landscape (16:9) or portrait (9:16)
          example: landscape
        aspect_ratio:
          type: string
          description: 16:9 or 9:16; can replace orientation
        ratio:
          type: string
        images:
          type: array
          items:
            type: string
            format: uri
          maxItems: 3
          description: Up to 3 reference images; mutually exclusive with first/last frames
        image_urls:
          type: array
          items:
            type: string
            format: uri
          maxItems: 3
        first_frame_url:
          type: string
          format: uri
        last_frame_url:
          type: string
          format: uri
        first_image:
          type: string
          format: uri
        last_image:
          type: string
          format: uri
    TaskQueryResponse:
      type: object
      properties:
        code:
          type: integer
          example: 20000
        msg:
          type: string
        data:
          $ref: '#/components/schemas/TaskQueryData'
    TaskQueryData:
      type: object
      properties:
        task_id:
          type: string
        status:
          type: string
          description: queued / processing / completed / failed 等
        progress:
          type: integer
        model:
          type: string
        created_at:
          type: integer
        completed_at:
          type: integer
        cost:
          type: number
        error_message:
          type: string
        result:
          $ref: '#/components/schemas/TaskResult'
    TaskResult:
      type: object
      properties:
        image_url:
          type: string
        video_url:
          type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: 控制台创建的 API Key，格式：Bearer sk_xxx

````

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