> ## Documentation Index
> Fetch the complete documentation index at: https://docs.roundproxies.com/llms.txt
> Use this file to discover all available pages before exploring further.

# OS-Targeting

> Route residential traffic through devices running a specific operating system.

OS-targeting routes requests through residential IPs whose exit device runs a specific operating system. This is useful when a target site serves different content or applies different checks to desktop and mobile visitors, or when the fingerprint your client presents should match the device the request appears to come from (for example, an Android user agent from an Android device).

<Note>
  OS-targeting is independent of location: it can be used on its own, with any geo-targeting level, and with ASN-targeting.
</Note>

## Targeting Format

Add the `os` parameter to your proxy username:

```
client-{CLIENT_ID}-os-{OS}-session-{SESSION_ID}
```

<ResponseField name="os" type="string" required="false">
  Operating system of the exit device. One of `windows`, `mac`, `linux`, `android` or `ios`. Case-insensitive.
</ResponseField>

| Operating system | Parameter    |
| ---------------- | ------------ |
| Windows          | `os-windows` |
| macOS            | `os-mac`     |
| Linux            | `os-linux`   |
| Android          | `os-android` |
| iOS              | `os-ios`     |

A few common spellings are accepted as aliases and normalised for you: `win` for `windows`, `macos` and `osx` for `mac`, `iphone` and `ipad` for `ios`.

## Combining With Other Targeting

`os` can be combined with `country`, `state`, `city` and `asn`. Place it after the location parameters and before the session ID:

```
client-{CLIENT_ID}-country-Germany-os-android-session-{SESSION_ID}
```

Mobile operating systems (`android`, `ios`) usually sit behind carrier networks, so they pair naturally with a carrier ASN. As with every extra constraint, the available IP pool shrinks — start with `country` plus `os` and refine only if needed.

## Example Request

<CodeGroup>
  ```python Python theme={null}
  import requests

  proxies = {
      'http': 'http://client-{CLIENT_ID}-country-Germany-os-android-session-fnzwtath:{PASSWORD}@residential.roundproxies.com:5000',
      'https': 'http://client-{CLIENT_ID}-country-Germany-os-android-session-fnzwtath:{PASSWORD}@residential.roundproxies.com:5000'
  }

  response = requests.get('https://api.ipify.org?format=json', proxies=proxies)
  print(response.json())
  ```

  ```bash cURL theme={null}
  curl -x "http://client-{CLIENT_ID}-country-Germany-os-android-session-fnzwtath:{PASSWORD}@residential.roundproxies.com:5000" \
    https://api.ipify.org?format=json
  ```
</CodeGroup>

## Dashboard

The residential proxy generator in your [dashboard](https://app.roundproxies.com/dashboard/residential) has an **Operating System** dropdown that adds the parameter for you, for both specific and random country targeting.

## Troubleshooting

* **`PX1002`** (`502`, no exit node available) — no live IPs match the requested OS together with your other constraints. Drop `city`, `state` or `asn` first, then try another OS.
* **`PX1004`** (`400`, unsupported targeting option) — the OS value is not one of the supported names listed above.
* See [Error Handling](/residentials/error-handling) for the full list of proxy errors.
