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

# Veo3.1-Fast - Text To Video - gptproto

> Speedy veo3.1 fast text to video. Generate high-fidelity cinematic videos from text prompts with next-gen AI efficiency.

## Authentication

1. Sign up for a GPTProto account at [https://gptproto.com](https://gptproto.com)
2. Navigate to the API Keys section in your dashboard
3. Generate a new API key (sk-xxxxx)
4. Copy and securely store your API key
   For authentication details, please refer to the [Authentication](https://docs.gptproto.com/authentication) section.

## Initiate Request

<CodeGroup>
  ```bash cURL theme={null}
  curl --location 'https://gptproto.com/api/v3/google/veo3.1-fast/text-to-video' \
  --header 'Authorization: GPTPROTO_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "prompt": "A young woman walks alone under a transparent umbrella in a quiet alley during light rain, soft city lights reflecting on the wet pavement. Her pace is calm and thoughtful. The camera follows slowly behind her, occasional droplets hitting the lens. Subtle piano music plays, evoking a melancholic but peaceful mood. Dreamy, cinematic, slightly slow motion.",
    "aspect_ratio": "16:9",
    "enhance_prompt": true
  }'

  ```

  ```javascript JavaScript theme={null}
  const axios = require('axios');
  let data = JSON.stringify({
    "prompt": "A young woman walks alone under a transparent umbrella in a quiet alley during light rain, soft city lights reflecting on the wet pavement. Her pace is calm and thoughtful. The camera follows slowly behind her, occasional droplets hitting the lens. Subtle piano music plays, evoking a melancholic but peaceful mood. Dreamy, cinematic, slightly slow motion.",
    "aspect_ratio": "16:9",
    "enhance_prompt": true
  });

  let config = {
    method: 'post',
    maxBodyLength: Infinity,
    url: 'https://gptproto.com/api/v3/google/veo3.1-fast/text-to-video',
    headers: { 
      'Authorization': 'GPTPROTO_API_KEY', 
      'Content-Type': 'application/json'
    },
    data : data
  };

  axios.request(config)
  .then((response) => {
    console.log(JSON.stringify(response.data));
  })
  .catch((error) => {
    console.log(error);
  });


  ```

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

  url = "https://gptproto.com/api/v3/google/veo3.1-fast/text-to-video"

  payload = json.dumps({
    "prompt": "A young woman walks alone under a transparent umbrella in a quiet alley during light rain, soft city lights reflecting on the wet pavement. Her pace is calm and thoughtful. The camera follows slowly behind her, occasional droplets hitting the lens. Subtle piano music plays, evoking a melancholic but peaceful mood. Dreamy, cinematic, slightly slow motion.",
    "aspect_ratio": "16:9",
    "enhance_prompt": True
  })
  headers = {
    'Authorization': 'GPTPROTO_API_KEY',
    'Content-Type': 'application/json'
  }

  response = requests.request("POST", url, headers=headers, data=payload)

  print(response.text)


  ```

  ```go Go theme={null}
  package main

  import (
    "fmt"
    "strings"
    "net/http"
    "io"
  )

  func main() {

    url := "https://gptproto.com/api/v3/google/veo3.1-fast/text-to-video"
    method := "POST"

    payload := strings.NewReader(`{
    "prompt": "A young woman walks alone under a transparent umbrella in a quiet alley during light rain, soft city lights reflecting on the wet pavement. Her pace is calm and thoughtful. The camera follows slowly behind her, occasional droplets hitting the lens. Subtle piano music plays, evoking a melancholic but peaceful mood. Dreamy, cinematic, slightly slow motion.",
    "aspect_ratio": "16:9",
    "enhance_prompt": true
  }`)

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, payload)

    if err != nil {
      fmt.Println(err)
      return
    }
    req.Header.Add("Authorization", "GPTPROTO_API_KEY")
    req.Header.Add("Content-Type", "application/json")

    res, err := client.Do(req)
    if err != nil {
      fmt.Println(err)
      return
    }
    defer res.Body.Close()

    body, err := io.ReadAll(res.Body)
    if err != nil {
      fmt.Println(err)
      return
    }
    fmt.Println(string(body))
  }

  ```
</CodeGroup>

## Query Result

If the request that generated your content includes the parameter `enable_sync_mode` set to `true` (some models do not support this parameter, but you still need to query the result by id), you **must** call the Query Result endpoint to retrieve the final output.

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET "https://gptproto.com/api/v3/predictions/{id}/result" \
    -H "Authorization: GPTPROTO_API_KEY" \
    -H "Content-Type: application/json"
  ```

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

  url = "https://gptproto.com/api/v3/predictions/{id}/result"
  headers = {
      "Authorization: GPTPROTO_API_KEY",
      "Content-Type": "application/json"
  }

  response = requests.get(url, headers=headers)
  result = response.json()
  print(json.dumps(result, indent=2))
  ```

  ```javascript JavaScript theme={null}
  const url = "https://gptproto.com/api/v3/predictions/{id}/result";
  const headers = {
    "Authorization: GPTPROTO_API_KEY",
    "Content-Type": "application/json"
  };

  fetch(url, {
    method: "GET",
    headers: headers
  })
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.error("Error:", error));
  ```

  ```go Go theme={null}
  package main

  import (
      "encoding/json"
      "fmt"
      "io/ioutil"
      "net/http"
  )

  func main() {
      url := "https://gptproto.com/api/v3/predictions/{id}/result"

      req, _ := http.NewRequest("GET", url, nil)
      req.Header.Set("Authorization", "GPTPROTO_API_KEY")
      req.Header.Set("Content-Type", "application/json")

      client := &http.Client{}
      resp, err := client.Do(req)
      if err != nil {
          panic(err)
      }
      defer resp.Body.Close()

      body, _ := ioutil.ReadAll(resp.Body)
      fmt.Println(string(body))
  }
  ```
</CodeGroup>

After submitting your prediction request, the response will contain the id you need.\
You can find it in either:

* `data.id` – the unique identifier of the prediction
* `data.urls[0].get` – a ready-to-use GET URL that already embeds the id

<Accordion title="Response Example">
  ```json theme={null}
  {
      "data": {
          "id": "abc",
          "model": "model_name",
          "outputs": [],
          "urls": {
              "get": "https://gptproto.com/api/v3/predictions/abc/result"
          },
          "status": "completed",
          "error": null,
          "executionTime": 0,
          "timings": {
              "inference": 0
          },
          "has_nsfw_contents": [],
          "created_at": "2026-01-01 00:00:00"
      },
      "message": "success",
      "code": 200
  }
  ```
</Accordion>

## Parameters

### Path Parameters

Endpoint: `https://gptproto.com/api/v3/google/{model}/{scene}`
<Note>Body parameters may vary depending on the scene. Incorrect scene selection may cause parameters to fail. Please choose the appropriate scene based on your actual needs.</Note>

