No KYC — no ID, no selfie, no documents. Paid in crypto: BTC, USDT, USDC, ETH, SOL, LTC.
Language: English
Rent a port

API · rotation link, POST, timer

Mobile proxy IP rotation API: change the IP by link or API call

Every CellMast dedicated port comes with a rotation link you can open in a browser, a REST endpoint for scripts, and a timer for hands-off rotation. This page shows all three, with the limits and the responses.

Last updated: · 6 min read

# 1. change the IP of your port
$ curl "https://cellmast.com/api/v1/mobile/{port}/rotate?key=API_KEY&format=text"
# 2. send a request through the port
$ curl -x http://USERNAME:[email protected]:7777 https://api.ipify.org

Quick answer

How do I change the IP of a mobile proxy by link, API or timer?

With CellMast, open your port's rotation link, https://cellmast.com/api/v1/mobile/{port}/rotate?key=API_KEY, or call the same endpoint with POST and a Bearer key. The modem reconnects to the carrier and gets a new IP. Each rotation reconnects your port to the carrier and usually takes 5–15 seconds; the carrier may occasionally hand back the same IP: just rotate again. Rotation is included on every dedicated 4G/5G port, from $2.63/day, with no KYC and payment in crypto.

Rotation at a glance

Rotation linkGET https://cellmast.com/api/v1/mobile/{port}/rotate?key=API_KEY
Script callPOST /api/v1/mobile/{portId}/rotate with Authorization: Bearer API_KEY
TimerPATCH /api/v1/mobile/{portId} with rotation.mode = interval, from every 2 minutes to every 24 hours
What a rotation doesEach rotation reconnects your port to the carrier and usually takes 5–15 seconds; the carrier may occasionally hand back the same IP: just rotate again
Minimum gap30 seconds between two manual rotations of one port; earlier calls get HTTP 429 with Retry-After
ResponseNew IP, previous IP, rotation time, next allowed rotation
Same IP back?Possible: the carrier picks the address from its pool
CostIncluded on every dedicated port; no per-rotation fee
Key scopeAPI key with the proxies scope

