curl --request GET \
--url 'https://geoff.ai/api/v1/voice/list?scope=custom&language=en' \
--header 'Authorization: Bearer <token>' \
--header 'X-Stack-Id: stk_jmqog66ha0mugmro'
import requests
response = requests.get(
"https://geoff.ai/api/v1/voice/list",
headers={"Authorization": "Bearer YOUR_API_KEY"},
params={"scope": "custom", "language": "en"},
)
for voice in response.json()["data"]["voices"]:
print(voice["voice_id"], "-", voice["name"])
{
"data": {
"voices": [
{
"voice_id": "british_radio_host_1",
"name": "British Radio Host",
"description": "a friendly radio host",
"gender": "female",
"language": "en",
"audio_url": "https://cdn.geoff.ai/voices/british_radio_host_1.wav",
"audio_cid": "bafy...",
"video_url": null,
"video_cid": null,
"tags": ["designed", "custom"],
"is_default": false,
"is_precompiled": false,
"usage_count": 12
}
],
"count": 1,
"scope": "custom"
},
"trace_id": "04ede0ab069fb1ba8be5156a24b1e081"
}
Voice Design
List Voices
Enumerate available voices from the catalog. Filter by scope, language, or designed-vs-cloned origin.
GET
/
v1
/
voice
/
list
curl --request GET \
--url 'https://geoff.ai/api/v1/voice/list?scope=custom&language=en' \
--header 'Authorization: Bearer <token>' \
--header 'X-Stack-Id: stk_jmqog66ha0mugmro'
import requests
response = requests.get(
"https://geoff.ai/api/v1/voice/list",
headers={"Authorization": "Bearer YOUR_API_KEY"},
params={"scope": "custom", "language": "en"},
)
for voice in response.json()["data"]["voices"]:
print(voice["voice_id"], "-", voice["name"])
{
"data": {
"voices": [
{
"voice_id": "british_radio_host_1",
"name": "British Radio Host",
"description": "a friendly radio host",
"gender": "female",
"language": "en",
"audio_url": "https://cdn.geoff.ai/voices/british_radio_host_1.wav",
"audio_cid": "bafy...",
"video_url": null,
"video_cid": null,
"tags": ["designed", "custom"],
"is_default": false,
"is_precompiled": false,
"usage_count": 12
}
],
"count": 1,
"scope": "custom"
},
"trace_id": "04ede0ab069fb1ba8be5156a24b1e081"
}
Return the catalog of voices available for use with the text-to-audio
endpoint. Each entry includes the stable
voice_id, display name,
language, gender, an audio preview URL, and (when present) a video
preview URL for picker UIs.
Authorization
string
required
Bearer token.
Bearer API_key.Query Parameters
string
Filter by voice origin. Options:
generic: built-in voices that ship with the platformcustom: voices created at runtime via Voice Clone or Voice Designcelebrity: curated celebrity references (when available to your account)all: every voice the account can see (default)
string
Filter by ISO 639-1 language code, e.g.
en, zh, es, fr.curl --request GET \
--url 'https://geoff.ai/api/v1/voice/list?scope=custom&language=en' \
--header 'Authorization: Bearer <token>' \
--header 'X-Stack-Id: stk_jmqog66ha0mugmro'
import requests
response = requests.get(
"https://geoff.ai/api/v1/voice/list",
headers={"Authorization": "Bearer YOUR_API_KEY"},
params={"scope": "custom", "language": "en"},
)
for voice in response.json()["data"]["voices"]:
print(voice["voice_id"], "-", voice["name"])
{
"data": {
"voices": [
{
"voice_id": "british_radio_host_1",
"name": "British Radio Host",
"description": "a friendly radio host",
"gender": "female",
"language": "en",
"audio_url": "https://cdn.geoff.ai/voices/british_radio_host_1.wav",
"audio_cid": "bafy...",
"video_url": null,
"video_cid": null,
"tags": ["designed", "custom"],
"is_default": false,
"is_precompiled": false,
"usage_count": 12
}
],
"count": 1,
"scope": "custom"
},
"trace_id": "04ede0ab069fb1ba8be5156a24b1e081"
}
Using a voice_id
Pass any returnedvoice_id to the T2A
endpoint to render arbitrary text in that voice. Voices saved via
Voice Design (save_as parameter)
appear here under scope=custom with the designed tag.
string
default:"stk_jmqog66ha0mugmro"
required
Supplied automatically by the documentation playground.