---
title: "Create a voice clone"
method: POST
path: "/waves/v1/voice-cloning"
tags: ["Voice Cloning"]
---

# Create a voice clone

`POST /waves/v1/voice-cloning`

## Request

- Base URL: `https://api.smallest.ai`
- URL: `https://api.smallest.ai/waves/v1/voice-cloning`
- Auth: HTTP bearer

Create an instant voice clone in a single call. Defaults to `lightning-v3.1`.

## Request body `multipart/form-data`

- object
  - `displayName` string, required: Human-readable name for the voice clone.
  - `file` string, binary, required: Audio file to clone from. Supported MIME types: `audio/mpeg`, `audio/mpeg-3`, `audio/wav`, `audio/wave`, `audio/webm`, `video/webm`, `audio/mp4`, `video/mp4`. Maximum size: 5 MB.
  - `description` string: Optional longer description for the voice clone.
  - `accent` string: Optional accent tag (e.g. "general", "indian").
  - `tags` string: Optional comma-separated list of tags. Server splits on commas and trims whitespace (`"en, tone-test"` → `["en", "tone-test"]`).
  - `language` 'en' | 'hi' | 'mr' | 'kn' | 'ta' | 'bn' | 'gu' | 'de' | 'fr' | 'es' | 'it' | 'pl' | 'nl' | 'ru' | 'ar' | 'he' | 'sv' | 'ml' | 'te' | 'pt' | 'pa' | 'or': Primary language the clone will be used for. Optional, but **strongly recommended** — set it to the language of your reference audio. The TTS request's `language` should also match this code; setting it now avoids silent language mismatches at inference time. Must be one of the languages supported by `lightning-v3.1`. The server validates and rejects unsupported codes with a 400.
  - `model` 'lightning-v3.1' | 'lightning-v3.1-pro': Voice cloning model. Defaults to `lightning-v3.1`. Pass `lightning-v3.1-pro` to clone onto the premium Pro pool. `lightning-v2` is accepted by the schema for historical reasons but is deprecated - the server returns 400 with `"Voice cloning for lightning-v2 is deprecated. Please use lightning-v3.1"`.

## Response `200`

Voice clone created. Includes pre-generated sample clips of the new voice.

- object
  - `message` string
  - `data` object
    - `voiceId` string: Unique voice ID. Pass this as `voice_id` in TTS requests.
    - `displayName` string
    - `model` string: Internal model document for the cloned voice.
    - `status` 'pending' | 'processing' | 'completed' | 'failed'
    - `language` string
    - `audioFileNames` string[]
    - `createdAt` string, date-time
    - `organizationId` string
    - `samples` object[]: Pre-generated sample audio clips in the cloned voice.
      - `text` string: Text that was synthesized.
      - `audioUrl` string: Signed URL to the generated sample audio.

## Other responses

- `400`: Validation error. Common causes: no file provided, invalid MIME type, file too large, clone limit exceeded, invalid language, or `model=lightning-v2` (deprecated).
- `401`: Unauthorized — missing or invalid API key.
- `500`: Server error. The `error_code` field may be populated for known failure modes.

## Changes

- **2026-09-01** `14c6d876f525`: 1 breaking, 22 info
  - request property `language` was restricted to a list of enum values
  - added the new `ar` enum value to the request property `language`
  - added the new `bn` enum value to the request property `language`
  - added the new `de` enum value to the request property `language`
  - …19 more
- **2026-08-10** `de9bfd4a4458`: 1 info
  - added the new `lightning-v3.1-pro` enum value to the request property `model`

[Operation history](https://skmtc.dev/smallest-inc/apis/waves-voice-cloning-api/changes/waves/v1/voice-cloning/post.md)

---

[API](https://skmtc.dev/smallest-inc/apis/waves-voice-cloning-api.md) - [All operations](https://skmtc.dev/smallest-inc/apis/waves-voice-cloning-api/llms.txt) - [OpenAPI document](https://skmtc.dev/smallest-inc/apis/waves-voice-cloning-api/revisions/14c6d876f525?raw)
