---
title: "Check voiceover generation"
method: GET
path: "/v1/voiceovers/{product_id}/status"
tags: ["Voiceovers"]
---

# Check voiceover generation

`GET /v1/voiceovers/{product_id}/status`

## Request

- Base URL: `https://api.jellypod.com`
- URL: `https://api.jellypod.com/v1/voiceovers/{product_id}/status`
- Auth: HTTP bearer

## Path parameters

- `product_id` string, uuid, required

## Response `200`

Current generation status

- object
  - `data` object, required
    - `error` string, nullable, required
    - `generation_id` string, nullable, required
    - `id` string, uuid, required
    - `object` 'video' | 'short' | 'voiceover', required
    - `phase` string, nullable, required
    - `status` 'idle' | 'generating' | 'completed' | 'failed', required
    - `studio_url` string, uri, required
    - `poll_after_seconds` number, required

## Other responses

- `400`: Validation failed or malformed request.
- `401`: Missing or invalid API key.
- `403`: Authenticated, but this API key does not have access to this resource.
- `404`: Resource not found.
- `429`: Rate limit exceeded. Response includes `Retry-After`, `RateLimit`, and `RateLimit-Policy` headers (IETF draft).
- `500`: Internal server error.

---

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