> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mountsea.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Persona

> Create a vocal persona from an audio clip

Create a persona based on an audio clip. Personas can be used to generate music with consistent vocal characteristics.

<Info>
  This endpoint returns the created persona **directly** (not a task ID). For vocal personas (`persona_type: "vox"`), first extract the vocal stem using [Get Vox Stem](/api-reference/suno/getVoxStem).
</Info>

## Request Body

<ParamField body="clip_id" type="string" required>
  The audio clip ID to create persona from.
</ParamField>

<ParamField body="name" type="string" required>
  The name of the persona.
</ParamField>

<ParamField body="is_public" type="boolean" required default={true}>
  Whether the persona is publicly accessible.
</ParamField>

<ParamField body="description" type="string">
  A description of the persona.
</ParamField>

<ParamField body="persona_type" type="string">
  The type of persona. Use `"vox"` for vocal personas.
</ParamField>

<ParamField body="vox_audio_id" type="string">
  The vox audio ID returned from [Get Vox Stem](/api-reference/suno/getVoxStem). Required for vocal personas.
</ParamField>

<ParamField body="vocal_start_s" type="number">
  The start time (in seconds) of the vocal segment to use.
</ParamField>

<ParamField body="vocal_end_s" type="number">
  The end time (in seconds) of the vocal segment to use.
</ParamField>

<ParamField body="user_input_styles" type="string">
  Style tags describing the persona (e.g., "soulful vocals, R\&B, smooth harmonies").
</ParamField>

<ParamField body="image_s3_id" type="string">
  Base64 encoded image for the persona avatar (format: `data:image/png;base64,...`).
</ParamField>

## Response

The response contains the complete persona object with all details.

<ResponseField name="id" type="string">
  The created persona ID.
</ResponseField>

<ResponseField name="name" type="string">
  The persona name.
</ResponseField>

<ResponseField name="description" type="string">
  The persona description.
</ResponseField>

<ResponseField name="persona_type" type="string">
  The type of persona (e.g., `"vox"`).
</ResponseField>

<ResponseField name="is_public" type="boolean">
  Whether the persona is public.
</ResponseField>

<ResponseField name="clip" type="object">
  The source clip information.
</ResponseField>

<ResponseField name="vocal_start_s" type="number">
  The vocal start time.
</ResponseField>

<ResponseField name="vocal_end_s" type="number">
  The vocal end time.
</ResponseField>

## Example

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.mountsea.ai/suno/v2/persona \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer your-api-key" \
    -d '{
      "clip_id": "316c630b-284b-4fbd-9b35-f0551d4b98da",
      "name": "My Vocal Persona",
      "description": "A soulful R&B voice",
      "is_public": true,
      "persona_type": "vox",
      "vox_audio_id": "373efa9c-a366-42bb-806c-afdfc9b306a7",
      "vocal_start_s": 16.13,
      "vocal_end_s": 46.13,
      "user_input_styles": "soulful vocals, R&B, smooth harmonies"
    }'
  ```

  ```javascript Node.js theme={null}
  const response = await fetch('https://api.mountsea.ai/suno/v2/persona', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer your-api-key'
    },
    body: JSON.stringify({
      clip_id: '316c630b-284b-4fbd-9b35-f0551d4b98da',
      name: 'My Vocal Persona',
      description: 'A soulful R&B voice',
      is_public: true,
      persona_type: 'vox',
      vox_audio_id: '373efa9c-a366-42bb-806c-afdfc9b306a7',
      vocal_start_s: 16.13,
      vocal_end_s: 46.13,
      user_input_styles: 'soulful vocals, R&B, smooth harmonies'
    })
  });

  const persona = await response.json();
  console.log('Created Persona ID:', persona.id);
  console.log('Persona Name:', persona.name);
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      'https://api.mountsea.ai/suno/v2/persona',
      headers={
          'Content-Type': 'application/json',
          'Authorization': 'Bearer your-api-key'
      },
      json={
          'clip_id': '316c630b-284b-4fbd-9b35-f0551d4b98da',
          'name': 'My Vocal Persona',
          'description': 'A soulful R&B voice',
          'is_public': True,
          'persona_type': 'vox',
          'vox_audio_id': '373efa9c-a366-42bb-806c-afdfc9b306a7',
          'vocal_start_s': 16.13,
          'vocal_end_s': 46.13,
          'user_input_styles': 'soulful vocals, R&B, smooth harmonies'
      }
  )

  persona = response.json()
  print(f"Created Persona ID: {persona['id']}")
  print(f"Persona Name: {persona['name']}")
  ```
</CodeGroup>

## Response Example

```json theme={null}
{
  "id": "61515b86-62f5-427a-bc29-6befa382536a",
  "name": "My Vocal Persona",
  "description": "A soulful R&B voice",
  "image_s3_id": "https://cdn2.suno.ai/image_316c630b-284b-4fbd-9b35-f0551d4b98da.jpeg",
  "root_clip_id": "316c630b-284b-4fbd-9b35-f0551d4b98da",
  "clip": {
    "id": "316c630b-284b-4fbd-9b35-f0551d4b98da",
    "status": "complete",
    "title": "Roadtrip Sunrise",
    "audio_url": "https://cdn1.suno.ai/316c630b-284b-4fbd-9b35-f0551d4b98da.mp3",
    "image_url": "https://cdn2.suno.ai/image_316c630b-284b-4fbd-9b35-f0551d4b98da.jpeg"
  },
  "persona_type": "vox",
  "is_public": true,
  "user_input_styles": "soulful vocals, R&B, smooth harmonies",
  "vocal_start_s": 16.13,
  "vocal_end_s": 46.13,
  "vocal_clip_id": "70149747-3f33-4e56-a4f4-8c44c30d7a0f",
  "upvote_count": 0,
  "clip_count": 1,
  "follower_count": 0
}
```

## Workflow: Creating a Vocal Persona

For creating a vocal persona, follow these steps:

```javascript theme={null}
// Step 1: Get vox stem to extract vocals
const voxResponse = await fetch('https://api.mountsea.ai/suno/v2/getVoxStem', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your-api-key'
  },
  body: JSON.stringify({ clip_id: 'your-clip-id' })
});
const voxData = await voxResponse.json();
// voxData.id is the vox_audio_id to use

// Step 2: Create persona with the extracted vox audio
const personaResponse = await fetch('https://api.mountsea.ai/suno/v2/persona', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your-api-key'
  },
  body: JSON.stringify({
    clip_id: 'your-clip-id',
    name: 'My Vocal Persona',
    is_public: true,
    persona_type: 'vox',
    vox_audio_id: voxData.id,
    vocal_start_s: voxData.vocal_start_s,
    vocal_end_s: voxData.vocal_end_s,
    user_input_styles: 'your style description'
  })
});
const persona = await personaResponse.json();
console.log('Persona created:', persona.id);
```

<Tip>
  Once created, personas can be used in the [Generate Music](/api-reference/suno/generate) endpoint via the `persona` parameter to create music with consistent vocal characteristics.
</Tip>
