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

# Retrieve a Veo video task

> Use the shared video task query endpoint to check Veo progress and retrieve video URLs.

Veo uses the same `GET /v1/contents/generations/tasks/{id}` endpoint as other video models. Pass the complete `id` returned by [Create a Veo video task](/api-reference/google/veo-video-generation), including the `veo31:` prefix. No `model` parameter or request body is required.

Authenticate with the same GENGEN API key that created the task. A task that does not belong to the calling key returns `404`.

```bash theme={"dark"}
curl --request GET \
  --url 'https://gengen.farm/v1/contents/generations/tasks/veo31%3AYOUR_TASK_UUID' \
  --header 'Authorization: Bearer gengen_live_xxxxxxxxxxxxxxxx'
```

## Task status

| `status` | Action |
| - | - |
| `queued` | The task is waiting to run. Continue polling. |
| `running` | Generation is in progress. Continue polling. |
| `succeeded` | Read video URLs from `outputs.videos`. |
| `failed` | Stop polling. Check `failureReason` when present. |

Querying does not start a new generation or charge again. Do not repeat the creation request to check progress: each creation request starts a separate task.

## Video URLs and expiry

Successful tasks return playable HTTPS URLs in `outputs.videos`. Download the videos before `outputs.expiresAt`, which is seven days after generation completes.

Each signed URL expires within one hour, as indicated by `outputs.urlsExpireAt`. Query the task again to obtain fresh URLs while the video is still retained. This refresh does not extend the seven-day retention period.

Before completion, after failure, or after media expiry, `outputs.videos` is empty. An expired video does not change a successful task's `status`.


## OpenAPI

````yaml openapi/veo-video.yaml GET /contents/generations/tasks/{id}
openapi: 3.1.0
info:
  title: Google Veo video API
  version: 1.0.0
servers:
  - url: https://gengen.farm/v1
security:
  - bearerAuth: []
paths:
  /contents/generations/tasks/{id}:
    get:
      summary: Retrieve a Veo video task and refresh output links
      description: |
        Uses the shared video task query endpoint. Authenticate with the same
        API key that created the task and pass its complete id, including the
        veo31: prefix. No model parameter or request body is required.
        Poll until status is succeeded or failed. Querying does not create a
        new generation or charge again. Signed links are refreshed while the
        video is retained; querying does not extend the retention deadline.
      operationId: getVeoVideoTask
      parameters:
        - name: id
          in: path
          required: true
          description: 'Complete task id returned by creation, including the veo31: prefix.'
          schema:
            type: string
            pattern: ^veo31:[a-f0-9-]+$
      responses:
        '200':
          description: Current task status and available video URLs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VeoTask'
              example:
                id: veo31:12345678-1234-4234-8234-123456789abc
                model: veo-3.1-lite-generate-001
                status: succeeded
                outputs:
                  videos:
                    - >-
                      https://storage.googleapis.com/your-output-bucket/video.mp4?SIGNED_QUERY
                  images: []
                  expiresAt: '2026-10-16T10:00:00.000Z'
                  urlsExpireAt: '2026-10-09T11:00:00.000Z'
                createdAt: '2026-10-09T09:58:00.000Z'
                updatedAt: '2026-10-09T10:00:00.000Z'
        '401':
          description: Missing or invalid API key
        '404':
          description: Task not found for this caller
components:
  schemas:
    VeoTask:
      type: object
      required:
        - id
        - model
        - status
        - outputs
      properties:
        id:
          type: string
          example: veo31:12345678-1234-4234-8234-123456789abc
        model:
          type: string
          enum:
            - veo-3.1-generate-001
            - veo-3.1-fast-generate-001
            - veo-3.1-lite-generate-001
        status:
          type: string
          enum:
            - queued
            - running
            - succeeded
            - failed
        outputs:
          type: object
          required:
            - videos
            - images
          properties:
            videos:
              type: array
              items:
                type: string
                format: uri
              description: >-
                Temporary HTTPS links; empty for unfinished, failed or expired
                media.
            images:
              type: array
              maxItems: 0
              items:
                type: string
            expiresAt:
              type: string
              format: date-time
              description: Video retention deadline; seven days after completion.
            urlsExpireAt:
              type: string
              format: date-time
              description: >-
                Signed links expire within one hour. Retrieve again to renew
                before media expiry.
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        failureReason:
          type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````

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