Retrieve the list of system and cloned audio voices

December 23, 2024 (August 24, 2026)

Table of contents

  1. Request Headers
  2. Query Parameters
  3. Responses
  4. Model
  5. Examples
  6. Try It

Lists the voices the account can generate with — MiniMax’s built-in catalogue, or the ones you have cloned yourself.

600+ pre-built voices, tagged for filtering with tag_list:

  • Languages: 40, from English, Chinese (Mandarin and Cantonese), Japanese and Korean through to Thai, Hindi, Tamil and Afrikaans
  • Emotions: happy, sad, angry, fearful, disgusted, surprised, neutral, fluent
  • Accents: EN-US (General), EN-Australian, EN-British, EN-Indian, CN-Northern, CN-Southern
  • Ages: Child, Young, Middle-aged, Elderly
  • Genders: Male, Female

tag_list matches these strings exactly, including case. A tag it does not recognise is ignored rather than rejected, so a typo silently widens the result instead of narrowing it — Female,Middle-Aged returns the same 310 voices as Female alone, spanning every age. Check the count when you add a filter. GET speech/config returns the tags the picker UI offers, updated as MiniMax adds to them. Voices carry others besides — Documentary, Calm and Adult all match voices without appearing there.

https://api.useapi.net/v1/minimax/speech/voices/?…

Request Headers
Authorization: Bearer {API token}
Content-Type: application/json
Query Parameters
  • account is optional when only one account configured. However, if you have multiple accounts configured, this parameter becomes required.

  • tag_list is optional. Specify a comma-separated list of tags using those returned by GET speech/config to narrow down the returned results.
    Example: Italian,Female

  • page and page_size are optional. Use them to retrieve the next page of data when the returned has_more field is true.
    Default page_size is 500.

  • is_system is optional. Set to false if you want to retrieve a list of custom voices cloned via POST speech/clone-voice. The entire list of custom voices will be returned at once, the page and page_size parameters will not be used.
    Default is true (return system voices).

Responses
  • 200 OK

    GET https://api.useapi.net/v1/minimax/speech/voices/?tag_list=Italian,Female

    {
        "voice_list": [
            {
                "voice_id": "209544421245048",
                "parent_voice_id": "0",
                "voice_name": "Diligent Leader",
                "tag_list": [
                    "Italian",
                    "Female",
                    "Adult",
                    "Calm",
                    "Standard"
                ],
                "file_id": "",
                "cover_url": "https://cdn.hailuoai.video/moss/staging/2024-11-21-14/moss-audio/voice_cover//1732171514479796864-207331589841022.png?x-oss-process=image/resize,p_50/format,webp",
                "create_time": 1732711650948,
                "update_time": 1732711650948,
                "collected": false,
                "voice_status": 2,
                "sample_audio": "https://cdn.hailuoai.video/moss/staging/2024-11-25-20/moss-audio/voice_sample_audio/1732537441602153587-official_sample_audio/4_it05.mp3",
                "uniq_id": "Italian_DiligentLeader",
                "group_id": "0"
            }
        ],
        "total": 1,
        "has_more": false
    }
    
  • 400 Bad Request

    {
        "error": "<Error message>",
        "code": 400
    }
    
  • 401 Unauthorized

    {
      "error": "Unauthorized",
      "code": 401
    }
    
  • 596 Account Error

    {
      "error": "Your minimax account has pending error. Please address this issue at https://useapi.net/docs/api-minimax-v1/post-minimax-accounts-account before making any new API calls.",
      "code": 596
    }
    
Model
{   // TypeScript, all fields are optional
    voice_list: {
        voice_id: string
        parent_voice_id: string
        voice_name: string
        tag_list: string[]
        file_id: string
        cover_url: string
        create_time: number
        update_time: number
        collected: boolean
        voice_status: number
        sample_audio: string
        uniq_id: string
        group_id: string
    }[]
    total: number
    has_more: boolean
}
Examples
  • curl "https://api.useapi.net/v1/minimax/speech/voices/?account=account" \
       -H "Accept: application/json" \
       -H "Authorization: Bearer …" 
    
  • const token = "API token";
    const account = "Previously configured account"; 
    const apiUrl = `https://api.useapi.net/v1/minimax/speech/voices/?account=${account}`; 
    const response = await fetch(apiUrl, {
      headers: {
        "Authorization": `Bearer ${token}`,
      },
    });
    const result = await response.json();
    console.log("response", {response, result});
    
  • import requests
    token = "API token"
    account = "Previously configured account"
    apiUrl = f"https://api.useapi.net/v1/minimax/speech/voices/?account={account}"
    headers = {
        "Content-Type": "application/json", 
        "Authorization" : f"Bearer {token}"
    }
    response = requests.get(apiUrl, headers=headers)
    print(response, response.json())
    
Try It