Skip to content
easycaptcha.to
Documentation

API problems

Error response fields, problem types and actions to take when a request fails.

Error response body

HTTP errors return application/problem+json. The response follows RFC 9457 Problem Details. Its numeric status matches the HTTP status. Error responses use Cache-Control: no-store. HEAD errors have no response body.

HTTP 402 response body
{
  "type": "https://e.easycaptcha.to/insufficient_balance",
  "title": "Insufficient balance",
  "status": 402,
  "detail": "Your available credit is insufficient for this task.",
  "instance": "request_01m40t5ag0e008000000000005",
  "code": "insufficient_balance",
  "request_id": "request_01m40t5ag0e008000000000005"
}
FieldTypeMeaning
typestring, URIStable machine identifier, such as https://e.easycaptcha.to/insufficient_balance.
titlestringHuman-readable summary. Do not use it to select program behavior.
statusintegerHTTP status. Absent in an embedded task error.
detailstringExplanation of this particular failure.
instancerequest TypeIDIdentifier for this occurrence, suitable for support. It is not a lookup URL.
codestringShort problem identifier.
request_idrequest TypeIDThe same value as instance.

Handling failures

Match type for program behavior. Ignore unknown extension fields and fall back to the HTTP status for an unknown problem type. Keep request_id for support.

The stable type URL redirects to its documentation. Opening it manually is useful; clients should not fetch type or instance values automatically.

A successful task lookup can return HTTP 200 with status="failed" and an embedded problem in error. That problem has the same fields except numeric status. The task's status remains a lifecycle string.

A lost connection with no response is a transport failure. It has no Problem Details body and does not prove that a write failed. Avoid automatically repeating task submissions after an ambiguous timeout.

Problem types

CodeHTTP statusMeaning
invalid_request400A field, identifier, query parameter or JSON body is invalid.
invalid_credentials401The API key is absent, invalid or revoked.
insufficient_balance402Available credit cannot cover the requested task.
forbidden403Your account does not have permission for this operation or package.
account_suspended403The account is suspended.
not_found404The route or resource is unavailable. Private resources owned by another account also return this status.
task_not_found404The task is unknown, belongs to another account or is no longer retained.
task_expired404The task has passed its availability window.
method_not_allowed405The route does not accept this HTTP method.
conflict409The operation conflicts with the resource's current state. An example is changing previously recorded feedback.
task_failed409The requested operation cannot proceed because the task failed. A task snapshot can also carry this problem inside error.
payload_too_large413The request body exceeds the endpoint's size limit.
unsupported_media_type415The request uses a Content-Type the endpoint does not accept.
rate_limited429A request rate or account concurrency limit was reached.
internal_error500The service encountered an unexpected error.
bad_gateway502The API could not obtain a usable response from a dependency.
service_unavailable503The service or a required dependency cannot currently serve the request.
gateway_timeout504The request exceeded a gateway waiting deadline.

Get started with easycaptcha

Build your next integration with easycaptcha.

Create an account, get your API key, and start submitting hCaptcha jobs. Use typed Python and JavaScript SDKs or integrate directly over HTTP.

Create an accountExplore the API

Prepaid credit. Check pricing before submitting paid tasks.