Skip to content
ProxyHub

For developers

ProxyHub API

Everything you do in the customer area you can do from your scripts: list of proxies with credentials and current IP, IP change, renewal from your balance, protocol and automatic rotation. JSON responses, no library to install.

The key

Create the key in Settings → API in the customer area (up to 5 per account) and send it with every request in the Authorization header. The key covers all your proxies: treat it like a password.

curl https://app.proxyhub.it/api/v1/proxies \
  -H "Authorization: Bearer ph_XXXXXXXXXXXXXXXXXXXXXXXX"

Base URL

https://app.proxyhub.it/api/v1

Endpoints

GET/proxies

All your proxies, with credentials, current IP, status and expiry.

GET/proxies/{port}

One proxy.

PATCH/proxies/{port}

Change protocol (http or socks5), username, password or automatic rotation (minutes: 5, 10, 15, 30, 60, 180, 360, 720, 1440, or null to turn it off). Send only the fields to change.

curl -X PATCH https://app.proxyhub.it/api/v1/proxies/41170 \
  -H "Authorization: Bearer ph_…" \
  -H "Content-Type: application/json" \
  -d '{"protocol": "socks5", "auto_rotate_minutes": 30}'

POST/proxies/{port}/rotate

New IP. Returns the new IP.

POST/proxies/{port}/renew

Renew paying from your balance: plan is daily, weekly or monthly (trial only for a trial proxy); coupon optional.

curl -X POST https://app.proxyhub.it/api/v1/proxies/41170/renew \
  -H "Authorization: Bearer ph_…" \
  -H "Content-Type: application/json" \
  -d '{"plan": "monthly"}'

GET/balance

Balance in US dollars.

Example response

{
  "proxies": [
    {
      "port": 41170,
      "host": "sfeshg.com",
      "protocol": "http",
      "username": "ph_e12734",
      "password": "••••••••••",
      "url": "http://ph_e12734:••••••••••@sfeshg.com:41170",
      "status": "active",
      "online": true,
      "ip": "151.19.150.182",
      "country": "it",
      "carrier": "WindTre",
      "plan": "monthly",
      "expires_at": "2026-11-05T09:48:33.221Z",
      "auto_renew": false,
      "auto_rotate_minutes": null,
      "rotation_url": "https://sfeshg.com/r/…",
      "traffic_bytes": 1834021993,
      "created_at": "2026-10-05T09:48:33.221Z"
    }
  ]
}

Limits

  • 120 requests per minute per account.
  • IP change: at most one every 2 minutes per phone (the button and the rotation link count too).
  • Renewals: 10 per minute.

Errors

Errors always have this shape, with a stable code and a readable message:

{"error": "too_soon", "message": "The IP was changed less than 2 minutes ago. Wait and retry."}
401 unauthorizedmissing, unknown or revoked key
404 not_foundno proxy with that port on your account
400 invalidwrong parameters (the message says which)
402 insufficient_balancenot enough balance for the renewal
403 expiredproxy expired or blocked: renew it first
429 too_soonIP changed less than 2 minutes ago
429 rate_limitedtoo many requests
502 backendthe proxy server did not answer: retry shortly

Without a key: the rotation link

For the IP change alone you don't need a key: every proxy has a rotation link in its page, to open or call from your scripts.

From your phone: the Telegram bot

Link Telegram from your Profile and use /proxy, /ip, /rotate <port> and /balance in the chat with the bot.