Base: https://captcha.csdrama.com. Replace TOKEN_FROM_SOLVER with the token your solver returns.
/turnstilePage: https://captcha.csdrama.com/turnstile
sitekey: 0x4AAAAAAE41iDLtucdyAF3f
token field: cf-turnstile-response
# Cloudflare Turnstile — verify a solver token via curl
curl -X POST https://captcha.csdrama.com/turnstile/submit \
-H "Content-Type: application/json" \
-d '{"cf-turnstile-response": "TOKEN_FROM_SOLVER"}'
# form-encoded alternative:
curl -X POST https://captcha.csdrama.com/turnstile/submit \
-d "cf-turnstile-response=TOKEN_FROM_SOLVER"
/recaptcha-v2Page: https://captcha.csdrama.com/recaptcha-v2
sitekey: 6LcCosEtAAAAAN3u8UVQTRE_xbaHA43fGtwuHCON
token field: g-recaptcha-response
# reCAPTCHA v2 — "I'm not a robot" checkbox — verify a solver token via curl
curl -X POST https://captcha.csdrama.com/recaptcha-v2/submit \
-H "Content-Type: application/json" \
-d '{"g-recaptcha-response": "TOKEN_FROM_SOLVER"}'
# form-encoded alternative:
curl -X POST https://captcha.csdrama.com/recaptcha-v2/submit \
-d "g-recaptcha-response=TOKEN_FROM_SOLVER"
/recaptcha-v2-invisiblePage: https://captcha.csdrama.com/recaptcha-v2-invisible
sitekey: 6LdAo8EtAAAAAMGVeOQ_c5O2Dcdpv080t_eXd4mG
token field: g-recaptcha-response
# reCAPTCHA v2 Invisible (badge) — verify a solver token via curl
curl -X POST https://captcha.csdrama.com/recaptcha-v2-invisible/submit \
-H "Content-Type: application/json" \
-d '{"g-recaptcha-response": "TOKEN_FROM_SOLVER"}'
# form-encoded alternative:
curl -X POST https://captcha.csdrama.com/recaptcha-v2-invisible/submit \
-d "g-recaptcha-response=TOKEN_FROM_SOLVER"
The invisible badge needs grecaptcha.execute() — copy-paste starter (sitekey + URLs filled in):
<!-- reCAPTCHA v2 Invisible — render, execute, get the token, verify it -->
<script src="https://www.google.com/recaptcha/api.js?onload=onInvisibleLoad&render=explicit" async defer></script>
<div id="rc-invisible"></div>
<script>
var rcInvWidget = null;
function onInvisibleLoad() {
rcInvWidget = grecaptcha.render('rc-invisible', {
sitekey: '6LdAo8EtAAAAAMGVeOQ_c5O2Dcdpv080t_eXd4mG',
size: 'invisible',
callback: onInvisibleToken, // <-- token arrives here
'expired-callback': function () { console.warn('token expired — execute again'); }
});
}
function onInvisibleToken(token) {
console.log('TOKEN:', token);
// Verify it (same as the curl docs):
fetch('https://captcha.csdrama.com/recaptcha-v2-invisible/submit', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ 'g-recaptcha-response': token })
}).then((r) => r.json()).then(console.log);
}
// Run the invisible check, e.g. on your form's submit:
function runCheck() { grecaptcha.execute(rcInvWidget); }
</script>
<!-- Solver-service params (e.g. 2captcha recaptchaV2Invisible):
sitekey = 6LdAo8EtAAAAAMGVeOQ_c5O2Dcdpv080t_eXd4mG
pageurl = https://captcha.csdrama.com/recaptcha-v2-invisible -->
/recaptcha-v3Page: https://captcha.csdrama.com/recaptcha-v3
sitekey: 6LcNpMEtAAAAAP1FIJfKq6qzsY_oilXbnOnc0nbZ
token field: g-recaptcha-response
# reCAPTCHA v3 — score based — verify a solver token via curl
curl -X POST https://captcha.csdrama.com/recaptcha-v3/submit \
-H "Content-Type: application/json" \
-d '{"g-recaptcha-response": "TOKEN_FROM_SOLVER"}'
# form-encoded alternative:
curl -X POST https://captcha.csdrama.com/recaptcha-v3/submit \
-d "g-recaptcha-response=TOKEN_FROM_SOLVER"
/mtcaptchaPage: https://captcha.csdrama.com/mtcaptcha
sitekey: MTPublic-YAK7ynQ6H
token field: mtcaptcha-verifiedtoken
# MTCaptcha — verify a solver token via curl
curl -X POST https://captcha.csdrama.com/mtcaptcha/submit \
-H "Content-Type: application/json" \
-d '{"mtcaptcha-verifiedtoken": "TOKEN_FROM_SOLVER"}'
# form-encoded alternative:
curl -X POST https://captcha.csdrama.com/mtcaptcha/submit \
-d "mtcaptcha-verifiedtoken=TOKEN_FROM_SOLVER"