Nodes/ComfyUI API Toolkit/ElevenLabs - Fetch Voices
ComfyUI Node

ElevenLabs - Fetch Voices

Get a live list of your ElevenLabs voices — clones and all

By IxMxAMAR·Created 5 months ago·Updated 2 months ago· 1
ElevenLabs - Fetch Voices
    • voices_json
    • voice_id_list
    api_key
    search
    categoryall
    force_refreshfalse

    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 to premade, cloned, generated, or professional. 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_refresh when you genuinely created a voice.
    • The voice_id_list output 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.
    CategoryAPI Toolkit/ElevenLabs/Voice

    Inputs (4)

    NameTypeDefaultDescription
    api_keySTRINGElevenLabs API key. Falls back to ELEVENLABS_API_KEY env var.
    searchoptSTRINGFilter voices by name, description, accent, or use_case.
    categoryoptCOMBOall5 options: all, premade, cloned, generated, professional
    force_refreshoptBOOLEANfalseBypass voice cache and fetch fresh from API.

    Outputs (2)

    NameTypeDescription
    voices_jsonSTRING
    voice_id_listSTRING