| scene                | example                                                         | Available Models                                                        |
| -------------------- | --------------------------------------------------------------- | ----------------------------------------------------------------------- |
| `text-to-video`      | `https://gptproto.com/api/v3/google/{model}/text-to-video`      | All models                                                              |
| `image-to-video`     | `https://gptproto.com/api/v3/google/{model}/image-to-video`     | All models                                                              |
| `reference-to-video` | `https://gptproto.com/api/v3/google/{model}/reference-to-video` | `veo3` `veo3-fast` `veo3.1` `veo3.1-fast` (not supported by pro models) |

### Core Parameters

| Parameter      | Type   | Required | Default | Range              | Description                                                                                                          |
| -------------- | ------ | -------- | ------- | ------------------ | -------------------------------------------------------------------------------------------------------------------- |
| `prompt`       | string | ✅ Yes    | -       | -                  | A text description of the desired video. Supports audio cues for Veo 3 and later.                                    |
| `image`        | string | ❌ No     | -       | -                  | Source image URL for image-to-video generation.                                                                      |
| `images`       | array  | ❌ No     | -       | 1\~3 items         | Array of reference image URLs for reference-to-video generation. Not supported by pro models.                        |
| `last_image`   | string | ❌ No     | -       | -                  | The last frame image URL for interpolation video generation. Must be used in combination with the `image` parameter. |
| `aspect_ratio` | string | ❌ No     | `16:9`  | `16:9`<br />`9:16` | The aspect ratio of the generated video.                                                                             |

### Advanced Parameters

| Parameter         | Type    | Required | Default | Range                         | Description                                                                       |
| ----------------- | ------- | -------- | ------- | ----------------------------- | --------------------------------------------------------------------------------- |
| `enhance_prompt`  | boolean | ❌ No     | `true`  | `true, false`                 | Whether to enhance the prompt for better video quality.                           |
| `enable_upsample` | boolean | ❌ No     | -       | `true, false`                 | Whether to enable upsampling for higher resolution output.                        |
| `resolution`      | string  | ❌ No     | `720p`  | `720p`<br />`1080p`<br />`4k` | The resolution of the generated video. `1080p` and `4k` only support 8s duration. |

## Model Comparison

| Feature              | Veo 3.1 / Veo 3.1 Fast | Veo 3.1 Pro     | Veo 3 / Veo 3 Fast | Veo 3 Pro       |
| -------------------- | ---------------------- | --------------- | ------------------ | --------------- |
| text-to-video        | ✅                      | ✅               | ✅                  | ✅               |
| image-to-video       | ✅                      | ✅               | ✅                  | ✅               |
| reference-to-video   | ✅                      | ❌               | ✅                  | ❌               |
| Audio cues in prompt | ✅                      | ✅               | ✅                  | ✅               |
| Resolution           | 720p, 1080p, 4k        | 720p, 1080p, 4k | 720p, 1080p, 4k    | 720p, 1080p, 4k |
| Aspect ratios        | 16:9, 9:16             | 16:9, 9:16      | 16:9, 9:16         | 16:9, 9:16      |

**Notes:**

* **Fast models** (`veo3-fast`, `veo3.1-fast`): Optimized for speed with lower latency, suitable for high-volume generation tasks.
* **Pro models** (`veo3-pro`, `veo3.1-pro`): Higher quality output with enhanced detail and coherence. Does not support reference-to-video.
* **1080p / 4k resolution**: Only available with 8-second duration.
* **Video retention**: Generated videos are stored on the server for 2 days, after which they are removed.
* **Watermarking**: Videos are watermarked using Google SynthID.

## Error Codes

### Common Error Codes

| Error Code | Error Name               | Description                                                                                                       |
| ---------- | ------------------------ | ----------------------------------------------------------------------------------------------------------------- |
| 401        | Unauthorized             | API key is missing or invalid                                                                                     |
| 403        | Forbidden                | Your API key doesn't have permission to access this resource, or insufficient balance for the requested operation |
| 429        | Too Many Requests        | You've exceeded your rate limit                                                                                   |
| 500        | Internal server error    | An internal server error occurred                                                                                 |
| 503        | Content policy violation | Content blocked due to safety concerns (actual status code is 400)                                                |
