---
title: "Mint a short-lived browser recording link for voice cloning."
method: POST
path: "/voices/clone-link"
tags: ["Voices"]
---

# Mint a short-lived browser recording link for voice cloning.

`POST /voices/clone-link`

## Request

- Base URL: `https://docs.sleeperhit.studio/api/v1`
- URL: `https://docs.sleeperhit.studio/api/v1/voices/clone-link`
- Auth: HTTP bearer

Voice cloning needs a microphone, so headless surfaces (API/CLI/MCP) mint this short-lived (30 min) browser URL and hand it to the human. Opening the link first asks the person speaking (who may not be the account holder) whose voice it is, to confirm they are 18 or older, and to read a consent statement aloud and agree; then they record a 15-60 second sample and name the voice. The clone lands in this account's studio as a reusable voice (provider `cartesia`, tagged `cloned`, `consent.status: "recorded"`) and appears in GET /voices. The signed link itself is the auth for the recording page — it is bound to the minting user.  Requires `Idempotency-Key`. Scope: `story:write`.

## Headers

- `Idempotency-Key` string, required

## Response `200`

Recording link minted.

- VoiceCloneLinkResponse: A short-lived browser URL where the user records a sample for voice cloning. Hand the URL to the human; the clone lands in their studio.
  - `recordingUrl` string, uri, required
  - `expiresAt` string, date-time, required

## 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.
- `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/86e084144cef?raw)
