No KYC — no ID, no selfie, no documents · Pay in crypto: BTC, USDT, USDC, ETH, SOL, LTC
Buy with crypto

API reference

Mobile ports and IP rotation

Dedicated 4G/5G ports: change the IP now or on a timer, use the rotation link, move a port to another country or carrier, read the IP history and the daily traffic.

Last updated: · 9 min read

Endpoints on this page

  • GET /v1/mobile: List mobile ports
  • GET /v1/mobile/{portId}: Get a mobile port
  • PATCH /v1/mobile/{portId}: Rename, toggle auto-renew, or configure automatic rotation
  • POST /v1/mobile/{portId}/rotate: Change the IP now
  • GET /v1/mobile/{portId}/rotate: Rotation link (GET with API key in the query string)
  • POST /v1/mobile/{portId}/relocate: Move the port to another country, carrier or city
  • POST /v1/mobile/{portId}/reset-password: Generate a new proxy password for the port
  • GET /v1/mobile/{portId}/ip-history: IPs assigned to the port
  • GET /v1/mobile/{portId}/usage: Daily traffic through the port (bandwidth is unlimited; for information)
  • GET /v1/catalog/countries/{countryCode}/carriers: Mobile carriers with available 4G/5G ports in a country

Base URL https://namelessproxy.com/api/v1. Authentication, errors and limits: see the API overview.

List mobile ports

GET/v1/mobile

Authentication: API key in the Authorization: Bearer API_KEY header.

Response 200 OK

{
  "data": [
    {
      "id": "mob_2v8k1q",
      "label": "NG MTN #1",
      "status": "active",
      "country": "NG",
      "city": null,
      "carrier": "mtn",
      "carrierName": "MTN",
      "networkType": "4G",
      "currentIp": "172.58.14.201",
      "ipChangedAt": "2026-10-05T14:03:11Z",
      "endpoint": {
        "host": "gw.namelessproxy.com",
        "httpPort": 7777,
        "socksPort": 7778
      },
      "username": "USERNAME",
      "password": "PASSWORD",
      "rotation": {
        "mode": "interval",
        "intervalMinutes": 10
      },
      "minRotationIntervalSeconds": 30,
      "rotationLink": "https://namelessproxy.com/api/v1/mobile/mob_2v8k1q/rotate?key=API_KEY",
      "planId": "mob-30d",
      "autoRenew": false,
      "createdAt": "2026-10-05T14:03:11Z",
      "expiresAt": "2026-11-04T14:03:11Z"
    }
  ]
}

Code examples

curl
curl -s "https://namelessproxy.com/api/v1/mobile" \
  -H "Authorization: Bearer $API_KEY"
Python
import os
import requests

API = "https://namelessproxy.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.get(f"{API}/mobile", headers=HEADERS, timeout=30)
r.raise_for_status()
print(r.json())
Node.js
// Node.js 18+ (built-in fetch), ES module
const API = 'https://namelessproxy.com/api/v1';

