{"openapi":"3.1.0","info":{"title":"Ultravox (BYOK) API","version":"0.1.0","description":"Ultravox (BYOK) lets an AI assistant read your own Ultravox data through the Ultravox API with a key you supply (Ultravox API key). Read-only: 8 tools (get_account, get_call_usage, list_calls, list_agents, list_voices, list_tools, list_corpora, list_models). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is only ever sent to...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-ultravox.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-ultravox/docs"},"termsOfService":"https://connectorbay.com/byok-ultravox/terms"},"servers":[{"url":"https://byok-ultravox.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-ultravox/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_account":{"post":{"operationId":"get_account","summary":"Show the account's plan, free time used and remaining, active and allowed concurrent calls, and voice and corpus limits.","description":"Show the account's plan, free time used and remaining, active and allowed concurrent calls, and voice and corpus limits. Use for \"How much free time do I have left on Ultravox and what is my concurrency limit\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_accountArguments","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_call_usage":{"post":{"operationId":"get_call_usage","summary":"Get aggregated call usage (counts, errors, duration, billed minutes) for all time, per day and per hour, optionally filt","description":"Get aggregated call usage (counts, errors, duration, billed minutes) for all time, per day and per hour, optionally filtered by date range, agent or voice. Use for \"How many Ultravox call minutes were billed last week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"from_date":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the range (inclusive), ISO 8601; a date alone means midnight.","title":"From Date"},"to_date":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"End of the range, ISO 8601.","title":"To Date"},"voice_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only calls that used this voice id.","title":"Voice Id"}},"title":"get_call_usageArguments","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_calls":{"post":{"operationId":"list_calls","summary":"List calls with timing, end reason, billed duration, model, voice and agent id; transcripts, prompts and join links are ","description":"List calls with timing, end reason, billed duration, model, voice and agent id; transcripts, prompts and join links are not returned. Use for \"Which Ultravox calls ended with a system error recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"from_date":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only calls created at or after this ISO 8601 time.","title":"From Date"},"to_date":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only calls created before this ISO 8601 time.","title":"To Date"},"voice_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only calls that used this voice id.","title":"Voice Id"},"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Free-text search over calls.","title":"Search"},"page_size":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many results to return per page.","title":"Page Size"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the next field of the previous answer, to get the next page.","title":"Cursor"}},"title":"list_callsArguments","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 voice agents with name, creation time and published revision; supports search and paging. Use for \"Which Ultravox a","description":"List voice agents with name, creation time and published revision; supports search and paging. Use for \"Which Ultravox agents do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Free-text search over agents.","title":"Search"},"page_size":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many results to return per page.","title":"Page Size"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the next field of the previous answer, to get the next page.","title":"Cursor"}},"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_voices":{"post":{"operationId":"list_voices","summary":"List available voices with language, provider and ownership; filter by language, ownership or search text. Use for \"Whic","description":"List available voices with language, provider and ownership; filter by language, ownership or search text. Use for \"Which Ultravox voices speak Spanish\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"primary_language":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Only voices with this primary language.","title":"Primary Language"},"ownership":{"anyOf":[{"enum":["private","public"],"type":"string"},{"type":"null"}],"default":null,"description":"private for your own voices, public for the shared ones.","title":"Ownership"},"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Free-text search over voices.","title":"Search"},"page_size":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many results to return per page.","title":"Page Size"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the next field of the previous answer, to get the next page.","title":"Cursor"}},"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_tools":{"post":{"operationId":"list_tools","summary":"List tools that agents can use (built-in and your own) with names and creation time. Use for \"Which tools are available ","description":"List tools that agents can use (built-in and your own) with names and creation time. Use for \"Which tools are available to my Ultravox agents\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ownership":{"anyOf":[{"enum":["private","public"],"type":"string"},{"type":"null"}],"default":null,"description":"private for your own tools, public for built-in ones.","title":"Ownership"},"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Free-text search over tools.","title":"Search"},"sort_order":{"anyOf":[{"enum":["display","alphabetic","reverseAlphabetic","chronologic","reverseChronologic","default"],"type":"string"},{"type":"null"}],"default":"default","description":"Order: display, alphabetic, reverseAlphabetic, chronologic, reverseChronologic or default.","title":"Sort Order"},"page_size":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many results to return per page.","title":"Page Size"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the next field of the previous answer, to get the next page.","title":"Cursor"}},"title":"list_toolsArguments","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_corpora":{"post":{"operationId":"list_corpora","summary":"List knowledge corpora (retrieval collections) with name, description and creation time. Use for \"What knowledge corpora","description":"List knowledge corpora (retrieval collections) with name, description and creation time. Use for \"What knowledge corpora do I have in Ultravox\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_size":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many results to return per page.","title":"Page Size"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the next field of the previous answer, to get the next page.","title":"Cursor"}},"title":"list_corporaArguments","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 the language models that can be used for Ultravox inference. Use for \"Which models can my Ultravox agents use\".","description":"List the language models that can be used for Ultravox inference. Use for \"Which models can my Ultravox agents use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_size":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many results to return per page.","title":"Page Size"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the next field of the previous answer, to get the next page.","title":"Cursor"}},"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}}}}