Transcription

Convert audio to text. Multipart upload, 25MB cap, returns JSON or one of several timestamped formats. Currently routed to Deepgram Nova-3 and Nova-2.

Transcribe an audio file

POST/v1/audio/transcriptionsauth · sk-echo

Multipart upload. Accepts mp3, mp4, mpeg, mpga, m4a, wav, webm. 25MB max.

from openai import OpenAI

client = OpenAI(
  base_url="https://api.echotokens.me/v1",
  api_key="sk-echo-...",
)

with open("interview.mp3", "rb") as audio:
  result = client.audio.transcriptions.create(
      model="nova-3",
      file=audio,
      response_format="json",
  )

print(result.text)

Parameters

  • parameter
    model
    type
    string
    required
    required
    nova-3 (default in our studio) or nova-2.
  • parameter
    file
    type
    file (multipart)
    required
    required
    Audio binary. Max 25MB. mp3, mp4, mpeg, mpga, m4a, wav, webm.
  • parameter
    response_format
    type
    string
    required
    optional
    json, text, srt, vtt, or verbose_json.
    default: json
  • parameter
    language
    type
    string
    required
    optional
    ISO 639-1 code or "multi" for Deepgram auto-detection.
  • parameter
    prompt
    type
    string
    required
    optional
    Optional style / terminology hint the model can lean on while transcribing.

Response

response · 200
{
"text": "Hello, and welcome to the show. Today we're talking about...",
"cost_usd_cents": 1
}
When you request response_format="verbose_json", the response also includes word-level timestamps and (where the model supports it) speaker diarization.

Other response formats

  • text — plain text body, no JSON envelope.
  • srt — SubRip subtitle file.
  • vtt — WebVTT subtitle file.
  • verbose_json — JSON with per-word timestamps.

Picking a model

all speech-to-text models
Loading model catalog…

catalog auto-syncs from the upstream every 6h · canonical pricing at /pricing

audio length limits

The 25MB upload cap is enforced at the proxy. A 25MB MP3 at 128kbps is about 25 minutes — long enough for most podcasts and interviews. For longer files, chunk on natural pause boundaries before submitting.

try it in the studio
Voice studio · Transcribe

Drop an audio file in the browser and get the transcript back without writing the multipart code.