{"openapi":"3.1.0","info":{"title":"ElevenLabs (BYOK) API","version":"0.1.0","description":"ElevenLabs (BYOK) lets an AI assistant read your own ElevenLabs data through the ElevenLabs API with a key you supply (API key). Read-only: 10 tools (get_subscription, get_user, list_models, list_voices, list_generation_history, list_dubbing_projects, list_agents, list_agent_conversations, list_pronunciation_dictionaries, list_studio_projects). The BYOK key travels with each request, is used for...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-elevenlabs.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-elevenlabs/docs"},"termsOfService":"https://connectorbay.com/byok-elevenlabs/terms"},"servers":[{"url":"https://byok-elevenlabs.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-elevenlabs/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/get_subscription":{"post":{"operationId":"get_subscription","summary":"Show the subscription: plan tier, characters used and limit, reset time, voice slot usage, billing status and overage. U","description":"Show the subscription: plan tier, characters used and limit, reset time, voice slot usage, billing status and overage. Use for \"How many ElevenLabs characters have I used this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_subscriptionArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_user":{"post":{"operationId":"get_user","summary":"Show the account behind the key: user id, workspace id, plan tier, character usage and account creation time. Use for \"W","description":"Show the account behind the key: user id, workspace id, plan tier, character usage and account creation time. Use for \"Which ElevenLabs account and plan does my key belong to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_userArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_models":{"post":{"operationId":"list_models","summary":"List ElevenLabs speech models with what each supports (text to speech, voice conversion, style, fine-tuning), languages,","description":"List ElevenLabs speech models with what each supports (text to speech, voice conversion, style, fine-tuning), languages, text length limit and cost factor. Use for \"Which ElevenLabs models support text to speech and how long can the text be\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_modelsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_voices":{"post":{"operationId":"list_voices","summary":"List voices in your ElevenLabs account (and optionally the shared library) with category, description and preview URL. P","description":"List voices in your ElevenLabs account (and optionally the shared library) with category, description and preview URL. Page size up to 100. Use for \"Which cloned voices do I have in ElevenLabs\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"Voices per page (1 to 100, default 10).","title":"Page Size"},"next_page_token":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Token from the previous answer's next_page_token.","title":"Next Page Token"},"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Search text in voice names, descriptions and labels.","title":"Search"},"category":{"anyOf":[{"enum":["premade","cloned","generated","professional"],"type":"string"},{"type":"null"}],"default":null,"description":"Only voices of this category.","title":"Category"},"voice_type":{"anyOf":[{"enum":["personal","community","default","workspace","non-default","non-community","saved"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this kind of voice.","title":"Voice Type"},"sort":{"anyOf":[{"enum":["created_at_unix","name"],"type":"string"},{"type":"null"}],"default":null,"description":"Order by created_at_unix or name.","title":"Sort"},"sort_direction":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"asc or desc.","title":"Sort Direction"}},"title":"list_voicesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_generation_history":{"post":{"operationId":"list_generation_history","summary":"List past text-to-speech generations (history items) with voice, model, time, characters used and state. Page size up to","description":"List past text-to-speech generations (history items) with voice, model, time, characters used and state. Page size up to 1000; text is not returned. Use for \"What did I generate with ElevenLabs recently and how many characters did it use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items to return (default 100, maximum 1000).","title":"Page Size"},"start_after_history_item_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Return items after this history item id (use last_history_item_id from the previous answer).","title":"Start After History Item Id"},"voice_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items made with this voice id.","title":"Voice Id"},"model_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items made with this model id.","title":"Model Id"},"date_after_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only items after this Unix time in seconds.","title":"Date After Unix"},"date_before_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only items before this Unix time in seconds.","title":"Date Before Unix"},"sort_direction":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"asc or desc by date.","title":"Sort Direction"}},"title":"list_generation_historyArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_dubbing_projects":{"post":{"operationId":"list_dubbing_projects","summary":"List your dubbing jobs with name, status, source and target languages, duration and creation time. Use for \"Which dubbin","description":"List your dubbing jobs with name, status, source and target languages, duration and creation time. Use for \"Which dubbing jobs have I run in ElevenLabs and did they finish\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's next_cursor to get the following page.","title":"Cursor"},"page_size":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Jobs per page (1 to 200, default 100).","title":"Page Size"},"dubbing_status":{"anyOf":[{"enum":["dubbing","dubbed","failed"],"type":"string"},{"type":"null"}],"default":null,"description":"Only jobs with this status.","title":"Dubbing Status"},"order_direction":{"anyOf":[{"enum":["DESCENDING","ASCENDING"],"type":"string"},{"type":"null"}],"default":"DESCENDING","description":"DESCENDING (newest first) or ASCENDING.","title":"Order Direction"}},"title":"list_dubbing_projectsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_agents":{"post":{"operationId":"list_agents","summary":"List your conversational AI agents with name, tags, creation time, last call time and archived flag. Use for \"Which Elev","description":"List your conversational AI agents with name, tags, creation time, last call time and archived flag. Use for \"Which ElevenLabs conversational agents do I have and when were they last called\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's next_cursor to get the following page.","title":"Cursor"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Agents per page (1 to 100, default 30).","title":"Page Size"},"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only agents whose name contains this text.","title":"Search"},"sort_direction":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"asc or desc.","title":"Sort Direction"}},"title":"list_agentsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_agent_conversations":{"post":{"operationId":"list_agent_conversations","summary":"List conversations held by your conversational agents with agent, duration, message count, status and success flag. Use ","description":"List conversations held by your conversational agents with agent, duration, message count, status and success flag. Use for \"How many conversations did my ElevenLabs agent handle this week and how long were they\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's next_cursor to get the following page.","title":"Cursor"},"agent_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only conversations of this agent id.","title":"Agent Id"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Conversations per page (1 to 100, default 30).","title":"Page Size"},"call_start_after_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only conversations started after this Unix time in seconds.","title":"Call Start After Unix"},"call_start_before_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only conversations started before this Unix time in seconds.","title":"Call Start Before Unix"},"sort_direction":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"asc or desc.","title":"Sort Direction"}},"title":"list_agent_conversationsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_pronunciation_dictionaries":{"post":{"operationId":"list_pronunciation_dictionaries","summary":"List your pronunciation dictionaries with name, latest version id, rule count and creation time. Use for \"Which pronunci","description":"List your pronunciation dictionaries with name, latest version id, rule count and creation time. Use for \"Which pronunciation dictionaries do I have in ElevenLabs\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's next_cursor to get the following page.","title":"Cursor"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Dictionaries per page (1 to 100, default 30).","title":"Page Size"},"include_archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"False to hide archived dictionaries.","title":"Include Archived"}},"title":"list_pronunciation_dictionariesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_studio_projects":{"post":{"operationId":"list_studio_projects","summary":"List your Studio projects with name, state, creation time, default model and whether they can be downloaded. Use for \"Wh","description":"List your Studio projects with name, state, creation time, default model and whether they can be downloaded. Use for \"What Studio projects do I have in ElevenLabs\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_studio_projectsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}