> ## Documentation Index
> Fetch the complete documentation index at: https://60db.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Voice

> Create a custom voice from audio samples

## Request

### Headers

<ParamField header="Authorization" type="string" required>
  Bearer token with your API key
</ParamField>

<ParamField header="Content-Type" type="string" required>
  multipart/form-data
</ParamField>

### Form Data

<ParamField body="name" type="string" required>
  Name for the custom voice
</ParamField>

<ParamField body="files" type="file[]" required>
  Audio files for voice cloning (minimum 3, maximum 10 files). Each file should
  be: - Format: MP3, WAV, or FLAC - Duration: 10-60 seconds each - Quality:
  Clear speech, minimal background noise - Total duration: At least 2 minutes
  combined
</ParamField>

<ParamField body="description" type="string">
  Description of the voice
</ParamField>

<ParamField body="language" type="string">
  Primary language code (e.g., "en", "es")
</ParamField>

<ParamField body="gender" type="string">
  Voice gender: "male", "female", or "neutral"
</ParamField>

## Response

<ResponseField name="id" type="string">
  Unique identifier for the created voice
</ResponseField>

<ResponseField name="name" type="string">
  Voice name
</ResponseField>

<ResponseField name="status" type="string">
  Processing status: "processing", "ready", "failed"
</ResponseField>

<ResponseField name="created_at" type="string">
  ISO 8601 timestamp
</ResponseField>

<ResponseField name="estimated_completion" type="string">
  Estimated time for voice processing to complete
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST https://api.60db.ai/voices \
    -H "Authorization: Bearer your-api-key" \
    -F "name=My Custom Voice" \
    -F "description=Professional voice for my brand" \
    -F "language=en" \
    -F "gender=female" \
    -F "files=@sample1.mp3" \
    -F "files=@sample2.mp3" \
    -F "files=@sample3.mp3"
  ```

  ```javascript JavaScript theme={null}
  import { SixtyDBClient } from "60db";

  const client = new SixtyDBClient("your-api-key");

  const files = [
    document.querySelector("#file1").files[0],
    document.querySelector("#file2").files[0],
    document.querySelector("#file3").files[0],
  ];

  const voice = await client.createVoice({
    name: "My Custom Voice",
    description: "Professional voice for my brand",
    language: "en",
    gender: "female",
    files: files,
  });

  console.log("Voice ID:", voice.id);
  ```

  ```python Python theme={null}
  from sixtydb import SixtyDBClient

  client = SixtyDBClient('your-api-key')

  files = [
      open('sample1.mp3', 'rb'),
      open('sample2.mp3', 'rb'),
      open('sample3.mp3', 'rb')
  ]

  voice = client.create_voice(
      name='My Custom Voice',
      files=files,
      description='Professional voice for my brand',
      language='en',
      gender='female'
  )

  print(f"Voice ID: {voice['id']}")

  # Close files
  for f in files:
      f.close()
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "id": "voice-custom-123",
    "name": "My Custom Voice",
    "description": "Professional voice for my brand",
    "language": "en",
    "gender": "female",
    "status": "processing",
    "is_custom": true,
    "created_at": "2026-01-29T11:30:00Z",
    "estimated_completion": "2026-01-29T11:45:00Z"
  }
  ```
</ResponseExample>

## Voice Cloning Best Practices

<AccordionGroup>
  <Accordion title="Audio Quality">
    * Use high-quality recordings (at least 44.1kHz sample rate) - Ensure
      minimal background noise - Avoid music or sound effects - Use consistent
      recording environment
  </Accordion>

  <Accordion title="Content Guidelines">
    * Include varied sentence structures - Cover different emotions and tones -
      Include questions, statements, and exclamations - Avoid repetitive content
  </Accordion>

  <Accordion title="Technical Requirements">
    * Minimum 3 files, maximum 10 files - Each file: 10-60 seconds - Total
      duration: At least 2 minutes - Supported formats: MP3, WAV, FLAC
  </Accordion>
</AccordionGroup>

<Note>
  Voice processing typically takes 10-15 minutes. You'll receive a webhook
  notification when your voice is ready to use.
</Note>
