Bring your own key (BYOK)
BYOK lets your organization run agents on your own AI provider credentials — OpenAI, Deepgram, Mistral (Voxtral), ElevenLabs, Cartesia, Sarvam, Groq, Fish Audio, Gemini, and others — instead of Rabbitt's. Traffic still flows through the Rabbitt API and LiveKit infrastructure; only the underlying LLM, speech-to-text, and text-to-speech calls are billed to and run on your accounts.
There are two independent BYOK switches. They do not read each other, and turning one on does not affect the other:
| Switch | Where | Governs |
|---|---|---|
| Organization BYOK toggle | Billing settings | Interviews run from the Rabbitt dashboard |
Per-key byok flag | API keys, set at creation | That one API key's own traffic only |
A single organization can run its dashboard on Rabbitt's credentials while an integration uses its own — or hold both a BYOK and a non-BYOK API key at once, each billed differently. See Authentication § Bring your own key for the per-key mechanics and creation flow.
Credentials are stored per capability, not per provider
A provider is not one credential — it is up to three, one per capability:
- Voice LLM — the conversational model
- Speech-to-text — transcribes the candidate or caller
- Text-to-speech — generates the agent's voice
Adding an OpenAI key for the voice LLM does not automatically use it for speech-to-text or text-to-speech, even though OpenAI supports all three. Each capability is configured, stored, and validated independently, because organizations may want different providers — or different budgets — per capability. If you only fill in one of the three, the other two remain unconfigured and behave exactly as if BYOK were off for them.
No silent fallback
If BYOK is on for a capability an agent uses, and no working credential is configured for it, the call or interview fails rather than quietly falling back to Rabbitt's key. This is deliberate: a silent fallback would mean traffic — and cost — landing on a provider account you did not intend to use.
- Choosing a provider in the agent builder: providers with no configured BYOK credential are shown but not selectable, so you cannot build an agent you can't run.
- An existing agent whose provider becomes unconfigured (a key was removed) is only warned about, never silently switched to another provider or to Rabbitt's key. You decide the replacement.
- At call/interview time, a missing credential aborts the session with
MISSING_BYOK_CREDENTIALrather than routing around it.
Validation before use
A provider credential is checked against the provider's own API when you save it. An
unverified or invalid key is not treated as configured — it will not be offered as
selectable in the agent builder, and won't satisfy the readiness check needed to create a
BYOK API key (BYOK_NOT_READY, see Errors).
Billing
BYOK usage is not charged against your Rabbitt credit balance:
- Org-level BYOK: interviews on a provider covered by BYOK draw zero credits; Rabbitt still tracks minutes for observability, just not for billing.
- Key-level BYOK: a
byok: truekey is billed per minute instead of by credits.
Outbound telephony is the one exception, in both cases. Phone-call minutes are carrier cost that Rabbitt pays regardless of whose AI credentials transcribed or generated the conversation, so phone calls always draw from your credit balance — even on a fully BYOK-configured agent or a BYOK API key. See Credits § BYOK keys are billed differently.
Error codes
| Status | Code | Meaning |
|---|---|---|
400 | BYOK_NOT_READY | Creating a BYOK API key before all three capabilities (voice LLM, STT, TTS) have a verified credential |
400 | BYOK_PROVIDER_KEY_REQUIRED | An agent was set to a provider your organization has no BYOK credential for in that capability |
400 | MISSING_BYOK_CREDENTIAL | An interview or call tried to run on BYOK where the credential is missing or was removed after the agent was configured |
See Errors for the full envelope.