API referenceReferenceUsing proxies

Using proxies

Some captchas bind their answer to the address that asked for it. For those, the solve has to run through your proxy rather than ours, or the token is worth nothing when you submit it.

When you need one

The task type string tells you, and there is no second rule. A type ending ProxyLess runs on our own addresses and takes no proxy. A type without that suffix REQUIRES one, and a request that leaves it out comes back ERROR_INVALID_TASK_DATA. Either shape below satisfies that; you do not have to use the single string.

Task typeProxyWhy
ReCaptchaV2TaskProxyLessNoneThe token is not address bound.
ReCaptchaV2TaskRequiredThe suffix is the rule. Use this one when the site scores the asking address as well as the token.
AntiTurnstileTaskProxyLessNoneTurnstile tokens travel.
AntiCloudflareTaskRequiredThe clearance cookie is issued to one address and checked against it.
AntiAwsWafTaskRequiredUse this one when the rule set binds the token to an address. AntiAwsWafTaskProxyLess is the one that takes none.

Two ways to pass one

As one string

Put the whole thing in proxy. Any of these parse:

JSON

"proxy": "http:192.0.2.40:8080:user:pass"
"proxy": "socks5:192.0.2.40:1080:user:pass"
"proxy": "192.0.2.40:8080:user:pass"
"proxy": "http://user:pass@192.0.2.40:8080"
"proxy": "socks5://user:pass@192.0.2.40:1080"

With no scheme, http is assumed. With no user and password, the proxy has to accept us by address instead.

As separate fields

JSON

{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "AntiCloudflareTask",
    "websiteURL": "https://example.com",
    "proxyType": "http",
    "proxyAddress": "192.0.2.40",
    "proxyPort": 8080,
    "proxyLogin": "user",
    "proxyPassword": "pass"
  }
}
FieldTypeRequiredWhat it is
proxyTypeStringYeshttp, https, socks4 or socks5.
proxyAddressStringYesHostname or IP. A hostname is resolved at solve time.
proxyPortIntegerYesPort number.
proxyLoginStringNoUsername, where the proxy asks for one.
proxyPasswordStringNoPassword, where the proxy asks for one.

Pick one shape per task. Sending both is rejected with ERROR_INVALID_TASK_DATA rather than silently preferring one.

Proxies that authenticate by address

If your proxy has no username and password and instead allows a list of addresses, our solvers have to be on that list. The current set is on your dashboard under Settings, Proxy access. It changes rarely, and we give notice in the dashboard before it does.

What a bad proxy looks like

CodeUsually means
ERROR_PROXY_BANNEDThe target site blocks that address. Rotate it and retry.
ERROR_PROXY_CONNECT_REFUSEDWe could not reach the proxy. Check port and firewall.
ERROR_PROXY_AUTH_FAILEDUsername or password rejected by the proxy.
ERROR_INVALID_TASK_DATAThe proxy string did not parse. Compare it against the formats above.

None of these are billed. A task that never reached the target site does not cost a solve.

Last updated 21 September 2026