Docs · Setup
BYOK provider keys.
On the BYOK ($150/mo, or ₹10,000/mo) tier you bring your own keys. We never see the invoices; providers bill you direct. Storage is AES-256-GCM encrypted; revocation is one click.
Switch your tenant to BYOK mode: Dashboard → Settings → Onboarding mode → BYOK. You can flip back to bundled any time without losing your stored keys — they just go dormant.
Required vs optional
For voice campaigns, you need:
- Anthropic — for the LLM (Haiku in-call, Sonnet default, Opus for authoring)
- Cartesia — for TTS
- Deepgram — for STT
- Twilio OR Exotel — for the actual phone leg
For voice campaigns, Anthropic + Twilio (or Exotel) + Deepgram + Cartesia are the required one; channel-specific accounts come from their own sections.
Anthropic
Where — console.anthropic.com → Settings → API Keys → Create Key.
Format — Starts with sk-ant-…
Validation — We send a tiny probe request to Anthropic with your key on save. If it returns 401 we reject the key. Bills you nothing meaningful.
Tier ceiling — Your Anthropic tier limits concurrency. Tier 1 (default new key) is ~5 concurrent calls. Tier 2 lifts that to ~25. If you're running outbound campaigns at scale, raise your Anthropic tier first.
Cost visibility — Anthropic's dashboard is your source of truth. We don't itemise tokens; you read them at the source.
Twilio (global)
Where — console.twilio.com
Fields:
Account SID— starts withAC, copy from the console homepage.Auth Token— also on the console homepage. Treat like a password.Phone Number— the E.164 of a number you've provisioned. Optional at save time; we won't dial without one.
Validation — We call Twilio's /Accounts/<SID>.json to confirm the
credentials. No metered charge.
Geographic permissions — Twilio requires you to enable each country/region you'll dial. Console → Voice → Geographic Permissions. Forget this and inbound/outbound calls to that region 403.
VOIP fraud protection — Enable it (Console → Voice → Voice Insights → Fraud Protection). Cuts the risk that someone uses your trial credit to dial weird premium-rate destinations.
Exotel (India)
Where — my.exotel.com → Settings → API Settings.
Fields:
SID— your Exotel subdomain (e.g.acme1).Auth Token— Token from the API Settings page.API Key— Optional; some Exotel features require it.Phone Number— E.164 of an Exotel-provisioned ExoPhone.
Validation — We hit /v1/Accounts/<SID>.json with basic auth.
India NCPR — Exotel won't dial NCPR-registered numbers; we additionally filter against our DNC list (and, post-launch, daily NCPR pulls).
Cartesia
Where — play.cartesia.ai → API Keys.
Format — Long opaque string, no fixed prefix.
Validation — We request a short test synthesis. Charges a few characters of TTS; negligible.
Persona availability — Our 6 EN + 1 HI personas are Cartesia voice IDs (some public, some custom). On BYOK with your Cartesia key, you get our public personas; custom voices fall back to the closest public match.
Deepgram
Where — console.deepgram.com → API Keys.
Format — UUID-looking string.
Validation — We send a 1-second silent audio chunk for transcription. ~$0.0001 in usage.
Model selection — We use Deepgram Nova for streaming. Set the same in your Deepgram dashboard for consistent latency.
How we store keys
Every secret is encrypted with AES-256-GCM using a per-deployment master key
(TENANT_KEY_ENCRYPTION_KEY). The encrypted blob lives in your tenant row in
Postgres; the master key lives in env (Vault-backed in production). Decryption happens
per-call, in memory, never written to logs.
When you revoke a key (Dashboard → Settings → BYOK → Delete), the encrypted row is removed. There's no second copy.
Update it in CallFunnel before revoking the old one at the provider. We don't have a grace period; the moment your old key 401s, in-flight calls will fail. Best practice: paste new, save (we revalidate), then revoke the old at the provider.
Completing onboarding
Once Anthropic + Cartesia + Deepgram + (Twilio OR Exotel) all show ● VALIDATED, click Complete onboarding. The orchestrator marks your tenant ready and unlocks the dialer + workflow runner.
You can add more keys later (e.g. add Exotel to a Twilio-only setup if you expand into India). No re-onboarding required.
Switching back to bundled
Dashboard → Settings → Onboarding mode → Bundled. Your saved keys stay in place but go dormant; the orchestrator falls back to our keys and starts metering per minute. Flip back to BYOK to reactivate yours.