Skip to main content

ElevenLabs · audio AI API

ElevenLabs Speech-to-Text API

Access ElevenLabs Speech-to-Text API for AI audio transcription with event tagging and subtitle support.

  • from $0.0484 per 1K characters
  • $0.20 free balance on signup
  • pay per use, no subscription
  • up to 19% below official
  • TTS, dialogue, sound effects
  • speech-to-text, voice changer, isolation

What is ElevenLabs Speech-to-Text?

ElevenLabs Speech-to-Text is a transcription endpoint backed by Scribe v2. Send an audio_url and the job returns the text plus, optionally, the kind of structured output that Whisper users normally bolt on after the fact: speaker diarization for up to 32 voices, word- or character-level timestamps, inline audio event tags like (laughter) and (music), entity detection for PII, PHI, PCI, and offensive language, and keyterm boosting up to 100 terms. Output comes back as a text field plus a words array, where each word carries its start, end, type, and (when diarization is on) speaker_id. The combination is built for transcripts you can use without post-processing.

Key features of ElevenLabs Speech-to-Text

Five features cover what you'll set on a typical job.

Speaker diarization up to 32 voices

Set `diarize` to `true` and each word in the response carries a `speaker_id`. If you know the count, pass `num_speakers`; otherwise `diarization_threshold` (default 0.22) controls how the model groups voices.

Word- or character-level timestamps

`timestamps_granularity` accepts `none`, `word` (default), and `character`. Word timing fits caption exports and scroll highlighting; character timing suits precise lyric and subtitle work where every consonant matters.

Inline audio event tags

With `tag_audio_events` enabled, non-speech sounds appear as inline cues such as `(laughter)`, `(music)`, and `(footsteps)` inside the transcript. The `type` marker on individual word objects lets you filter or render them as needed.

Entity detection for compliance work

`entity_detection` accepts `all`, `pii`, `phi`, `pci`, or `offensive_language`. The result tags spans without a separate redaction pass, which is what makes the endpoint a single drop-in for HIPAA-adjacent and payments workflows.

Keyterm boosting for technical vocabulary

`keyterms` accepts up to 100 terms. The model biases recognition toward those words, which helps with product names, technical vocab, and proper nouns that off-the-shelf models tend to mishear.

Best for

Meeting notes and call recordings

Diarization plus word timestamps gives a who-spoke-when transcript without a separate alignment step. Useful for sales call review, internal notes, and post-meeting summaries.

Podcast transcripts

Word-level timing for scroll highlighting and search inside an episode. Audio event tags surface laughter and music cues that listeners actually search for.

Compliance review

PHI or PCI entity detection flags sensitive spans automatically. Drop a transcript through the endpoint and route flagged content to manual review.

Legal and medical transcription

Entity detection plus keyterm boosting carries domain vocabulary cleanly. Pass case names, drug names, or product codes as keyterms before the call.

Caption and subtitle exports

Word timestamps map directly to SRT/VTT output. Switch to character timestamps when subtitles need precise lyric or musical-score alignment.

Research corpora

Field recordings transcribed with diarization, audio event tags, and domain keyterms produce a structured corpus ready for downstream NLP without an ETL step.

Use cases

Wire a meeting transcription tool that uploads the call audio, requests diarization plus word timestamps, and renders a labelled transcript inside the user's dashboard. Build a compliance scanner that runs every customer-support recording through the endpoint with entity_detection set to pii and routes flagged calls to a manual review queue. Build a podcast site that drops new episodes into the endpoint with audio event tagging on, then renders a click-to-jump transcript next to the player. Localize subtitles by transcribing once with character timestamps, machine-translating the text, and re-aligning the translated lines to the original timing.

API examples

Call ElevenLabs Speech-to-Text from any language by POSTing to /v1/tasks. Full parameter docs live at docs.unifically.com/models/audio/elevenlabs/speech-to-text.

curl -X POST https://api.unifically.com/v1/tasks \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "model": "elevenlabs/speech-to-text",
    "input": {
      "audio_url": "https://example.com/audio.mp3"
    }
  }'

Successful submission returns a task_id. Poll GET /v1/tasks/<task_id> or set a callback_url on the request to receive the finished transcript.

FAQs

