reCAPTCHA v2 Invisible (badge)

GET /recaptcha-v2-invisible · verify: POST /recaptcha-v2-invisible/submit · verified via: google

Invisible badge (explicit render, bottom-right). Submit runs grecaptcha.execute(); the callback fills g-recaptcha-response and auto-submits. Same siteverify endpoint as v2.

sitekey: 6LdAo8EtAAAAAMGVeOQ_c5O2Dcdpv080t_eXd4mG

Loading invisible reCAPTCHA… (badge appears bottom-right)

Token preview: (solve the widget or paste a token)

Verify via curl

# 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"

Get the token (browser)

Unlike the checkbox, the invisible badge needs grecaptcha.execute() to produce a token. Copy-paste starter:

<!-- 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 -->