cf
CallFunnel.ai

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.

Before you start

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

Whereconsole.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)

Whereconsole.twilio.com

Fields:

  • Account SID — starts with AC, 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)

Wheremy.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

Whereplay.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

Whereconsole.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.

If you rotate a provider key

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.