const res = await fetch(`${API}/mobile`, {
  headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());

Get a mobile port

GET/v1/mobile/{portId}

Authentication: API key in the Authorization: Bearer API_KEY header.

Parameters

NameInTypeRequiredDescription
portIdpathstringYes—

Response 200 OK

{
  "id": "mob_2v8k1q",
  "label": "NG MTN #1",
  "status": "active",
  "country": "NG",
  "city": null,
  "carrier": "mtn",
  "carrierName": "MTN",
  "networkType": "4G",
  "currentIp": "172.58.14.201",
  "ipChangedAt": "2026-10-05T14:03:11Z",
  "endpoint": {
    "host": "gw.namelessproxy.com",
    "httpPort": 7777,
    "socksPort": 7778
  },
  "username": "USERNAME",
  "password": "PASSWORD",
  "rotation": {
    "mode": "interval",
    "intervalMinutes": 10
  },
  "minRotationIntervalSeconds": 30,
  "rotationLink": "https://namelessproxy.com/api/v1/mobile/mob_2v8k1q/rotate?key=API_KEY",
  "planId": "mob-30d",
  "autoRenew": false,
  "createdAt": "2026-10-05T14:03:11Z",
  "expiresAt": "2026-11-04T14:03:11Z"
}

Code examples

curl
curl -s "https://namelessproxy.com/api/v1/mobile/mob_2v8k1q" \
  -H "Authorization: Bearer $API_KEY"
Python
import os
import requests

API = "https://namelessproxy.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.get(f"{API}/mobile/mob_2v8k1q", headers=HEADERS, timeout=30)
r.raise_for_status()
print(r.json())
Node.js
// Node.js 18+ (built-in fetch), ES module
const API = 'https://namelessproxy.com/api/v1';

const res = await fetch(`${API}/mobile/mob_2v8k1q`, {
  headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());

Rename, toggle auto-renew, or configure automatic rotation

PATCH/v1/mobile/{portId}

Authentication: API key in the Authorization: Bearer API_KEY header.

Parameters

NameInTypeRequiredDescription
portIdpathstringYes—

Request body

FieldTypeRequiredDescription
labelstringNomax. 60 characters
autoRenewbooleanNo—
rotationobjectNo—
Example: Auto Rotate
{
  "rotation": {
    "mode": "interval",
    "intervalMinutes": 10
  }
}
Example: Manual
{
  "rotation": {
    "mode": "manual",
    "intervalMinutes": null
  }
}

Response 200 OK

{
  "id": "mob_2v8k1q",
  "label": "NG MTN #1",
  "status": "active",
  "country": "NG",
  "city": null,
  "carrier": "mtn",
  "carrierName": "MTN",
  "networkType": "4G",
  "currentIp": "172.58.14.201",
  "ipChangedAt": "2026-10-05T14:03:11Z",
  "endpoint": {
    "host": "gw.namelessproxy.com",
    "httpPort": 7777,
    "socksPort": 7778
  },
  "username": "USERNAME",
  "password": "PASSWORD",
  "rotation": {
    "mode": "interval",
    "intervalMinutes": 10
  },
  "minRotationIntervalSeconds": 30,
  "rotationLink": "https://namelessproxy.com/api/v1/mobile/mob_2v8k1q/rotate?key=API_KEY",
  "planId": "mob-30d",
  "autoRenew": false,
  "createdAt": "2026-10-05T14:03:11Z",
  "expiresAt": "2026-11-04T14:03:11Z"
}

Code examples

curl
curl -s -X PATCH "https://namelessproxy.com/api/v1/mobile/mob_2v8k1q" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"rotation":{"mode":"interval","intervalMinutes":10}}'
Python
import os
import requests

API = "https://namelessproxy.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.patch(f"{API}/mobile/mob_2v8k1q", headers=HEADERS, json={"rotation": {"mode": "interval", "intervalMinutes": 10}}, timeout=30)
r.raise_for_status()
print(r.json())
Node.js
// Node.js 18+ (built-in fetch), ES module
const API = 'https://namelessproxy.com/api/v1';

const res = await fetch(`${API}/mobile/mob_2v8k1q`, {
  method: 'PATCH',
  headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({ rotation: { mode: 'interval', intervalMinutes: 10 } }),
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());

Change the IP now

POST/v1/mobile/{portId}/rotate

Reconnects the modem to get a new carrier IP. Usually 5–15 s. Limited to one rotation every 30 seconds → 429 rotation_too_soon with Retry-After. The new IP is not guaranteed to differ (carrier CGNAT pools can hand back the same IP).

Authentication: API key in the Authorization: Bearer API_KEY header.

Parameters

NameInTypeRequiredDescription
portIdpathstringYes—

Response 200 OK

{
  "ip": "172.58.14.201",
  "previousIp": "172.58.9.77",
  "rotatedAt": "2026-10-05T14:03:11Z",
  "nextRotationAvailableAt": "2026-10-05T14:03:41Z"
}

Code examples

curl
curl -s -X POST "https://namelessproxy.com/api/v1/mobile/mob_2v8k1q/rotate" \
  -H "Authorization: Bearer $API_KEY"
Python
import os
import requests

API = "https://namelessproxy.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.post(f"{API}/mobile/mob_2v8k1q/rotate", headers=HEADERS, timeout=30)
r.raise_for_status()
print(r.json())
Node.js
// Node.js 18+ (built-in fetch), ES module
const API = 'https://namelessproxy.com/api/v1';

const res = await fetch(`${API}/mobile/mob_2v8k1q/rotate`, {
  method: 'POST',
  headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());

GET/v1/mobile/{portId}/rotate

Same as POST, for scripts and bookmarks: GET https://namelessproxy.com/api/v1/mobile/{portId}/rotate?key=API_KEY. The key needs the proxies scope. format=text returns the new IP as text/plain.

Authentication: API key in the key query parameter (scope proxies), so the link works from a bookmark.

Parameters

NameInTypeRequiredDescription
keyquerystringYesYour API key (scope proxies).
portIdpathstringYes—
formatqueryjson · textNodefault json

Response 200 OK

{
  "ip": "172.58.14.201",
  "previousIp": "172.58.9.77",
  "rotatedAt": "2026-10-05T14:03:11Z",
  "nextRotationAvailableAt": "2026-10-05T14:03:41Z"
}

Code examples

Move the port to another country, carrier or city

POST/v1/mobile/{portId}/relocate

Moves the subscription to a free modem matching the request; the remaining time is kept. Host, ports and credentials may change. The port is provisioning until the new modem is online (usually < 2 min). 409 location_unavailable when no modem is free there (list availability with GET /v1/catalog/countries/{countryCode}/carriers).

Authentication: API key in the Authorization: Bearer API_KEY header.

Parameters

NameInTypeRequiredDescription
portIdpathstringYes—

Request body

FieldTypeRequiredDescription
countrystringYesISO 3166-1 alpha-2, upper case.
carrierstringYes—
citystring, nullableNo—
Example
{
  "country": "NG",
  "carrier": "mtn"
}

Response 202 Accepted

{
  "id": "mob_2v8k1q",
  "label": "NG MTN #1",
  "status": "active",
  "country": "NG",
  "city": null,
  "carrier": "mtn",
  "carrierName": "MTN",
  "networkType": "4G",
  "currentIp": "172.58.14.201",
  "ipChangedAt": "2026-10-05T14:03:11Z",
  "endpoint": {
    "host": "gw.namelessproxy.com",
    "httpPort": 7777,
    "socksPort": 7778
  },
  "username": "USERNAME",
  "password": "PASSWORD",
  "rotation": {
    "mode": "interval",
    "intervalMinutes": 10
  },
  "minRotationIntervalSeconds": 30,
  "rotationLink": "https://namelessproxy.com/api/v1/mobile/mob_2v8k1q/rotate?key=API_KEY",
  "planId": "mob-30d",
  "autoRenew": false,
  "createdAt": "2026-10-05T14:03:11Z",
  "expiresAt": "2026-11-04T14:03:11Z"
}

Code examples

curl
curl -s -X POST "https://namelessproxy.com/api/v1/mobile/mob_2v8k1q/relocate" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"country":"NG","carrier":"mtn"}'
Python
import os
import requests

API = "https://namelessproxy.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.post(f"{API}/mobile/mob_2v8k1q/relocate", headers=HEADERS, json={"country": "NG", "carrier": "mtn"}, timeout=30)
r.raise_for_status()
print(r.json())
Node.js
// Node.js 18+ (built-in fetch), ES module
const API = 'https://namelessproxy.com/api/v1';

const res = await fetch(`${API}/mobile/mob_2v8k1q/relocate`, {
  method: 'POST',
  headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({ country: 'NG', carrier: 'mtn' }),
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());

Generate a new proxy password for the port

POST/v1/mobile/{portId}/reset-password

Authentication: API key in the Authorization: Bearer API_KEY header.

Parameters

NameInTypeRequiredDescription
portIdpathstringYes—

Response 200 OK

{
  "id": "mob_2v8k1q",
  "label": "NG MTN #1",
  "status": "active",
  "country": "NG",
  "city": null,
  "carrier": "mtn",
  "carrierName": "MTN",
  "networkType": "4G",
  "currentIp": "172.58.14.201",
  "ipChangedAt": "2026-10-05T14:03:11Z",
  "endpoint": {
    "host": "gw.namelessproxy.com",
    "httpPort": 7777,
    "socksPort": 7778
  },
  "username": "USERNAME",
  "password": "PASSWORD",
  "rotation": {
    "mode": "interval",
    "intervalMinutes": 10
  },
  "minRotationIntervalSeconds": 30,
  "rotationLink": "https://namelessproxy.com/api/v1/mobile/mob_2v8k1q/rotate?key=API_KEY",
  "planId": "mob-30d",
  "autoRenew": false,
  "createdAt": "2026-10-05T14:03:11Z",
  "expiresAt": "2026-11-04T14:03:11Z"
}

Code examples

curl
curl -s -X POST "https://namelessproxy.com/api/v1/mobile/mob_2v8k1q/reset-password" \
  -H "Authorization: Bearer $API_KEY"
Python
import os
import requests

API = "https://namelessproxy.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.post(f"{API}/mobile/mob_2v8k1q/reset-password", headers=HEADERS, timeout=30)
r.raise_for_status()
print(r.json())
Node.js
// Node.js 18+ (built-in fetch), ES module
const API = 'https://namelessproxy.com/api/v1';

const res = await fetch(`${API}/mobile/mob_2v8k1q/reset-password`, {
  method: 'POST',
  headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());

IPs assigned to the port

GET/v1/mobile/{portId}/ip-history

Authentication: API key in the Authorization: Bearer API_KEY header.

Parameters

NameInTypeRequiredDescription
portIdpathstringYes—
pagequeryintegerNo≥ 1, default 1
perPagequeryintegerNo1–100, default 20

Response 200 OK

{
  "data": [
    {
      "ip": "172.58.14.201",
      "assignedAt": "2026-10-05T14:03:11Z",
      "releasedAt": null,
      "trigger": "manual"
    }
  ],
  "pagination": {
    "page": 1,
    "perPage": 20,
    "total": 1,
    "totalPages": 1
  }
}

Code examples

curl
curl -s "https://namelessproxy.com/api/v1/mobile/mob_2v8k1q/ip-history" \
  -H "Authorization: Bearer $API_KEY"
Python
import os
import requests

API = "https://namelessproxy.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.get(f"{API}/mobile/mob_2v8k1q/ip-history", headers=HEADERS, timeout=30)
r.raise_for_status()
print(r.json())
Node.js
// Node.js 18+ (built-in fetch), ES module
const API = 'https://namelessproxy.com/api/v1';

const res = await fetch(`${API}/mobile/mob_2v8k1q/ip-history`, {
  headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());

Daily traffic through the port (bandwidth is unlimited; for information)

GET/v1/mobile/{portId}/usage

Authentication: API key in the Authorization: Bearer API_KEY header.

Parameters

NameInTypeRequiredDescription
portIdpathstringYes—
fromquerystring (date)NoFirst day (UTC), inclusive. Default = 29 days before to.
toquerystring (date)NoLast day (UTC), inclusive. Default = today. Maximum range 366 days.

Response 200 OK

{
  "from": "2026-10-04",
  "to": "2026-10-05",
  "totalBytes": 2350000000,
  "totalRequests": 48210,
  "points": [
    {
      "date": "2026-10-04",
      "bytes": 1200000000,
      "requests": 24800
    },
    {
      "date": "2026-10-05",
      "bytes": 1150000000,
      "requests": 23410
    }
  ],
  "byCountry": [
    {
      "country": "NG",
      "bytes": 2350000000
    }
  ]
}

Code examples

curl
curl -s "https://namelessproxy.com/api/v1/mobile/mob_2v8k1q/usage" \
  -H "Authorization: Bearer $API_KEY"
Python
import os
import requests

API = "https://namelessproxy.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.get(f"{API}/mobile/mob_2v8k1q/usage", headers=HEADERS, timeout=30)
r.raise_for_status()
print(r.json())
Node.js
// Node.js 18+ (built-in fetch), ES module
const API = 'https://namelessproxy.com/api/v1';

const res = await fetch(`${API}/mobile/mob_2v8k1q/usage`, {
  headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());

Mobile carriers with available 4G/5G ports in a country

GET/v1/catalog/countries/{countryCode}/carriers

Public: no API key needed.

Parameters

NameInTypeRequiredDescription
countryCodepathstringYesISO 3166-1 alpha-2, upper case.

Response 200 OK

{
  "data": [
    {
      "id": "mtn",
      "name": "MTN",
      "networkTypes": [
        "4G",
        "5G"
      ],
      "available": true,
      "cities": []
    }
  ]
}

Code examples

curl
curl -s "https://namelessproxy.com/api/v1/catalog/countries/US/carriers"
Python
import os
import requests

API = "https://namelessproxy.com/api/v1"

r = requests.get(f"{API}/catalog/countries/US/carriers", timeout=30)
r.raise_for_status()
print(r.json())
Node.js
// Node.js 18+ (built-in fetch), ES module
const API = 'https://namelessproxy.com/api/v1';

const res = await fetch(`${API}/catalog/countries/US/carriers`);
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());

From $0.53/GB · no KYC

Buy proxies