---
title: "Upload Voice Reference"
method: POST
path: "/v1/voices/{voice_id}/references"
---

# Upload Voice Reference

`POST /v1/voices/{voice_id}/references`

## Request

- Base URL: `https://api.kugelaudio.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.kugelaudio.com/v1/voices/{voice_id}/references`
- Auth: none declared
- TypeScript: <https://skmtc.dev/kugelaudio/apis/kugelaudio-tts-api/docs/v1/voices/:voice_id/references/post.ts> (a function with typed inputs; its response is checked against the schema)

Upload a reference audio file for a voice you own.

Accepts multipart/form-data with a ``file`` field (audio) and
``speaker_consent`` set to ``true``; without it the request is refused
with 400 ``SPEAKER_CONSENT_REQUIRED`` and no audio is stored.
Optionally include ``reference_text`` for the transcript.

## Path parameters

- `voice_id` string, required

## Request body `multipart/form-data`

- BodyUploadVoiceReferenceV1VoicesVoiceIdReferencesPost
  - `file` string, binary, required
  - `reference_text` string
  - `speaker_consent` boolean

## Response `201`

Successful Response

- VoiceReferenceInfo: Voice reference audio metadata.
  - `id` integer, required
  - `voice_id` integer, required
  - `name` string
  - `reference_text` string
  - `s3_path` string
  - `audio_url` string, nullable
  - `is_generated` boolean

## Other responses

- `422`: Validation Error

## Changes

- **2026-10-13** `32da24ab2b50`: 1 info
  - added the new optional request property `speaker_consent`

[Operation history](https://skmtc.dev/kugelaudio/apis/kugelaudio-tts-api/changes/v1/voices/:voice_id/references/post.md)

---

[API](https://skmtc.dev/kugelaudio/apis/kugelaudio-tts-api.md) - [All operations](https://skmtc.dev/kugelaudio/apis/kugelaudio-tts-api/llms.txt) - [OpenAPI document](https://skmtc.dev/kugelaudio/apis/kugelaudio-tts-api/revisions/711945519e5c?raw)
