The ShadowProxy API lets you control your 4G proxies from your own programs: list your proxies and their access details, change the IP and get the new address back, read the IP history. It answers in JSON at https://shadowproxy.fr/api/v1.
It complements each proxy’s rotation link: one key covers all your proxies, and you also get their status and data usage. It gives no access to orders, payments or your personal details.
A question or a specific need? Write to us at contact@shadowproxy.fr.
1. Create a key
In your customer area, open My account, section API keys, then Create a key. Give it a name (for example “scraping script”). The key starts with sp_ and is shown only once: copy it right away. You can have up to 5 keys and delete one at any time; it stops working immediately. An e-mail lets you know each time a key is created.
2. Authenticate
Send the key in the Authorization header (or in the X-API-Key header):
curl https://shadowproxy.fr/api/v1/ping \
-H "Authorization: Bearer sp_YOUR_KEY"
# {"ok":true}
Messages are in your account’s language. To force one, add the header X-Lang: en or X-Lang: fr.
3. Available actions
| Method | Path | What it does |
|---|---|---|
GET | /api/v1/ping | Checks that the key works. |
GET | /api/v1/proxies | Lists your proxies, their status, access details and data usage. |
GET | /api/v1/proxies/{id} | One proxy in detail. |
POST | /api/v1/proxies/{id}/rotate | Changes the IP. With ?wait=1, returns the new IP once it is active. |
GET | /api/v1/proxies/{id}/ips | The proxy’s last 50 IPs, with their date. |
4. List your proxies
curl https://shadowproxy.fr/api/v1/proxies -H "Authorization: Bearer sp_YOUR_KEY"
{
"proxies": [
{
"id": "sp123456",
"name": "Proxy 4G 1",
"status": "online",
"online": true,
"ip": "37.165.12.34",
"network": "4G",
"signal": 3,
"http": "proxy.shadowproxy.fr:10001:sp123456:Password",
"socks5": "proxy.shadowproxy.fr:20001:sp123456:Password",
"lastIpChangeAt": "2026-11-10T09:12:44.000Z",
"data": { "periodStart": "2026-11-01", "periodEnd": "2026-12-01", "usedBytes": 5120000000, "includedGb": 200 },
"subscriptionEnd": "2026-12-01"
}
]
}
Proxy fields:
id: proxy identifier, used in the pathsname: its name, the one you gave it in the customer areastatus: online, offline, rotating (change in progress), rebooting or disabledip: current public IPhttp, socks5: access lines, in the host:port:username:password formatdata: current period, data used (bytes) and data included (GB)subscriptionEnd: end date of the subscriptionlastIpChangeAt: date of the last IP change
5. Change the IP
Without a parameter, the answer comes right away (code 202) and the change takes under 20 seconds. With ?wait=1, the answer comes once the new IP is active, with the address:
curl -X POST "https://shadowproxy.fr/api/v1/proxies/sp123456/rotate?wait=1" \
-H "Authorization: Bearer sp_YOUR_KEY"
# {"ok":true,"status":"done","ip":"78.240.12.34","message":"New IP assigned."}
6. Full Python example
import requests
API = "https://shadowproxy.fr/api/v1"
HEADERS = {"Authorization": "Bearer sp_YOUR_KEY"}
# Your proxies
proxies = requests.get(f"{API}/proxies", headers=HEADERS, timeout=30).json()["proxies"]
p = proxies[0]
print(p["name"], p["ip"], p["online"])
# New IP, waiting until it is active
r = requests.post(f"{API}/proxies/{p['id']}/rotate", params={"wait": 1}, headers=HEADERS, timeout=120)
print("New IP:", r.json().get("ip"))
# IP history (last 50)
ips = requests.get(f"{API}/proxies/{p['id']}/ips", headers=HEADERS, timeout=30).json()["ips"]
7. Errors
| Code | Error | Meaning |
|---|---|---|
401 | invalid_key | Key missing, wrong or deleted. |
404 | not_found | This proxy does not exist on your account. |
409 | busy | An IP change is already in progress on this proxy. |
429 | — | Too many requests: wait a little before trying again. |
502 | — | The IP change did not go through: try again in a moment. |
8. Limits
- 60 requests per minute per key.
- 30 IP changes per 10 minutes per key, and one at a time per proxy.
- Each IP change drops the connections open on that proxy for a few seconds: space them out if you keep long-lived connections.
9. Security
- Never publish your key (code repository, screenshot, forum): it gives access to your proxies.
- We only store a fingerprint of the key, never the key itself.
- A compromised key is deleted in one click in My account, API keys.
No proxy yet? Dedicated French 4G proxy, 200 GB per month, API included: €30 per month, no commitment.
Order a 4G proxy