List Voices

June 5, 2026

Table of contents

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

List both system voices (the 30 built-in TTS presets) and user voices (custom voices created via POST /voices) for an account.

This endpoint is intentionally fast — it does NOT resolve playback URLs for user voices. If you need an audioUrl to play a specific user voice, call GET /voices/ref for the single voice you want to play. System voices have a static sampleUrl on the response (gstatic.com asset, never expires).

https://api.useapi.net/v1/google-flow/voices

Request Headers

Authorization: Bearer {API token}

Query Parameters

  • emailrequired. Account whose voices to list.
  • source — optional filter. One of system, user. Omit to get both.

Responses

  • 200 OK

    {
      "voices": [
        {
          "voice": "Achernar",
          "source": "system",
          "displayName": "Achernar",
          "sampleUrl": "https://www.gstatic.com/aitestkitchen/voices/samples/Achernar.wav"
        },
        {
          "voice": "user:12345-email:6a6f...-voice:d990a2f9-...-mid:d55b6d59-...",
          "source": "user",
          "displayName": "Cheerful Narrator",
          "workflowId": "d990a2f9-...",
          "mediaId": "d55b6d59-...",
          "baseVoice": "Achernar",
          "dialog": "Hello, this is a test voice.",
          "voicePerformance": "Cheerful, energetic delivery",
          "createTime": "2026-06-05T18:25:32.847291Z"
        }
      ]
    }
    

    Notes:

    • system voices ship with a static sampleUrl (always playable, no expiration).
    • user voices do not include audioUrl here. Hit GET /voices/ref to get a fresh signed audioUrl for the one you want to play.
    • If no user voices have been created yet, the user section is just empty — no error.
  • 400 Bad Request

    { "error": "Parameter email is required" }
    
  • 404 Not Found

    { "error": "Google Flow account [email protected] not found" }
    

Model

{
  voices: Array<
    | {                            // system voice
        voice: string              // base preset name (e.g. "Achernar")
        source: 'system'
        displayName: string
        sampleUrl: string          // static gstatic.com asset; no expiration
      }
    | {                            // user voice
        voice: string              // reference-id for subsequent calls
        source: 'user'
        displayName: string
        workflowId: string
        mediaId: string
        baseVoice: string          // system preset the user voice derives from
        dialog?: string
        voicePerformance?: string
        createTime?: string        // ISO 8601 timestamp
        // No audioUrl on the list endpoint — hit GET /voices/<ref> for it
      }
  >
}

Examples

  • # All voices
    curl -H "Authorization: Bearer YOUR_API_TOKEN" \
         "https://api.useapi.net/v1/google-flow/[email protected]"
    
    # Only user voices
    curl -H "Authorization: Bearer YOUR_API_TOKEN" \
         "https://api.useapi.net/v1/google-flow/[email protected]&source=user"
    
  • const r = await fetch(
      `https://api.useapi.net/v1/google-flow/voices?email=${email}&source=user`,
      { headers: { 'Authorization': `Bearer ${token}` } }
    )
    const { voices } = await r.json()
    console.log(voices.map(v => v.displayName))
    
  • import requests
    r = requests.get(
        'https://api.useapi.net/v1/google-flow/voices',
        headers={'Authorization': f'Bearer {token}'},
        params={'email': '[email protected]', 'source': 'user'},
    )
    for v in r.json()['voices']:
        print(v['displayName'], '', v['voice'])
    

Try It