BazaarLinkBazaarLink
Sign in
DocsAPI ReferenceSDK ReferenceAgentic UsageAI Skills
Speech synthesis

Audio transcription

Use multipart/form-data model and file, or JSON model and input_audio:{data,format} (raw base64). Formats: wav, mp3, mp4, m4a, ogg, flac, webm, aac. Decoded audio: maximum 25 MiB; request body: 50 MiB for base64. audio.transcription_max_seconds_by_model sets the per-model limit, falling back to audio.transcription_max_seconds and then 60 seconds. Longer audio returns 413 audio_too_long before processing and is not charged. response_format: json or verbose_json only; timestamp_granularities word or segment requires verbose_json. stream is unsupported (400 unsupported_parameter); oversized audio: 413 audio_too_large. provider is ignored. Billing uses database model prices per usage.seconds or input/output token; per-minute price = 60 × per-second price. usage.cost is the customer charge in USD.

POST/v1/audio/transcriptions

Authorizations

Authorizationrequired
string · header

API key as bearer token in the Authorization header.

Body

modelrequired
string

Transcription model id, e.g. elevenlabs/scribe-v2.

GET /v1/models?output_modalities=transcription
file
file

Audio file (multipart). Supported: wav, mp3, mp4, m4a, ogg, flac, webm, aac. Up to 25 MiB. JSON clients can send input_audio: {data: base64, format} instead.

multipart/form-data: required; decoded <= 25 MiB
input_audio
object

JSON alternative to file: data contains raw base64 audio and format names the type, such as wav or mp3. Request body maximum: 50 MiB; decoded audio maximum: 25 MiB.

application/json: required; data: raw base64; format: wav | mp3 | mp4 | m4a | ogg | flac | webm | aac
response_format
string

json (default) returns {text}; verbose_json adds language, duration and segments/words.

default: json
jsonverbose_json
timestamp_granularities
string[]

word and/or segment. Only applied with response_format=verbose_json; ignored otherwise. Word-level timestamps are not returned yet; segments are.

response_format=verbose_json; multipart: timestamp_granularities[]
wordsegment
language
string

Optional language hint such as en or zh. Leave empty to auto-detect.

ISO-639-1
prompt
string

Optional context text to help with names and terms. Not every model applies it.

temperature
number

Optional sampling temperature; not every model applies it.

0 <= temperature <= 1
stream
boolean

Streaming is not supported; stream=true returns 400 unsupported_parameter.

Unsupported: 400 unsupported_parameter
provider
object

Optional routing field; ignored.

Ignored

Deep guide →

POST /v1/audio/transcriptions
curl https://api.bazaarlink.ai/v1/audio/transcriptions \
  -H "$BAZAARLINK_AUTH_HEADER" \
  -F model="<transcription-model-id>" \
  -F file=@audio.wav \
  -F response_format=json

curl https://api.bazaarlink.ai/v1/audio/transcriptions \
  -H "$BAZAARLINK_AUTH_HEADER" \
  -H "Content-Type: application/json" \
  -d '{"model":"<transcription-model-id>","input_audio":{"data":"<raw-base64-audio>","format":"wav"},"response_format":"verbose_json","timestamp_granularities":["word","segment"]}'
Response examples

Audio transcription: json / verbose_json — Example charges are illustrative, not model prices. audio.transcription_max_seconds_by_model sets the per-model limit, falling back to audio.transcription_max_seconds and then 60 seconds. Longer audio returns 413 audio_too_long before processing and is not charged.

{"text":"Hello","usage":{"seconds":1,"cost":0.00001}}
verbose_json
{"text":"Hello","duration":1,"segments":[{"id":0,"start":0,"end":1,"text":"Hello"}],"words":[{"word":"Hello","start":0,"end":1}],"usage":{"seconds":1,"cost":0.00001}}
Support
Support
Hi! How can we help you?
Send a message and we'll get back to you soon.
Audio transcription — BazaarLink API