---
title: "Get async task status"
method: GET
path: "/v1/tasks/{id}"
tags: ["Tasks"]
---

# Get async task status

`GET /v1/tasks/{id}`

## Request

- Base URL: `https://api.tokenlab.sh`
- URL: `https://api.tokenlab.sh/v1/tasks/{id}`
- Auth: HTTP bearer

Retrieves the status and result of an asynchronous generation task. Prefer the `poll_url` returned by the create response; `/v1/tasks/{id}` is the canonical fixed status endpoint for video, music, and 3D jobs.

## Path parameters

- `id` string, required

## Response `200`

Task status (task-type specific fields may be present)

- VideoTaskResponse
  - `id` string
  - `status` 'pending' | 'processing' | 'completed' | 'failed'
  - `progress` integer: Optional progress value returned only when a real progress value is available; use status to determine completion.
  - `created` integer
  - `updated` integer
  - `model` string
  - `video` object
    - `url` string
    - `duration` number
    - `width` integer
    - `height` integer
  - `error` union
    - string
    - object
      - `code` string
      - `message` string
  - `error_details` AsyncTaskErrorDetails: Why a task failed. A status read returns HTTP 200 even for a failed task; `status` here is the status of the failure itself.
    - `projection_version` integer: `2` means `message` is the final reason for the failure.
    - `status` integer, required
    - `message` string, required
    - `type` string, required
    - `code` string, required
    - `param` string: The request field at fault, omitted when no specific field is known.
    - `retryable` boolean, required
    - `upstream` AsyncTaskUpstreamError: The upstream service's own error, present only for a task that ran on an Official route. Its `code` values are defined by the upstream service and may change; branch on `error_details.code` and `error_details.type`.
      - `source` string: Upstream service name, when known.
      - `code` string
      - `message` string, required
      - `param` string
  - `task_id` string
  - `poll_url` string
  - `cancelled` boolean: True when a queued async task was cancelled before execution. Cancelled tasks are represented with `status: failed` for compatibility with existing async task status values.
  - `cancellation_status` 'cancelled': Cancellation marker for tasks cancelled through the public async task endpoint.
  - `billing_transaction_id` string
  - `video_url` string
  - `videos` object[]
  - `data` object[]
  - `audio_url` string
  - `title` string
  - `lyrics` string
  - `model_url` string
  - `glb_url` string
  - `fbx_url` string
  - `media_retention` MediaRetention: Saving status of the media results in this response. Present when the status is known within the response time limit; when it is absent, the media URLs still work.
    - `days` integer, required: Days a media-result URL stays valid after the result is first recorded.
    - `items` object[], required
      - `url` string, uri, required
      - `kind` 'image' | 'video' | 'audio' | '3d', required
      - `content_type` string
      - `status` 'saving' | 'saved' | 'failed' | 'expired', required
      - `expires_at` string, date-time, required

## Other responses

- `401`: Unauthorized - Invalid or missing API key
- `403`: Task not available to the current API key
- `500`: Internal Server Error

---

[API](https://skmtc.dev/tokenlab/apis/tokenlab-ai-gateway.md) · [All operations](https://skmtc.dev/tokenlab/apis/tokenlab-ai-gateway/llms.txt) · [OpenAPI document](https://skmtc.dev/tokenlab/apis/tokenlab-ai-gateway/revisions/3208bfbcda22?raw)
