ElevenLabs - Fetch Voices
Get a live list of your ElevenLabs voices — clones and all
- voices_json
- voice_id_list
The AIS_EL_VoiceSelector dropdown is a static, baked-in menu of premade voices. This node is the opposite: it calls ElevenLabs and pulls back a live list of every voice your account can actually use - premade, cloned, generated, and professional. If you've cloned a voice or designed one, it shows up here. That's the entire difference between "the fixed catalog" and "what I own."
You give it an api_key, and it hits the voices endpoint. Three controls matter:
search- filter the results by name, description, accent, or use case. Handy when you have a hundred voices and want only the ones tagged for audiobook work.category- narrow topremade,cloned,generated, orprofessional. Good for programmatically picking "give me all my clones" without parsing names.force_refresh- the pack caches voice lists to avoid hammering the API every queue (the node runs fresh each time thanks to IS_CHANGED, but the underlying voice list is cached). Flip this on when you've just created a new voice and want it to appear immediately.
Two outputs:
voices_json- the full API response as a string, with every field (IDs, names, descriptions, preview URLs).voice_id_list- just the IDs, as a string. Useful to pipe into an LLM node or a selector so you can pick a voice dynamically instead of by hand.
How to actually use it
The natural loop is: clone or design a voice → run FetchVoices with force_refresh → grab its voice_id → wire it into TTS. In a more automated setup you can feed voice_id_list into a text-processing node and let a prompt or an LLM choose which voice speaks each line - that's how you'd script a multi-voice project without hand-entering a single ID. ElevenLabs returns roughly a preview URL per voice too, so if you want to audition them visually in a browser-preview node, the JSON has everything you need.
Installing it
One of fifteen ElevenLabs nodes in the ComfyUI API Toolkit pack. Manager: search "API Toolkit". Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/IxMxAMAR/ComfyUI-API-Toolkit
cd ComfyUI-API-Toolkit
pip install -r requirements.txt
Restart ComfyUI. Requires requests and soundfile from requirements.txt; missing deps silently disable only the affected service.
Gotchas
- This is a real API call that costs you nothing in characters but does count against rate limits - which is why the cache exists. If you're looping, lean on the cache and only
force_refreshwhen you genuinely created a voice. - The
voice_id_listoutput is a string, not a true ComfyUI list, so downstream nodes that expect a Python list won't take it directly. Treat it as text to parse. - A 401 means the key's wrong; the node's shared retry handles transient 429s/5xx for you, but not a bad key.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | ElevenLabs API key. Falls back to ELEVENLABS_API_KEY env var. | |
| searchopt | STRING | Filter voices by name, description, accent, or use_case. | |
| categoryopt | COMBO | all | 5 options: all, premade, cloned, generated, professional |
| force_refreshopt | BOOLEAN | false | Bypass voice cache and fetch fresh from API. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| voices_json | STRING | — |
| voice_id_list | STRING | — |