---
title: "Poll a generation"
method: GET
path: "/v1/videos/{id}"
tags: ["generation"]
---

# Poll a generation

`GET /v1/videos/{id}`

## Request

- Base URL: `https://aicontentdrop.com`
- URL: `https://aicontentdrop.com/v1/videos/{id}`
- Auth: HTTP bearer

The polling half of submit-and-poll. status moves generating → completed (video_url populated) or → failed (error_message populated). Videos owned by other accounts read as 404.

## Path parameters

- `id` string, required

## Response `200`

Video record

- Video
  - `id` string, required
  - `status` string, required: generating | completed | failed | timeout
  - `title` string, nullable
  - `model` string, nullable
  - `prompt` string, nullable
  - `duration` number, nullable
  - `aspect_ratio` string, nullable
  - `credits_used` number
  - `video_url` string, uri, nullable: Populated when status is completed
  - `thumbnail_url` string, uri, nullable
  - `error_message` string, nullable: Populated when status is failed
  - `created_at` string, date-time, nullable

## Other responses

- `401`: Missing, malformed, revoked, or budget-exhausted API key
- `404`: No such resource (or not owned by this account)
- `429`: Rate limited. Read Retry-After (header) or error.retry_after_seconds (body) — they carry the same number — and wait that long. Retrying sooner extends the window rather than shortening it.
- `500`: Unexpected failure on our side. Retry once; nothing was charged.

---

[API](https://skmtc.dev/aicontentdrop/apis/ai-content-drop-api.md) · [All operations](https://skmtc.dev/aicontentdrop/apis/ai-content-drop-api/llms.txt) · [OpenAPI document](https://skmtc.dev/aicontentdrop/apis/ai-content-drop-api/revisions/75a13a8043ae?raw)
