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

# Rotate selected IPs

> Replace selected Static ISP proxy IPs and read the results.

A rotation replaces only the IPs you select, keeping each IP's country.

## Choose your IPs

List proxies with `GET /isp/subscriptions/{subscriptionId}/proxies`. Select 1–100 unique active public IPv4 addresses from the same subscription where `rotation_eligible` is `true`.

Check `rotations_remaining`: it must cover the entire selection. The API validates all IPs before acceptance; invalid requests use no rotation units.

## Submit and poll

> [!WARNING]
>
> This request changes live proxies. Existing connections through replaced IPs may stop. Replace the example IPs with your selected IPs, then save and deploy the new connection details.

```bash theme={null}
export SUBSCRIPTION_ID="25974f58-6a7a-4b0d-8dd7-a89133f50762"

curl --request POST \
  --url "https://app.proxy.doubledata.com/api/v1/isp/subscriptions/${SUBSCRIPTION_ID}/rotations" \
  --header "Authorization: Bearer ${DOUBLEDATA_API_KEY}" \
  --header "Content-Type: application/json" \
  --data '{"ips":["198.51.100.10","203.0.113.20"]}'
```

Acceptance returns `202`, a `Location` path, and `rotation.status_url`. Wait at least `Retry-After` seconds (`2` on acceptance), then poll the returned status URL with your API key. Use modest backoff between polls.

`accepted` and `processing` mean keep polling. `succeeded`, `partially_succeeded`, and `failed` are final. Wait for results before using replacement connections.

## Apply the results

Results follow the submitted IP order. Each successful item contains the complete replacement connection record. Failed items include an error and `retryable` flag.

One confirmed IP replacement uses one rotation unit. Partial batches use units only for successful replacements. Check `requested_count`, `succeeded_count`, `failed_count`, and each result before deploying or retrying.

Status requests return `200` for existing rotations, even on failure. Read `rotation.status` to determine the outcome.

See the [rotation status reference](https://doubledata.mintlify.site/api-reference/rotations/get-rotation-status.md) for full response examples.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.