Multimodal
Speech-to-text
Multipart upload, same shape as OpenAI's
audio.transcriptions —
POST /v1/audio/transcriptions.
Billed per minute of audio — the real provider-reported duration, not a size-based estimate.
audio_file = open("call.wav", "rb")
resp = client.audio.transcriptions.create(
model="whisper-1",
file=audio_file,
)
print(resp.text)
Which models
whisper-1OpenAI (default)gpt-4o-transcribeOpenAIgpt-4o-mini-transcribeOpenAIscribe_v1ElevenLabsResponse format
response_format accepts
json (default,
{"text": ...}),
text (raw body), and
verbose_json (full provider object
including duration and
segments). We always request
verbose_json from the upstream provider
regardless of what you asked for, purely to get a real duration to bill on, then reshape the response to match.
Not yet supported
srt and
vtt response formats aren't built —
they need real reformatting, not just a passthrough of the provider response.