# Using a proxy

When to solve through your own proxy and how to send it.

## When you need a proxy

Most sites accept a token solved from another IP address, so the proxyless names work for most tasks. Use your own proxy when the site checks that the token was solved from the same IP that submits it, or when a type needs it (DataDome, Cloudflare Challenge page).

## How to send it

Use the task type name without Proxyless and add the proxy fields to the task. You can send them separately or as one proxy string; the string is split for you.

```json
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "RecaptchaV2Task",
    "websiteURL": "https://example.com/login",
    "websiteKey": "6LcR_RsTAAAAAFJR_5ZdbQd0SMxL7yIDmSXH1-lo",
    "proxyType": "http",
    "proxyAddress": "1.2.3.4",
    "proxyPort": 8080,
    "proxyLogin": "user",
    "proxyPassword": "pass"
  }
}
```

```json
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "RecaptchaV2Task",
    "websiteURL": "https://example.com/login",
    "websiteKey": "6LcR_RsTAAAAAFJR_5ZdbQd0SMxL7yIDmSXH1-lo",
    "proxy": "http://user:pass@1.2.3.4:8080"
  }
}
```

## Proxy fields

| Name | Type | Required | Description |
|---|---|---|---|
| `proxyType` | String | Yes | http, https, socks4 or socks5. |
| `proxyAddress` | String | Yes | Proxy IP address or host name. |
| `proxyPort` | Integer | Yes | Proxy port. |
| `proxyLogin` | String | No | Proxy user name, if the proxy needs one. |
| `proxyPassword` | String | No | Proxy password, if the proxy needs one. |
| `proxy` | String |  | All proxy fields in one string, for example http://user:pass@1.2.3.4:8080. |

## Good to know

- The proxy must be reachable from the internet and stay up while the task runs.
- If the solver cannot connect, the task fails with ERROR_PROXY_CONNECTION_FAILED and is refunded.
- Missing proxyAddress or proxyPort on a proxy task returns ERROR_BAD_PROXY right away, free.
- Proxy fields sent with a proxyless name are removed.
- Proxy details are deleted when the task ends.