People also ask

ElevenLabs Speech-to-Text is a transcription endpoint backed by Scribe v2. Send an audio URL and the job returns text with optional diarization, word- or character-level timestamps, audio event tags, entity detection (PII, PHI, PCI, offensive language), and keyterm boosting.

With tag_audio_events enabled (the default), non-speech sounds appear as inline cues such as (laughter), (music), or (footsteps) inside the transcript text and as type markers on individual word objects.

Pass an array of words or short phrases on keyterms (up to 100). The model biases recognition toward those terms, which helps with product names, technical vocabulary, and proper nouns.

Five. all, pii, phi, pci, and offensive_language. Pick phi for HIPAA-adjacent workflows. Pick pci for payment-card spans. Pick all for general redaction. Omit the field when you don't need detection.

Set diarize to true. The model identifies up to 32 speakers and labels each word object with a speaker_id. If you know the count, pass num_speakers; otherwise the model falls back to a diarization_threshold (default 0.22) to decide.

Three. none, word (the default), and character. Word timestamps are right for caption exports and search highlighting; character timestamps suit precise lyric or subtitle work.

Yes. Pass an integer seed (0 to 2,147,483,647) and the same audio, language, and parameters return the same transcript. The temperature field (0 to 2, default 0) controls how much variation the model is allowed.

ElevenLabs API pricing

Text routes are billed per 1,000 characters; audio routes per minute or hour of input; sound effects per generated clip.

ModelPriceNotes
ElevenLabs Text to Speech
elevenlabs/text-to-speech
  • model_id: eleven_flash_v2_5/eleven_turbo_v2_5, $0.0484/1000 characters
  • model_id: eleven_multilingual_v2, $0.0968/1000 characters
  • model_id: eleven_v3, $0.0968/1000 characters
ElevenLabs Text to Dialogue
elevenlabs/text-to-dialogue
  • model_id: eleven_flash_v2_5/eleven_turbo_v2_5, $0.0484/1000 characters
  • model_id: eleven_multilingual_v2, $0.0968/1000 characters
  • model_id: eleven_v3, $0.0968/1000 characters
ElevenLabs Sound Effects
elevenlabs/sound-effect
  • $0.0194
ElevenLabs Speech to Text
elevenlabs/speech-to-text
  • $0.1561/hour
ElevenLabs Voice Changer
elevenlabs/voice-changer
  • $0.0968/minute
ElevenLabs Audio Isolation
elevenlabs/audio-isolation
  • $0.0968/minute
  • 19% below official

Billed per generation from a prepaid balance. New accounts start with $0.20 of free balance; no subscription, no credit expiry. The playground shows the exact cost of a request before it runs. Rates synced Sep 21, 2026. All model prices.

Call the ElevenLabs API

Create a task with elevenlabs/text-to-speech, then poll it or pass a callback_url. Add "dry_run": true to get the price of a request without running it. Keys are created on the API keys page.

curl

curl -X POST https://api.unifically.com/v1/tasks \
  -H "Authorization: Bearer $UNIFICALLY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "elevenlabs/text-to-speech",
  "input": {
    "text": "Welcome to Unifically. This voice was generated with a single API call."
  }
}'

# Poll until "status" is "completed", then read output.audio_url
curl https://api.unifically.com/v1/tasks/TASK_ID \
  -H "Authorization: Bearer $UNIFICALLY_API_KEY"

Python

import os, time, requests

API = "https://api.unifically.com/v1/tasks"
headers = {"Authorization": f"Bearer {os.environ['UNIFICALLY_API_KEY']}"}

task = requests.post(API, headers=headers, json={
    "model": "elevenlabs/text-to-speech",
    "input": {
        "text": "Welcome to Unifically. This voice was generated with a single API call."
    }
}).json()["data"]

while task["status"] not in ("completed", "failed"):
    time.sleep(5)
    task = requests.get(f"{API}/{task['task_id']}", headers=headers).json()["data"]

print(task["output"]["audio_url"])

Every parameter, limit and response field is in the ElevenLabs API reference.

ElevenLabs sub-models

Six routes share this page — text-to-speech, dialogue, sound effects, audio isolation, speech-to-text, and voice changer. Pick the one that matches your audio job.