Theme
Language

Audio transcription

Transcribe audio with the OpenAI-compatible POST /v1/audio/transcriptions endpoint. Supported models, file limits, curl and Python examples, plus the optional asynchronous URL job API.

OpenAI-compatible audio

Use the OpenAI JSON shape for speech synthesis. The response contains audio bytes and defaults to MP3.

POSThttps://getvibeapi.com/v1/audio/speech
curl https://getvibeapi.com/v1/audio/speech \
  -H "Authorization: Bearer $GETVIBE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "chatterbox-turbo",
    "input": "Hello from GetVibe",
    "voice": "default",
    "response_format": "mp3",
    "speed": 1
  }' \
  --output speech.mp3

Available models are tts, gemini-tts, gemini-3.8-flash-tts, gemini-3.8-flash-lite-tts, gemini-3.8-flash-tts-lite, chatterbox-tts, kokoro-tts, chatterbox-turbo, and gpt-4o-mini-tts. response_format (mp3, opus, aac, flac, wav, pcm) and speed use the OpenAI shape; model pages list any narrower native limits. gpt-4o-mini-tts accepts the 13 OpenAI voices (alloy, ash, ballad, coral, echo, fable, nova, onyx, sage, shimmer, verse, marin, cedar) and the optional instructions field, which steers delivery in plain words, for example "speak calmly and warmly".

Voice cloning

The voice-clone-tts model speaks any text in your own voice, Russian included. First create the voice once from a 3–60 second recording (wav or mp3, up to 10 MB) — this is free. consent: true is required: you confirm it is your own voice or that you have its owner's consent. Up to 20 new voices per 24 hours.

POSThttps://getvibeapi.com/api/media/voices
curl https://getvibeapi.com/api/media/voices \
  -H "Authorization: Bearer $GETVIBE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My voice",
    "consent": true,
    "audio_url": "https://example.com/my-voice.wav"
  }'

The answer carries voice.id (voice_…). Pass it as opts.voice_id in an ordinary media request; engine qwen3 (default, best quality) or chatterbox (economy). Priced per 1000 characters of text, up to 4000 characters per request.

Premium voice — the closest likeness. Add "engine": "premium" when creating it; the recording must be 10–60 seconds. Creation costs $2.00 once and is charged only if the voice is created: nothing is charged on an error, and a balance below the price answers 402 before the recording is sent. Synthesise with a MiniMax engine: minimax-speech-2.8-hd, minimax-speech-2.6-hd or minimax-speech-02-hd ($0.125 per 1000 characters) and their Turbo versions ($0.075); the older names premium / premium-turbo mean speech-02. Right after creation we speak one short word with the voice — MiniMax deletes a voice unused for 7 days. A deleted Premium voice stops working at once, but the synthesis service offers no deletion and the creation fee is not refunded.

POSThttps://getvibeapi.com/api/media/generate
curl https://getvibeapi.com/api/media/generate \
  -H "Authorization: Bearer $GETVIBE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "voice-clone-tts",
    "prompt": "Hello! This is my cloned voice.",
    "opts": { "voice_id": "voice_Ab12Cd34Ef56Gh78Ij90", "language": "auto" }
  }'

A voice is usable only by your account. List them with GET /api/media/voices; delete one with DELETE /api/media/voices/{voice_id} — the recording is deleted from the synthesis service too. We do not keep the recording ourselves.

