{"openapi":"3.1.0","info":{"title":"sipgate-ai STT","version":"0.3.0"},"paths":{"/healthz":{"get":{"summary":"Healthz","description":"Public liveness probe. Deliberately opaque about the backend mix\nso the model / engine identity doesn't leak — authenticated clients\ncan read /v1/models for the actual catalogue.","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/audio/transcriptions":{"post":{"summary":"Openai Transcribe","operationId":"openai_transcribe_v1_audio_transcriptions_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":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_openai_transcribe_v1_audio_transcriptions_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/speech-to-text":{"post":{"summary":"Transcribe audio (ElevenLabs-compatible)","description":"ElevenLabs-compatible batch transcription. The whole ElevenLabs form-field surface is accepted for drop-in SDK compatibility, but this proxy only honours a subset — every field's real effect is documented inline. Fields marked *accepted but ignored* are parsed and discarded; `webhook` and `cloud_storage_url` return **501**.","operationId":"elevenlabs_transcribe_v1_speech_to_text_post","parameters":[{"name":"enable_logging","in":"query","required":false,"schema":{"type":"boolean","description":"Query parameter, matching the real ElevenLabs API (every other field here is multipart/form-data). Accepted but ignored — per-request logs only ever record the key fingerprint, never audio.","default":true,"title":"Enable Logging"},"description":"Query parameter, matching the real ElevenLabs API (every other field here is multipart/form-data). Accepted but ignored — per-request logs only ever record the key fingerprint, never audio."},{"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":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_elevenlabs_transcribe_v1_speech_to_text_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"Body_elevenlabs_transcribe_v1_speech_to_text_post":{"properties":{"file":{"anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"File","description":"Audio file to transcribe. Required unless `cloud_storage_url` is set (which itself returns 501)."},"model_id":{"type":"string","title":"Model Id","description":"Routing alias selecting the STT backend (e.g. the vLLM/Parakeet/Nemotron model id). Empty → default backend. NOT forwarded as an upstream model name.","default":""},"language_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language Code","description":"Hint language forwarded to the backend. Honoured."},"timestamps_granularity":{"type":"string","title":"Timestamps Granularity","description":"`none` | `word` | `character`. Only `none` vs. non-`none` is honoured: any non-`none` value returns word-level timestamps (character granularity is not produced).","default":"word"},"file_format":{"type":"string","title":"File Format","description":"`other` (decode via ffmpeg) or `pcm_s16le_16` (raw 16 kHz PCM). Honoured.","default":"other"},"diarize":{"type":"boolean","title":"Diarize","description":"Accepted but ignored — no backend performs diarization. All words are returned as `speaker_0`.","default":false},"num_speakers":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Speakers","description":"Accepted but ignored (no diarization)."},"tag_audio_events":{"type":"boolean","title":"Tag Audio Events","description":"Accepted but ignored — no audio-event tagging.","default":true},"additional_formats":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Additional Formats","description":"Accepted but ignored — only the default JSON response shape is produced."},"keyterms":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Keyterms","description":"Accepted but ignored — no keyterm biasing."},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"Accepted but ignored — not forwarded to the backend."},"use_multi_channel":{"type":"boolean","title":"Use Multi Channel","description":"Accepted but ignored — audio is always treated as single-channel.","default":false},"webhook":{"type":"boolean","title":"Webhook","description":"Not supported — returns **501** if true.","default":false},"webhook_metadata":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Metadata","description":"Accepted but ignored (webhook delivery is unsupported)."},"cloud_storage_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cloud Storage Url","description":"Not supported — returns **501** if set."}},"type":"object","title":"Body_elevenlabs_transcribe_v1_speech_to_text_post"},"Body_openai_transcribe_v1_audio_transcriptions_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"},"model":{"type":"string","title":"Model","default":""},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"response_format":{"type":"string","title":"Response Format","default":"json"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature"}},"type":"object","required":["file"],"title":"Body_openai_transcribe_v1_audio_transcriptions_post"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"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"}}}}