Skip to main content
Bot protection stops automated traffic from starting calls with your agent. When it’s on, Callers verifies a Cloudflare Turnstile token on its servers before it issues call credentials, so it covers voice and text conversations, the script tag and the programmatic SDK. Unlike the domain list, a token does not bypass it.

Turn it on

1

Create a Turnstile widget in Cloudflare

In the Cloudflare Turnstile dashboard, create a widget and add the same hostnames your agent’s widget runs on.
2

Paste both keys into Callers

Open your agent, go to Channels > Widget > Embed on Web, and fill in Site key and Secret key under Bot protection.
3

Save the agent

Protection switches on only when both keys are filled in. Clearing either key switches it off.
Whether visitors ever see a challenge is set by the Widget Mode you choose for the site key in Cloudflare (Managed, Non-interactive or Invisible), not by the SDK. The SDK renders Turnstile so it appears only when Cloudflare actually needs the visitor to interact.

With the built-in widget

Nothing to change. When the agent has bot protection on, the SDK:
  1. Reads the agent’s public configuration when it loads.
  2. Shows the Turnstile check inside the call card when the visitor starts a call, and removes it as soon as it’s solved.
  3. Sends the token with the call request.
After a protected call ends, the visitor must close and reopen the widget to start another conversation, so each one gets a fresh check.

Bring your own token

If you hide the built-in widget or run in a React Native WebView, solve Turnstile in your own UI and pass the token to call(). When you pass a token, the SDK skips its own configuration fetch and challenge.
1

Get the site key

Read it at runtime from the agent’s public config (no authentication needed; the secret is never returned):
When protection is off, enabled is false and the other captcha fields are null.
2

Render Turnstile with the web call action

The token must be created with the action web-call-start, exported as WEB_CALL_CAPTCHA_ACTION. A token minted for any other action is rejected.
3

Pass the token to call()

Turnstile tokens are single-use and expire after about 300 seconds. Mint a fresh one right before each call(); never reuse one.
Cloudflare Turnstile runs only in browsers; there is no native mobile SDK. In React Native, render the challenge in a WebView and pass the token back to your code. See Headless and React Native.

Errors

Authentication

Domains and tokens.

Troubleshooting

More error messages.