ElevenLabs voice. When it is enabled, GET /api/media/voices lists its prices under pricing.elevenlabs_*. Create the voice with engine: "elevenlabs" from a 10–60 second recording (voice places are limited: when they are taken the answer is 409 voice_slots_full), then synthesise with elevenlabs-v4 or elevenlabs-v4-turbo — stability, similarity_boost, speed, seed, language, and audio tags such as [laughs] right in the text. The second result file is a subtitles JSON with word timings. Price per 1000 characters: v4 $0.044, v4 Turbo $0.022 — the promotional price until October 12, 2026, then $0.16 and $0.08. Storage is $0.70 per voice per month (the first month is included; then charged monthly on the voice's creation day). If your balance is too low the voice is kept for another month and deleted only if the fee is still unpaid at the next charge — we email you first. See all your voices and their status under My voices.

Several recordings. An ElevenLabs voice takes up to 25 recordings: at creation as a samples array (each {"audio_url"} or {"audio_base64"}, wav/mp3 up to 10 MB, together up to 50 MB and 10–300 seconds), and later with POST /api/media/voices/{voice_id}/samples {"samples": […]}. Adding is free; the storage fee stays one per voice. With "remove_background_noise": true ElevenLabs removes background noise from the recordings for free (off by default: it can make a clean recording worse).

OpenAI-compatible transcription

Send a multipart request with file and model. Files are limited to 50 MB. The response is { text: "..." }.

POSThttps://getvibeapi.com/v1/audio/transcriptions
curl https://getvibeapi.com/v1/audio/transcriptions \
  -H "Authorization: Bearer $GETVIBE_API_KEY" \
  -F [email protected] \
  -F model=whisper-large-v3 \
  -F language=en
# → {"text":"..."}

Available models are speech-to-text, whisper-large-v3-turbo, nemotron-asr-multilingual, and whisper-large-v3. Current per-minute prices appear in the audio model catalog. Files must be 1 byte to 50 MB.

Timestamps and subtitles

response_format follows OpenAI: json (default, { text }), text (plain text), verbose_json (JSON with language, duration and segments[] — id, start, end, text in seconds), srt and vtt (ready-made subtitles). For word timings send timestamp_granularities[]=word with verbose_json (field words[]: word, start, end); segment and word can be combined. The price does not depend on the format.

# SRT subtitles (or vtt); verbose_json returns JSON with segments[] and words[]
curl https://getvibeapi.com/v1/audio/transcriptions \
  -H "Authorization: Bearer $GETVIBE_API_KEY" \
  -F [email protected] \
  -F model=whisper-large-v3 \
  -F response_format=srt

curl https://getvibeapi.com/v1/audio/transcriptions \
  -H "Authorization: Bearer $GETVIBE_API_KEY" \
  -F [email protected] \
  -F model=whisper-large-v3 \
  -F response_format=verbose_json \
  -F "timestamp_granularities[]=segment" \
  -F "timestamp_granularities[]=word"
# → {"task":"transcribe","language":"en","duration":5.9,"text":"...",
#    "segments":[{"id":0,"start":0.03,"end":0.71,"text":"Hello!"}, ...],
#    "words":[{"word":"Hello!","start":0.03,"end":0.51}, ...]}

Timestamps come from whisper-large-v3, whisper-large-v3-turbo, nemotron-asr-multilingual, qwen3-asr-1.7b and speech-to-text (its segments are built from word timings). universal-2, voxtral-small-24b-2507 and nemotron-3-diarization return no timestamps, so verbose_json / srt / vtt are refused with 400 for them before anything is charged.

universal-2 is not available on these routes. The older /api/transcribe accepts a public audio_url, runs asynchronously, and is enabled by the operator with TRANSCRIBE_ENABLED; otherwise it returns 503.

Legacy URL transcription

Asynchronous audio transcription from a public URL. You create a task and poll the result by our id.

POSThttps://getvibeapi.com/api/transcribe
GEThttps://getvibeapi.com/api/transcribe/{id}

Creation parameters

ParameterTypeDescription
audio_urlreq.string (URL)A public link to the audio file.
languagestringLanguage code, e.g. ru, en (2-10 characters). Optional — auto-detected.
redact_piibooleanPersonal data redaction. On by default (152-FZ compliance); disabled only by explicit redact_pii: false.

Create and poll

Creation returns 202 with { id, status: "processing" }. Poll GET /api/transcribe/{id} until the status is success (or fail); then the response contains text, durationSec, priceRub.

# 1. create a transcription job (audio by public URL)
curl https://getvibeapi.com/api/transcribe \
  -H "Authorization: Bearer $GETVIBE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "audio_url": "https://example.com/audio.mp3",
    "language": "en",
    "redact_pii": true
  }'
# → {"id":"...","status":"processing"}
Price — 1.5₽ per minute (1-minute minimum, rounded up). The debit happens once, when the task completes. PII redaction is on by default and does not raise the rate.
Audio transcription API — Speech-to-text and Whisper | GetVibe API