POST /v1/audio/transcriptions
Endpoint OpenAI-compatible pra transcrever áudio (Whisper). Aceita arquivos de até 25MB em multipart/form-data. Suporta pt-BR nativamente.
Autenticação
http
Authorization: Bearer sk-tokia-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxAdicione o modelo Whisper à lista permitida da key (criar nova ou editar existente em /dashboard/keys).
Request fields (multipart)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
file | arquivo | sim | mp3, wav, m4a, mp4, webm, flac, ogg. Máx 25MB. |
model | string | sim | ID Whisper no catálogo (ex: openrouter/openai/whisper-large-v3). |
language | string | não | ISO-639-1 (pt, en). Acelera + melhora precisão. |
prompt | string | não | Hint de contexto/glossário pro Whisper. |
response_format | string | não | json (default), text, srt, vtt, verbose_json. |
temperature | number | não | 0-1. Default 0 (determinístico). |
Exemplo cURL
bash
curl https://api.usetokia.com/v1/audio/transcriptions \
-H "Authorization: Bearer $TOKIA_KEY" \
-F file=@reuniao.mp3 \
-F model=openrouter/openai/whisper-large-v3 \
-F language=ptExemplo Python (SDK OpenAI)
python
from openai import OpenAI
client = OpenAI(
api_key=os.environ["TOKIA_KEY"],
base_url="https://api.usetokia.com/v1",
)
with open("reuniao.mp3", "rb") as f:
result = client.audio.transcriptions.create(
model="openrouter/openai/whisper-large-v3",
file=f,
language="pt",
)
print(result.text)Response (json)
json
{
"text": "Bom dia, a reunião de hoje começou às 9h..."
}Limites
| Limite | Valor |
|---|---|
| Tamanho máximo do arquivo | 25 MB |
| Duração recomendada | até ~30 min (split antes pra arquivos longos) |
| Formatos aceitos | mp3, mp4, mpeg, mpga, m4a, wav, webm, flac, ogg |
Códigos de erro
Tabela completa em /docs/api/errors. Específicos do Whisper:
| HTTP | code | Causa |
|---|---|---|
| 400 | invalid_content_type | Header não é multipart/form-data. |
| 400 | empty_body | Não enviou nenhum campo (file ausente). |
| 413 | (Fastify default) | Arquivo > 25MB. Comprimir ou dividir. |