The rotation link is a plain URL with your port ID (it looks like mob_2v8k1q; the client area shows each port's ready-made link) and an API key in it. Opening it, in a browser, a bookmark or a script, asks the modem to drop its carrier connection and attach again. The carrier then assigns an IP address, usually a different one.

Add &format=text to get only the new IP as plain text, which is handy in shell scripts. Treat the link like a password: anyone who has it can rotate your port, and the same key sent in an API call can also change your ports' settings, sub-users or IP allowlist. Create a separate key only for rotation links, keep the link out of shared documents and chat previews, and revoke the key in the client area if it leaks.

Rotate with the link (curl)
# Replace {port} with your port ID (e.g. mob_2v8k1q, not 7777) and API_KEY with your key
curl "https://cellmast.com/api/v1/mobile/{port}/rotate?key=API_KEY"

# Plain-text answer: just the new IP
curl "https://cellmast.com/api/v1/mobile/{port}/rotate?key=API_KEY&format=text"

How do I rotate from a script with the REST API?

Scripts should use POST with the key in the Authorization header, so the key does not end up in server logs or browser history. The response tells you the new IP and when the next rotation is allowed.

POST /api/v1/mobile/{portId}/rotate
curl -X POST "https://cellmast.com/api/v1/mobile/PORT_ID/rotate" \
  -H "Authorization: Bearer API_KEY"
Example response (200)
{
  "ip": "203.0.113.24",
  "previousIp": "198.51.100.7",
  "rotatedAt": "2026-10-13T09:41:07Z",
  "nextRotationAvailableAt": "2026-10-13T09:41:37Z"
}

The addresses and times in the example are illustrative. previousIp lets your code check whether the carrier really gave a new address.

What happens if I rotate too often?

A port accepts at most one manual rotation every 30 seconds. A call before that returns HTTP 429 with the error rotation_too_soon and a Retry-After header that gives the seconds to wait. Nothing breaks: the port keeps its current IP.

Rotating as fast as possible is rarely useful. During each reconnect the port carries no traffic, and a carrier can hand back the same address. The rotation strategy guide suggests intervals per task.

Example response (429)
HTTP/1.1 429 Too Many Requests
Retry-After: 22
Content-Type: application/json

{
  "error": {
    "code": "rotation_too_soon",
    "message": "Next rotation available in 22 seconds",
    "details": { "retryAfter": 22 },
    "requestId": "req_2b7c11"
  }
}

How do I set automatic rotation on a timer?

Set the port's rotation mode to interval and choose a number of minutes from 2 to 1,440 (every 2 minutes to every 24 hours). The timer then rotates the port without any call from you. Switch back to manual to stop it. You can also set the timer from the client area.

Rotate every 10 minutes
curl -X PATCH "https://cellmast.com/api/v1/mobile/PORT_ID" \
  -H "Authorization: Bearer API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"rotation": {"mode": "interval", "intervalMinutes": 10}}'

# back to manual rotation
curl -X PATCH "https://cellmast.com/api/v1/mobile/PORT_ID" \
  -H "Authorization: Bearer API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"rotation": {"mode": "manual", "intervalMinutes": null}}'

How do I rotate in Python or Node.js?

Both examples rotate the port and print the new IP; the Python example then sends a request through the port. The Python guide adds retries and a rotation helper.

Python (requests)
import requests

API = "https://cellmast.com/api/v1"
KEY = "API_KEY"
PORT_ID = "PORT_ID"
PROXY = "http://USERNAME:[email protected]:7777"

r = requests.post(f"{API}/mobile/{PORT_ID}/rotate",
                  headers={"Authorization": f"Bearer {KEY}"}, timeout=60)
if r.status_code == 429:
    print("too soon, retry after", r.headers.get("Retry-After"), "s")
else:
    r.raise_for_status()
    print("new IP:", r.json()["ip"])

print(requests.get("https://api.ipify.org",
                   proxies={"http": PROXY, "https": PROXY}, timeout=30).text)
Node.js 18+ (save as rotate.mjs)
// save as rotate.mjs (ES module), then: node rotate.mjs
const API = "https://cellmast.com/api/v1";
const res = await fetch(`${API}/mobile/PORT_ID/rotate`, {
  method: "POST",
  headers: { Authorization: "Bearer API_KEY" },
  signal: AbortSignal.timeout(60000),
});
if (res.status === 429) {
  console.log("retry after", res.headers.get("retry-after"), "s");
} else if (!res.ok) {
  throw new Error(`HTTP ${res.status}`);
} else {
  const { ip, previousIp } = await res.json();
  console.log(previousIp, "->", ip);
}

Can I move a port to another carrier, city or country?

Ask support. Need another country? Ask support: if a port is in stock there, we move your remaining days to it and settle the price difference through your balance (one move per billing period). The same applies to another carrier or city in the same country. After a move, host, port and password can change: read them again in the client area.

Can I see which IPs my port has used?

Yes. GET /api/v1/mobile/{portId}/ip-history lists the addresses assigned to the port with their times. Use it to check that rotations produce new addresses, to match your own logs, or to confirm that every address belongs to the carrier you chose. GET /api/v1/mobile/{portId}/usage shows daily traffic for information; data on a dedicated port is unlimited.

Does the rotating per-GB pool need this API?

No. The rotating mobile pool changes IP on its own: Each new connection gets an IP from the pool, usually a different one; to get a new IP on every request, send one request per connection (turn off keep-alive). You control it with the username, for example USERNAME-country-us-session-abc123-ttl-15 for a 15-minute sticky session. The rotation API is for dedicated ports, where one modem is yours and you decide when its IP changes.

Rotation: questions

How long does an IP change take on a mobile proxy?

On a CellMast dedicated port, usually 5–15 seconds: the modem disconnects from the carrier and attaches again, and the carrier assigns an address. During that time the port carries no traffic, so pause your requests until the API returns the new IP.

Is there a limit on the number of rotations?

Rotations cost nothing extra. The API sets one limit: at most one manual rotation every 30 seconds per port. A timer can be set from every 2 minutes to every 24 hours.

Why did I get the same IP after rotating?

Because the carrier chooses the address. Carriers share public IPv4 addresses among many subscribers through CGNAT, and a reconnect can land on the same one. Check previousIp in the response and rotate again after 30 seconds if you need a different address. See the CGNAT guide.

Only with people who may control the port. The link contains an API key: anyone with it can rotate your port, and the same key in an API call can also change your ports' settings, sub-users or IP allowlist. Use a separate key for rotation links, prefer the POST endpoint with the key in a header in scripts, and revoke the key in the client area if the link leaks.

Can I choose the next IP or keep an IP forever?

No. The carrier assigns addresses, so nobody can pick the next one, and a carrier may change an address on its own. If you need the same address for a long time, set rotation to manual and avoid reconnecting; if you need a fixed IP for an allow-list, a mobile proxy is not the right product.

Rotation included on every port

Dedicated 4G/5G ports from $2.63/day, unlimited data, rotation by link, API or timer. Pay in crypto.

Unlimited data

Rent a port