API Documentation
CapMonster-compatible REST API. Base URL: http://localhost:5000
Quick Start
Get up and running in under 5 minutes:
- Create a free account
- Copy your API key from the API Keys page
- Top up your balance via Billing
- Make your first API call below
Python example
import requests
r = requests.post('http://localhost:5000/createTask', json={
'clientKey': 'fx-your-api-key',
'task': {
'type': 'TurnstileTask',
'websiteURL': 'https://example.com',
'websiteKey': '0x4AAAAAAA...'
}
})
print(r.json())
Authentication
All API requests require your clientKey (API key). Find it on the API Keys page. Keys start with fx-.
| Field | Type | Description |
|---|---|---|
clientKey | string | Your unique API key — required in every request |
POST /createTask
Submit a CAPTCHA task for solving. The task is processed asynchronously — poll /getTaskResult for the result.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
clientKey | string | ✓ | Your API key |
task | object | ✓ | Task object (see Task Types) |
task.type | string | ✓ | One of the supported task type IDs |
Success response
{ "errorId": 0, "taskId": 123456 }
Example — Cloudflare Turnstile
{
"clientKey": "fx-your-api-key",
"task": {
"type": "TurnstileTask",
"websiteURL": "https://example.com/page",
"websiteKey": "0x4AAAAAAA..."
}
}
Example — Cloudflare WAF
{
"clientKey": "fx-your-api-key",
"task": {
"type": "CloudflareWAF",
"url": "https://target.com"
}
}
Example — Altcha
{
"clientKey": "fx-your-api-key",
"task": {
"type": "AltchaTask",
"websiteURL": "https://example.com/page"
}
}
POST /getTaskResult
Poll this endpoint after /createTask to retrieve the solved token. Retry every 2–3 seconds until status is "ready".
Request body
| Field | Type | Required | Description |
|---|---|---|---|
clientKey | string | ✓ | Your API key |
taskId | integer | ✓ | Task ID returned by /createTask |
Response when ready
{
"errorId": 0,
"status": "ready",
"solution": "token_string_here..."
}
Response when still processing
{ "errorId": 0, "status": "processing" }
POST /getBalance
Check your current account balance.
# Request
{ "clientKey": "fx-your-api-key" }
# Response
{ "errorId": 0, "balance": 5.2341 }
GET / POST /getUserAgent
Returns a recommended User-Agent string to use in your solver requests. No authentication required.
Response
{
"errorId": 0,
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ..."
}
Example
import requests
r = requests.get('http://localhost:5000/getUserAgent')
ua = r.json()['userAgent']
print(ua)
# Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ...
Task Types
| type | Captcha | Price / 1K | Success |
|---|---|---|---|
RecaptchaV2 |
reCAPTCHA v2 | $0.60 | 99% |
RecaptchaV3 |
reCAPTCHA v3 | $0.90 | 99% |
RecaptchaV2Enterprise |
reCAPTCHA v2 Enterprise | $1.00 | 97% |
RecaptchaV3Enterprise |
reCAPTCHA v3 Enterprise | $1.50 | 98% |
TurnstileTask |
Cloudflare Turnstile | $1.30 | 99% |
CloudflareWAF |
Cloudflare WAF | $1.30 | 99% |
GeeTestTask |
GeeTest | $1.20 | 98% |
FunCaptchaTask |
FunCaptcha | $1.20 | 97% |
AltchaTask |
Altcha | $0.20 | 99% |
AmazonWAF |
Amazon WAF | $1.40 | 99% |
DataDomeTask |
DataDome | $2.20 | 97% |
Error Codes
| errorId | errorCode | Description |
|---|---|---|
| 0 | — | Success |
| 1 | ERROR_KEY_DOES_NOT_EXIST | Invalid or missing API key |
| 2 | ERROR_ZERO_BALANCE | Insufficient balance |
| 3 | ERROR_NO_SUCH_CAPTCHA_TYPE | Unknown task type |
| 4 | ERROR_NO_SUCH_TASK_ID | Task not found or not yours |
| 5 | ERROR_CAPTCHA_UNSOLVABLE | Solver failed or unavailable |