---
title: "Poll a Pro voice clone job."
method: GET
path: "/voices/pro/{jobId}"
tags: ["Voices"]
---

# Poll a Pro voice clone job.

`GET /voices/pro/{jobId}`

## Request

- Base URL: `https://docs.sleeperhit.studio/api/v1`
- URL: `https://docs.sleeperhit.studio/api/v1/voices/pro/{jobId}`
- Auth: HTTP bearer

Returns the clone status (collecting → training → ready | failed), audio collected vs required, trainability, and the resulting voiceId once ready. Scope: `story:read`.

## Response `200`

Current Pro voice clone status.

- ProVoiceCloneStatus: Current status of a Pro voice clone job.
  - `proClone` object, required
    - `status` string: collecting | training | ready | failed.
    - `totalAudioMs` integer: Audio collected so far, in milliseconds.
    - `minRequiredMs` integer: Minimum audio needed before training.
    - `trainable` boolean: Whether enough audio is collected to start training.
    - `voiceId` string: The resulting voice id once ready (else null).
    - `error` string: Failure detail when status is failed (else null).

## Other responses

- `401`: Missing, malformed, revoked, or expired API key.
- `403`: API key is valid but lacks the scope, is blocked by IP allowlist, or the account is disabled.
- `404`: The named project or source does not exist or is owned by another account.
- `429`: Rate limit for this API key + IP + route family was exceeded.
- `500`: The API failed unexpectedly. Safe to retry with the same Idempotency-Key.

---

[API](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api.md) · [All operations](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api/revisions/4534f5d25540?raw)
