Providers
Scribe v2 and Scribe v2 Realtime
ElevenLabs speech-to-text: Scribe v2 and Scribe v2 Realtime, with every setting it accepts, the allowed value and the default.
ElevenLabs' two speech-to-text models: scribe_v2_realtime, which streams as the caller speaks, and scribe_v2, which transcribes in batches.
Both honour the transcriber's language, including multi for automatic detection across languages.
Reached through the ElevenLabs API with OnCore's own API key, not the LiveKit Inference gateway.
Both Scribe transcribers are reached the same way and neither takes settings from the transcriber body, which is why they share a page.
Read this before using Scribe v2 and Scribe v2 Realtime
The two models take different runtime paths, and it changes how the agent handles barge-in. scribe_v2_realtime streams natively. scribe_v2 is batch-only, so OnCore wraps it in a stream adapter driven by Silero VAD, and a batch transcriber only produces a transcript once the utterance has ended. That means adaptive interruption is unavailable on scribe_v2: the session falls back to plain VAD-based interruption, which is less precise about when a caller is really cutting in. Prefer scribe_v2_realtime unless you have a reason not to.
Settings#
Every setting is optional. Leave one out and OnCore sends nothing for it, so the Default applies. If invalid is what the provider does with a value it does not accept.
| Setting | Type | Allowed | Default | If invalid |
|---|---|---|---|---|
keyterms | array of strings | up to 50 terms | Provider's own | Refused, call fails |
tagAudioEvents | boolean | true or false | true | Used as sent |
includeTimestamps | boolean | true or false | false | Used as sent |
noVerbatim | boolean | true or false | Provider's own | Used as sent |
previousText | string | free text; long values accepted | Provider's own | Used as sent |
Overriding on a single call#
Return this from your assistant-request webhook to change these settings for one call only. The stored transcriber is left untouched, and the next call starts from it again.
{
"data": {
"overrides": {
"transcriber": {
"settings": {
"keyterms": [
"Sadie",
"reservation"
],
"tagAudioEvents": true,
"includeTimestamps": false,
"noVerbatim": true,
"previousText": "Thanks for calling, how can I help?"
}
}
}
}
}Send only the keys you want to change: anything you leave out keeps the value the assistant already has. Add "id" beside "settings" to swap the whole transcriber for another one from your catalogue at the same time.
keyterms: 50 terms are accepted and 64 are refused with invalid_request, so keep the list well under that. A bare string instead of an array is tolerated.
tagAudioEvents: Whether non-speech events such as laughter are tagged in the transcript.
noVerbatim: Cleans up filler words and false starts instead of transcribing them literally.
previousText: Context from earlier in the call, used to bias the next transcription.
Types are not checked. This provider is reached with ElevenLabs' own client rather than the LiveKit gateway, so nothing pre-validates a value the way it does for Deepgram or AssemblyAI. A string where a boolean belongs is accepted and simply does nothing, rather than failing loudly. Send the types above.
Four further client arguments are managed for you. apiKey, baseUrl and modelId are part of the platform's connection to ElevenLabs. sampleRate describes the input audio rather than the transcription. useRealtime would move a model between the streaming and batch paths underneath the model you selected, changing interruption behaviour with it.
languageLock is a platform setting rather than an ElevenLabs one. It holds the assistant to the language you configured, and is set on the assistant rather than in this table.
The settings in this table are the ones that apply to these models on the platform. Option lists published for other ways of reaching ElevenLabs do not apply here.
Next steps#
- Speechmatics: speech-to-text from Speechmatics.
- Providers introduction: per-call overrides, and how a wrong value behaves across providers.