OpenAI compatibility
KittenML supports the common OpenAI SDK workflows for upload transcription and streaming speech generation. Realtime STT uses OpenAI-style events on a KittenML-specific path.
Set this base URL for OpenAI HTTP SDKs:
https://api.kittenml.com/v1
Do not set the SDK base URL to a complete endpoint such as
/v1/audio/transcriptions; the SDK appends that path itself.
Compatibility matrix
| Capability | Status | Notes |
|---|---|---|
POST /v1/audio/transcriptions | Supported | Works with OpenAI Python and JavaScript clients |
model, file, language, response_format, stream | Supported | Use the documented values |
json, verbose_json, text, srt, vtt | Supported | Includes KittenML metadata in JSON formats |
| Common OpenAI ASR model IDs | Compatibility aliases | They select the same hosted EmoKitten model; prefer emokittenasr-realtime |
| Upload SSE | Supported | Finite delta/done stream ending in [DONE] |
POST /v1/audio/speech | Supported | Chunked binary audio by default; SSE is optional |
model, input, voice, response_format, speed, stream_format | Supported | Use KittenML model IDs and voices |
| Realtime event names and common fields | Compatible style | Includes KittenML extension fields |
| Official OpenAI Realtime client connection | Not drop-in | The SDK hard-codes /v1/realtime; KittenML uses /v1/stt/realtime |
| WebRTC realtime transcription | Supported | Uses short-lived client tokens, SDP signaling, microphone media, and an oai-events data channel |
| Streaming TTS audio | Supported | stream_format: audio or stream_format: sse |
| Word-level timestamps, diarization, confidence scores | Not supported | Segment timestamps are available in verbose STT output |
Compatibility covers the workflows above, not every field, model, endpoint, or behavior available from another provider.
For upload STT, the fields in the matrix are the accepted public contract.
OpenAI options such as prompt, temperature, and word-level timestamp
granularities do not affect KittenML inference and should be omitted. An
unsupported response_format, empty file, or oversized file is rejected.
For TTS, send only the documented fields. Unsupported model IDs are rejected, and invalid input, voice, format, or speed values return field validation errors.
KittenML extensions
JSON and realtime transcript results can add:
enriched_textaccenttagsclean_textsegmentsrequest_id
OpenAI SDK response objects preserve these additional JSON fields.
Realtime clients
Use a standard WebSocket library with:
wss://api.kittenml.com/v1/stt/realtime?model=emokittenasr-realtime
See the tested Python and Node.js examples.
Browser applications can instead use the documented WebRTC transcription flow. KittenML follows the familiar short-lived-token and SDP exchange pattern, but uses the KittenML API hostname and documented signaling paths.