Skip to content

Use code FUN10 for 10% bonus credits

DocsreCAPTCHA v2

reCAPTCHA v2 API Reference

Solve reCAPTCHA v2 checkbox, invisible, and Enterprise widgets and submit the token as g-recaptcha-response.

Read Markdown (English)

The Captcha.fun reCAPTCHA v2 API accepts kind, url, siteKey and returns g-recaptcha-response token. Send the API_KEY header, create a solve with POST /v1/request, then poll GET /v2/response/{id} until ready is true.

What you’ll need

  • Your API key
  • The URL of the page where the challenge appears
  • The site key from the page
  • A proxy, if the result must come from your own IP (recap_v2_proxy)
Use kind

Good to Know

Pick the kind that matches the site: recap_v2 for the checkbox, recap_v2_invis for the invisible badge, or recap_v2_enterprise for Google Cloud Enterprise site keys.

Send the Challenge

Send the page details with your API key. You get a solve id back right away.

POSThttps://api.captcha.fun/v1/request
curl -X POST https://api.captcha.fun/v1/request \
  -H "API_KEY: CAPFUN-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
  "kind": "recap_v2",
  "url": "https://your-domain.example/login",
  "siteKey": "YOUR_RECAPTCHA_SITE_KEY"
}'

Response

Returns the solve id. Use it to get the result.

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "message": "Started Solving"
}
Request fields5 body fields · 3 required

Headers

NameTypeRequiredDescription
API_KEYstringYesYour API key
Content-TypestringYesapplication/json
APP_IDstringNoOptional app ID for request tracking

Body

NameTypeRequiredDescription
kindstringYesOne of recap_v2, recap_v2_proxy, recap_v2_invis, recap_v2_invis_proxy, recap_v2_enterprise, recap_v2_enterprise_proxy
urlstringYesPage URL where the challenge appears
siteKeystringYesSite key of the challenge
proxystringNoFor _proxy kinds: host:port or host:port:username:password
platformstringNoRequested platform label: windows (default) or mac

Wait for the Result

Use the solve id to fetch the result.

GEThttps://api.captcha.fun/v2/response/{id}

Poll every second until ready is true.

Example

curl -X GET https://api.captcha.fun/v2/response/550e8400-e29b-41d4-a716-446655440000 \
  -H "API_KEY: CAPFUN-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
  -H "Accept: application/json"

Response

{
  "ready": true,
  "status": "SUCCESS",
  "success": true,
  "userAgent": "RETURNED_USER_AGENT",
  "secUa": "RETURNED_SEC_CH_UA",
  "token": "03AFcWeA5KFNfU0hVp7KJ8iEQJb2TOdRW8n2b..."
}
Request and response fields7 response fields

Request

NameTypeRequiredDescription
idstring (UUID)YesPath parameter. The id from Create Solve
API_KEYstringYesHeader. Your API key

Response Fields

NameTypeRequiredDescription
readyboolean—true when the solve is finished (v2 only)
statusstring—PENDING while solving, then SUCCESS or FAILURE
successboolean—Whether the solve succeeded
userAgentstring—Value to send as User-Agent when using the result. Preserve it exactly
secUastring—Value to send as Sec-CH-UA when using the result
tokenstring—Solved token. Submit it as g-recaptcha-response
messagestring—Failure reason. Omitted on success

Submit the Token

  • Submit the token as the g-recaptcha-response field of the protected form, then verify it with Google’s siteverify endpoint and your secret key.
  • Tokens are single-use and expire after about two minutes. Submit right away, using the returned userAgent.

When using a successful result, preserve the returned userAgent as User-Agent and secUa as Sec-CH-UA.

Wrong or rejected result? Report the failed solve.

More from reCAPTCHA