> For the complete documentation index, see [llms.txt](https://docs.apexsolutions.lol/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.apexsolutions.lol/api-reference/friendlycaptcha.md).

# FriendlyCaptcha

Solve the FriendlyCaptcha v2 proof-of-work challenge and get a frc\_token.

Solves the FriendlyCaptcha v2 challenge for a page protected by a FriendlyCaptcha site key and returns a `frc_token`. The token is submitted to the site's own backend, which validates it with FriendlyCaptcha (siteverify).

### What you get back

The response carries the `token` under `result`. Tokens are single-use and short-lived, and must be submitted to the site that owns the `sitekey`.

### Proxy

A **proxy is required** - the solver always runs through yours, never from Apex's servers.

## Solve the FriendlyCaptcha challenge

> Fetches the solve context for the site key, activates a session,\
> obtains a quote, solves the BLAKE3 proof-of-work, and redeems it with\
> the behavioral signals - returning a \`frc\_token\`.<br>

```json
{"openapi":"3.0.3","info":{"title":"FriendlyCaptcha","version":"1.0.0"},"tags":[{"name":"FriendlyCaptcha","description":"Solves the FriendlyCaptcha v2 challenge for a page protected by a\nFriendlyCaptcha site key and returns a `frc_token`. The token is\nsubmitted to the site's own backend, which validates it with\nFriendlyCaptcha (siteverify).\n\n## What you get back\n\nThe response carries the `token` under `result`. Tokens are single-use\nand short-lived, and must be submitted to the site that owns the\n`sitekey`.\n\n## Proxy\n\nA **proxy is required** - the solver always runs through yours, never\nfrom Apex's servers.\n"}],"servers":[{"url":"https://fc.apexsolutions.lol"}],"paths":{"/payload":{"post":{"tags":["FriendlyCaptcha"],"summary":"Solve the FriendlyCaptcha challenge","description":"Fetches the solve context for the site key, activates a session,\nobtains a quote, solves the BLAKE3 proof-of-work, and redeems it with\nthe behavioral signals - returning a `frc_token`.\n","parameters":[{"name":"Content-Type","in":"header","required":true,"description":"The Content-Type of the request body.","schema":{"type":"string","enum":["application/json"]}},{"name":"Authorization","in":"header","required":true,"description":"Your API key for authentication.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FriendlyCaptchaSolveRequest"}}}},"responses":{"200":{"description":"Challenge solved. The frc_token is under `result`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FriendlyCaptchaSolveResponse"}}}},"400":{"description":"Missing or invalid request. See the error envelope for the reason.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Proxy connection failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"FriendlyCaptchaSolveRequest":{"type":"object","required":["params","proxy"],"properties":{"params":{"type":"object","required":["sitekey"],"properties":{"sitekey":{"type":"string","description":"The public FriendlyCaptcha site key (`FCMU...`) embedded in the page."}}},"proxy":{"type":"string","description":"Required. Your proxy - the solver always routes through it, never from Apex's servers."}}},"FriendlyCaptchaSolveResponse":{"type":"object","properties":{"solve_id":{"type":"string","description":"Identifier of the solve."},"status":{"type":"string","description":"Always `succeeded` on a 200."},"provider":{"type":"string","description":"Always `friendlycaptcha`."},"result":{"type":"object","properties":{"token":{"type":"string","description":"The frc_token. Submit it to the site's backend for validation."}}}}},"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}}}}}
```
