Skip to content

Use code FUN10 for 10% bonus credits

DocsFriendly Captcha

Friendly Captcha API Reference

Solve Friendly Captcha proof-of-work widgets and submit the solution with the protected form.

Read Markdown (English)

The Captcha.fun Friendly Captcha API accepts kind, url, siteKey and returns frc-captcha-solution value. 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
  • Optional: friendlyVersion, friendlyCdnOrigin
  • A proxy, if the result must come from your own IP (friendly_captcha_proxy)
Use kind

Good to Know

Returns frc-captcha-solution for v1 widgets and frc-captcha-response for v2. Set friendlyVersion to the site’s widget line; add -eu for EU-region keys.

Pass friendlyCdnOrigin if the site serves the widget from its own origin instead of the public CDN.

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": "friendly_captcha",
  "url": "https://your-domain.example/login",
  "siteKey": "YOUR_FRIENDLY_CAPTCHA_SITE_KEY"
}'

Response

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

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

Headers

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

Body

NameTypeRequiredDescription
kindstringYesOne of friendly_captcha, friendly_captcha_proxy
urlstringYesPage URL where the challenge appears
siteKeystringYesSite key of the challenge
friendlyVersionstringNoWidget line: v1 (default), v2, v1-eu, or v2-eu. Must match the site
friendlyCdnOriginstringNoWidget script origin for self-hosted or EU sites. Omit for the public CDN
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": "e8e1a897de2ea1fa5db0d2fd8.ABCdEF.1735689600"
}
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 value: frc-captcha-solution (v1) or frc-captcha-response (v2)
messagestring—Failure reason. Omitted on success

Submit the Token

  • Submit the value under the field name the site expects (frc-captcha-solution for v1, frc-captcha-response for v2), then verify it server-side with your Friendly Captcha API key.
  • Solutions are single-use and expire roughly five minutes after minting — submit them immediately.

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.