List Voices
June 5, 2026
Table of contents
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
email— required. Account whose voices to list.source— optional filter. One ofsystem,user. Omit to get both.
Responses
-
{ "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:
systemvoices ship with a staticsampleUrl(always playable, no expiration).uservoices do not includeaudioUrlhere. Hit GET /voices/refto get a fresh signedaudioUrlfor the one you want to play.- If no user voices have been created yet, the
usersection is just empty — no error.
-
{ "error": "Parameter email is required" } -
{ "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'])