+ {/* Your auth form inputs here */}
+
+ {config?.turnstileSiteKey && (
+
setCaptchaToken(token)}
+ onError={() => setCaptchaToken(null)}
+ onExpire={() => setCaptchaToken(null)}
+ onBeforeInteractive={() => setShowPrompt(true)}
+ options={{
+ appearance: "interaction-only",
+ size: "flexible",
+ }}
+ />
+ )}
+
+ {showPrompt && (
+ Please complete the captcha to continue.
+ )}
+
+ );
+}
+```
+
+### OTP screen integration
+
+A **second** Turnstile component is needed on the OTP verification screen. This generates fresh tokens for completing the OTP or resending it — both of which are captcha-protected requests.
+
+```tsx
+import { useRef, useState } from "react";
+import { Turnstile, type TurnstileInstance } from "@marsidev/react-turnstile";
+import { useTurnkey } from "@turnkey/react-wallet-kit";
+
+function OtpScreen() {
+ const { config } = useTurnkey();
+ const turnstileRef = useRef