{"openapi":"3.1.0","info":{"title":"sipgate-ai TTS","version":"0.1.0"},"paths":{"/healthz":{"get":{"summary":"Healthz","description":"Public liveness probe. `ok` if at least one backend is reachable,\notherwise `degraded` (the normal Phase-1 state — no backend deployed).","operationId":"healthz_healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/models":{"get":{"summary":"List Models","operationId":"list_models_v1_models_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"xi-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/voices":{"get":{"summary":"List Voices","operationId":"list_voices_v1_voices_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"xi-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/audio/speech":{"post":{"summary":"Openai Speech","operationId":"openai_speech_v1_audio_speech_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"xi-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeechRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/text-to-speech/{voice_id}":{"post":{"summary":"Synthesize speech (ElevenLabs-compatible)","description":"ElevenLabs-compatible batch TTS. `voice_id` (path) and `output_format` (query) are honoured; the JSON body carries `text` plus an advisory `model_id`/`voice_settings`. Note: unlike the real ElevenLabs API this endpoint has no `enable_logging` / `optimize_streaming_latency` query params — they are not read.","operationId":"elevenlabs_tts_v1_text_to_speech__voice_id__post","parameters":[{"name":"voice_id","in":"path","required":true,"schema":{"type":"string","title":"Voice Id"}},{"name":"output_format","in":"query","required":false,"schema":{"type":"string","description":"`<codec>_<rate>[...]`. Supported codecs: `mp3_` / `pcm_` / `opus_` (e.g. `mp3_44100_128`, `pcm_16000`, `opus_48000`). `ulaw_` / `alaw_` are rejected with 400.","default":"mp3_44100_128","title":"Output Format"},"description":"`<codec>_<rate>[...]`. Supported codecs: `mp3_` / `pcm_` / `opus_` (e.g. `mp3_44100_128`, `pcm_16000`, `opus_48000`). `ulaw_` / `alaw_` are rejected with 400."},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"xi-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElevenLabsTTSRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"ElevenLabsTTSRequest":{"properties":{"text":{"type":"string","title":"Text","description":"Text to synthesize. Required, must be non-empty."},"model_id":{"type":"string","title":"Model Id","description":"Routing alias selecting the TTS backend. Empty → default backend. NOT forwarded as an upstream model name.","default":""},"voice_settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Voice Settings","description":"Accepted but ignored — advisory only. Stability/similarity/style knobs are not applied by any backend."}},"type":"object","required":["text"],"title":"ElevenLabsTTSRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"SpeechRequest":{"properties":{"model":{"type":"string","title":"Model","default":""},"input":{"type":"string","title":"Input"},"voice":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice"},"response_format":{"type":"string","title":"Response Format","default":"mp3"},"speed":{"type":"number","maximum":4.0,"minimum":0.25,"title":"Speed","default":1.0},"sample_rate":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sample Rate"}},"type":"object","required":["input"],"title":"SpeechRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}