2.6 KiB
Clerk Auth: Detecting OAuth-Only Sign-Up
Problem
When a platform uses Clerk for auth, email sign-up may silently fail with captcha_missing_token or email_address is not a valid parameter — even with a valid Turnstile token. The root cause is NOT the CAPTCHA: the Clerk dashboard has email sign-up DISABLED.
Detection
Before attempting email registration, check the Clerk environment:
curl -s https://clerk.PLATFORM.COM/v1/environment?__clerk_api_version=2025-11-10 | \
python3 -c "import sys,json; d=json.load(sys.stdin); print(d['auth_config']['identification_requirements'])"
Key field: auth_config.identification_requirements — a list of lists. Each sublist is a set of strategies where at least ONE must be used.
// OAuth-ONLY (tuskcentral.ai):
"identification_requirements": [["oauth_apple","oauth_facebook","oauth_google","oauth_token_apple"],[]]
// Email + OAuth:
"identification_requirements": [["email_address","oauth_google"],[]]
// Email only:
"identification_requirements": [[]]
If email_address is NOT in any sublist, email sign-up is impossible. The API will return:
captcha_missing_token(code misleading — CAPTCHA was fine, but email isn't allowed)email_address is not a valid parameter for this request
Turnstile Token Still Needed
Even for OAuth sign-up, the Turnstile token may be required. The solver service at solver/service.py (port 8191) provides Turnstile tokens. Extract the sitekey from display_config.captcha_public_key (visible) or display_config.captcha_public_key_invisible.
Example: tuskcentral.ai
Clerk API: https://clerk.tuskcentral.ai/v1/
Publishable: pk_live_Y2xlcmsudHVza2NlbnRyYWwuYWkk
Sitekey: 0x4AAAAAAAWXJGBD7bONzLBd (visible)
Invisible: 0x4AAAAAAAFV93qQdS0ycilX
Sign-up: OAuth only (Google, Apple, Facebook)
Sign-in: Email + OTP (email_code) OR OAuth
Identification: [["oauth_apple","oauth_facebook","oauth_google","oauth_token_apple"],[]]
Block disposable: true
Cloudflare: Yes — direct API calls return 403 error 1010; browser-based Clerk JS SDK works
Workflow
GET /v1/environment→ checkidentification_requirements- If OAuth-only → switch to Google OAuth (or abandon email approach)
- If email allowed → get Turnstile token from solver, then
POST /v1/client/sign_ups - Never waste CAPTCHA solver credits on OAuth-only platforms
Solver Service Dependency
The Turnstile solver at solver/service.py (port 8191) must be running:
cd "<project>/solver" && python service.py
Check: curl -s http://127.0.0.1:8191/health