Skip to content

API Overview

The uCaptcha API provides a unified interface for submitting CAPTCHA solving tasks across multiple providers. This page covers the fundamentals you need before making your first request.

All API requests are made to:

https://api.ucaptcha.net

All requests use the POST method with a JSON body. Set the Content-Type header to application/json.

Terminal window
curl -X POST https://api.ucaptcha.net/createTask \
-H "Content-Type: application/json" \
-d '{"clientKey": "YOUR_API_KEY", "task": { ... }}'

Authentication is handled via the clientKey field in the JSON request body — not through HTTP headers. Include your API key in every request.

{
"clientKey": "YOUR_API_KEY",
...
}

You can generate and manage API keys from your dashboard or the Telegram Mini App.

All responses return JSON. Every response includes an errorId field:

  • 0 — the request succeeded
  • 1 — an error occurred
{
"errorId": 0,
"taskId": "550e8400-e29b-41d4-a716-446655440000",
"status": "processing"
}

When a task is complete:

{
"errorId": 0,
"taskId": "550e8400-e29b-41d4-a716-446655440000",
"status": "ready",
"solution": {
"gRecaptchaResponse": "03AGdBq24PBCbwiDR..."
}
}
{
"errorId": 1,
"errorCode": "ERROR_KEY_DOES_NOT_EXIST",
"errorDescription": "The API key you provided does not exist in our system."
}

See the full list of error codes on the Error Codes page.

The API enforces a rate limit of 10,000 requests per 10-second window per IP address.

Rate limit information is included in every response via HTTP headers:

HeaderDescription
X-RateLimit-LimitMaximum requests allowed in the window
X-RateLimit-RemainingRequests remaining in the current window
X-RateLimit-ResetUnix timestamp when the window resets

When the limit is exceeded, the API returns HTTP 429 Too Many Requests.

Every CAPTCHA task moves through the following statuses:

StatusDescription
idleTask has been created but not yet picked up by a provider
processingTask is actively being solved
readyTask completed successfully; solution is available
failedTask failed; the provider could not solve the captcha

uCaptcha is a drop-in replacement for every major CAPTCHA solving service. Change only the base URL — all parameters, response formats, and error codes are identical.

ProviderMigration
2captcha / Anti-Captcha / CapSolver / CapMonsterSee Legacy API and createTask — these formats are our primary API
DeathByCaptchaSee DeathByCaptcha API/api/, /api/:id, /api/user
RiskByPassSee RiskByPass API/task/submit, /task/result/:id, /api/user/balance
EndpointDescription
createTaskSubmit a new CAPTCHA solving task
getTaskResultPoll for task status and retrieve the solution
getBalanceCheck your account balance
feedbackTaskReport solution quality (valid or invalid)
CallbacksReceive results via webhook instead of polling
Legacy API2captcha-compatible /in.php and /res.php endpoints
DeathByCaptcha APIDrop-in DBC compatibility layer
RiskByPass APIDrop-in RiskByPass compatibility layer