---
title: "Retrieve a video task as an OpenAI `video` object"
method: GET
path: "/v1/videos/{videoId}"
tags: ["OpenAI Compatible"]
---

# Retrieve a video task as an OpenAI \`video\` object

`GET /v1/videos/{videoId}`

## Request

- Base URL: `https://api.popnow.ai`
- URL: `https://api.popnow.ai/v1/videos/{videoId}`
- Auth: HTTP bearer

Task states map to `queued` → `queued`, `running` → `in_progress`,
`succeeded` → `completed`, and `failed` / `canceled` / `expired` →
`failed` with an `error` object. Only the account and API key that
created the task can read it; other identifiers return `404`.

## Path parameters

- `videoId` string, required

## Response `200`

Current video task state.

- Video
  - `id` string, required: Task identifier; also accepted by `/api/v1/jobs/recordInfo`.
  - `object` 'video', required
  - `model` string, required
  - `status` 'queued' | 'in_progress' | 'completed' | 'failed', required
  - `progress` integer, required: 100 when completed, otherwise 0; no fabricated intermediate values.
  - `created_at` integer, required
  - `completed_at` integer
  - `seconds` string
  - `size` string
  - `error` object
    - `code` string, required
    - `message` string, required

## Other responses

- `401`: Error in the OpenAI `{error:{message,type,param,code}}` shape. The HTTP status is the same one `/api/v1` would return. A content-policy refusal is HTTP 400 with `code: content_rejected`, so it can be told apart from a parameter error (`invalid_request` / `unsupported_parameter`, with `param` set when the error is about one field).
- `403`: Error in the OpenAI `{error:{message,type,param,code}}` shape. The HTTP status is the same one `/api/v1` would return. A content-policy refusal is HTTP 400 with `code: content_rejected`, so it can be told apart from a parameter error (`invalid_request` / `unsupported_parameter`, with `param` set when the error is about one field).
- `404`: Error in the OpenAI `{error:{message,type,param,code}}` shape. The HTTP status is the same one `/api/v1` would return. A content-policy refusal is HTTP 400 with `code: content_rejected`, so it can be told apart from a parameter error (`invalid_request` / `unsupported_parameter`, with `param` set when the error is about one field).
- `429`: Error in the OpenAI `{error:{message,type,param,code}}` shape. The HTTP status is the same one `/api/v1` would return. A content-policy refusal is HTTP 400 with `code: content_rejected`, so it can be told apart from a parameter error (`invalid_request` / `unsupported_parameter`, with `param` set when the error is about one field).
- `500`: Error in the OpenAI `{error:{message,type,param,code}}` shape. The HTTP status is the same one `/api/v1` would return. A content-policy refusal is HTTP 400 with `code: content_rejected`, so it can be told apart from a parameter error (`invalid_request` / `unsupported_parameter`, with `param` set when the error is about one field).
- `503`: Error in the OpenAI `{error:{message,type,param,code}}` shape. The HTTP status is the same one `/api/v1` would return. A content-policy refusal is HTTP 400 with `code: content_rejected`, so it can be told apart from a parameter error (`invalid_request` / `unsupported_parameter`, with `param` set when the error is about one field).

---

[API](https://skmtc.dev/popnow/apis/popnow-api.md) · [All operations](https://skmtc.dev/popnow/apis/popnow-api/llms.txt) · [OpenAPI document](https://skmtc.dev/popnow/apis/popnow-api/revisions/ba5c069f11d8?raw)
