{"openapi":"3.1.0","info":{"title":"Soniox (BYOK) API","version":"0.1.0","description":"Soniox (BYOK) lets an AI assistant read your own Soniox data through the Soniox API with a key you supply (Soniox project API key). Read-only: 11 tools (list_stt_models, list_tts_models, list_shared_voices, list_files, get_files_count, list_transcriptions, get_transcription, list_voices, get_usage_summary, get_concurrency_limits, list_usage_logs). The BYOK key travels with each request, is used...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-soniox.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-soniox/docs"},"termsOfService":"https://connectorbay.com/byok-soniox/terms"},"servers":[{"url":"https://byok-soniox.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-soniox/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/list_stt_models":{"post":{"operationId":"list_stt_models","summary":"List speech-to-text models with transcription mode (real_time or async), supported languages and translation targets. Us","description":"List speech-to-text models with transcription mode (real_time or async), supported languages and translation targets. Use for \"Which Soniox speech-to-text models are available and which languages do they support\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_stt_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_tts_models":{"post":{"operationId":"list_tts_models","summary":"List text-to-speech models with languages, built-in voices and feature support such as voice cloning. Use for \"Which Son","description":"List text-to-speech models with languages, built-in voices and feature support such as voice cloning. Use for \"Which Soniox text-to-speech models support voice cloning\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_tts_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_shared_voices":{"post":{"operationId":"list_shared_voices","summary":"List the built-in voices of one text-to-speech model, optionally filtered by gender, age or accent. Use for \"Which young","description":"List the built-in voices of one text-to-speech model, optionally filtered by gender, age or accent. Use for \"Which young female voices does the Soniox TTS model offer\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"model":{"description":"Id of the TTS model, as listed by list_tts_models.","maxLength":200,"title":"Model","type":"string"},"gender":{"anyOf":[{"enum":["male","female","neutral"],"type":"string"},{"type":"null"}],"default":null,"description":"Only voices of this gender.","title":"Gender"},"age":{"anyOf":[{"enum":["young","middle_aged","old"],"type":"string"},{"type":"null"}],"default":null,"description":"Only voices of this age.","title":"Age"},"accent":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only voices with this accent (up to 40 characters).","title":"Accent"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Maximum number of voices to return (1 to 200).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"The next_page_cursor from the previous answer, to get the next page.","title":"Cursor"}},"required":["model"],"title":"list_shared_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_files":{"post":{"operationId":"list_files","summary":"List uploaded audio files with name, size and creation time. Use for \"Which audio files have I uploaded to Soniox\".","description":"List uploaded audio files with name, size and creation time. Use for \"Which audio files have I uploaded to Soniox\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1000,"description":"Maximum number of files to return (1 to 1000).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"The next_page_cursor from the previous answer, to get the next page.","title":"Cursor"}},"title":"list_filesArguments","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_files_count":{"post":{"operationId":"get_files_count","summary":"Count uploaded files in total and by source (playground or public API). Use for \"How many files do I have stored in Soni","description":"Count uploaded files in total and by source (playground or public API). Use for \"How many files do I have stored in Soniox\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_files_countArguments","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_transcriptions":{"post":{"operationId":"list_transcriptions","summary":"List transcription jobs with status (queued, processing, completed, error), model, audio duration and error details. Use","description":"List transcription jobs with status (queued, processing, completed, error), model, audio duration and error details. Use for \"Which of my Soniox transcriptions failed\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1000,"description":"Maximum number of transcriptions to return (1 to 1000).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"The next_page_cursor from the previous answer, to get the next page.","title":"Cursor"}},"title":"list_transcriptionsArguments","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_transcription":{"post":{"operationId":"get_transcription","summary":"Get one transcription job's status, model, duration and error details (not the transcript text). Use for \"Is Soniox tran","description":"Get one transcription job's status, model, duration and error details (not the transcript text). Use for \"Is Soniox transcription tr_123 finished\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"transcription_id":{"description":"Transcription id from list_transcriptions.","maxLength":200,"title":"Transcription Id","type":"string"}},"required":["transcription_id"],"title":"get_transcriptionArguments","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 the custom cloned voices of the project with per-model computation status. Use for \"Which custom voices do I have i","description":"List the custom cloned voices of the project with per-model computation status. Use for \"Which custom voices do I have in Soniox and are they ready\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1000,"description":"Maximum number of voices to return (1 to 1000).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"The next_page_cursor from 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/get_usage_summary":{"post":{"operationId":"get_usage_summary","summary":"Get daily cost and activity of the project over a time window, in total and per model. Use for \"What did my Soniox usage","description":"Get daily cost and activity of the project over a time window, in total and per model. Use for \"What did my Soniox usage cost in the first days of October 2026\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_time":{"description":"Window start (inclusive), ISO 8601 UTC, for example 2026-10-01T00:00:00Z.","maxLength":200,"title":"Start Time","type":"string"},"end_time":{"description":"Window end (exclusive), ISO 8601 UTC.","maxLength":200,"title":"End Time","type":"string"}},"required":["start_time","end_time"],"title":"get_usage_summaryArguments","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_concurrency_limits":{"post":{"operationId":"get_concurrency_limits","summary":"Show current and maximum concurrent transcription and TTS streams for the project and its organization. Use for \"How clo","description":"Show current and maximum concurrent transcription and TTS streams for the project and its organization. Use for \"How close am I to my Soniox concurrency limits\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_concurrency_limitsArguments","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_usage_logs":{"post":{"operationId":"list_usage_logs","summary":"List per-request usage entries (model, tokens, audio duration, cost in USD) for a time window. Use for \"Show my most exp","description":"List per-request usage entries (model, tokens, audio duration, cost in USD) for a time window. Use for \"Show my most expensive Soniox requests from the last day\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_time":{"description":"Window start (inclusive), ISO 8601 UTC.","maxLength":200,"title":"Start Time","type":"string"},"end_time":{"description":"Window end (exclusive), ISO 8601 UTC.","maxLength":200,"title":"End Time","type":"string"},"sort":{"anyOf":[{"enum":["end_time_asc","end_time_desc"],"type":"string"},{"type":"null"}],"default":"end_time_desc","description":"Order by request end time: end_time_asc or end_time_desc.","title":"Sort"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1000,"description":"Maximum number of entries to return (1 to 1000).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"The next_page_cursor from the previous answer, to get the next page.","title":"Cursor"}},"required":["start_time","end_time"],"title":"list_usage_logsArguments","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}}}}