Skip to content

Docs / Dedicated ports

Dedicated port setup.

A dedicated port is one mobile device held for your organisation for its term. This page covers connecting, changing the IP, the rotation link, the schedule and keeping the port. Proxy traffic by the GB is set up differently; see the main docs.

Connect

Every port has an HTTP connection and a SOCKS5 connection. On Partner network ports each protocol has its own login, so copy the set that matches your client. Use socks5h so DNS resolves through the port.

bashbash
# Copy both sets from Port details in the dashboard (My ports, then the port).
# HTTP and SOCKS5 may differ in host, port, username and password.
http://<http-username>:<http-password>@<http-host>:<http-port>
socks5h://<socks-username>:<socks-password>@<socks-host>:<socks-port>

curl -x 'http://<http-username>:<http-password>@<http-host>:<http-port>' https://api.portproof.org/v1/echo-ip

Rotate the IP

Press Rotate IP on the port page, or call the API with a key that holds ports:write. On a Partner network port the device reconnects to the carrier, which takes about a minute, so the API answers 202 with a status link after 30 seconds.

The rotation record decides: rotated true means a new IP, rotated false means the carrier gave the same IP back. Every attempt is in the rotation log. One change per 60 seconds; inside that window the API answers 429 with the seconds to wait.

bashbash
curl -X POST https://api.portproof.org/v1/ports/<port-id>/rotate \
  -H "Authorization: Bearer $PORTPROOF_KEY" -H 'Content-Type: application/json' \
  -H "Idempotency-Key: $(uuidgen)" -d '{"wait": true}'
# 200: the rotation record ("rotated": true with "new_ip4", or "rotated": false)
# 202: {"rotation_id": "rot_...", "status": "pending"}: read the status link until it answers 200
curl https://api.portproof.org/v1/ports/<port-id>/rotation/<rotation-id> -H "Authorization: Bearer $PORTPROOF_KEY"

Schedule

A schedule makes the device change its IP on a timer, on ports whose device supports it: the port page shows the Schedule control only then, and the API refuses it otherwise. It is set on the port page or through the API.

bashbash
curl -X PUT https://api.portproof.org/v1/ports/<port-id>/rotation \
  -H "Authorization: Bearer $PORTPROOF_KEY" -H 'Content-Type: application/json' \
  -H "Idempotency-Key: $(uuidgen)" -d '{"interval_s": 3600}'
# 0 = no scheduled change; otherwise 60 to 86400 seconds

Term and auto-renew

A partner-network port renews from the wallet shortly before its term ends, and only for the end date the partner network confirms. A reminder goes out 1 day before the end, and 3 days before as well unless auto-renew is on and the wallet covers the price; a wallet that is too short gets a top-up link.

Auto-renew from the wallet is on by default. Switching it off, or cancelling, ends the port at the end of its term; there is no grace period after that date. The port page shows the price of one more term, your wallet balance and a Renew button. Its Billing block lists what the port has cost so far, with the order and its invoice, when the next renewal runs and what it costs, and what happens when the term ends.

bashbash
# What one more term costs, and what the wallet holds
curl https://api.portproof.org/v1/ports/<port-id>/renew-quote -H "Authorization: Bearer $PORTPROOF_KEY"
# Renew now, paid from the wallet (402 insufficient_funds when the wallet is short)
curl -X POST https://api.portproof.org/v1/ports/<port-id>/renew -H "Authorization: Bearer $PORTPROOF_KEY" -H "Idempotency-Key: $(uuidgen)"
# Auto-renew on or off
curl -X PUT https://api.portproof.org/v1/ports/<port-id>/auto-renew -H "Authorization: Bearer $PORTPROOF_KEY" \
  -H 'Content-Type: application/json' -H "Idempotency-Key: $(uuidgen)" -d '{"enabled": false}'
# What the port has cost (the order and its invoice, every renewal and refund) and what happens at the end of the term
curl https://api.portproof.org/v1/ports/<port-id>/billing -H "Authorization: Bearer $PORTPROOF_KEY"

Replace or cancel

A Partner network port that stops working can get a new device from the port page: the port keeps its id and term, while host, ports and logins change. One replacement per 24 hours. Cancelling switches auto-renew off; the port works until the end of its term.

A partner-network port that does not work within 24 hours of delivery is replaced, or refunded in full to your wallet when no replacement is available. After those 24 hours there is no refund: a device that stops working is replaced in the same country when stock allows, and the carrier may differ. The full rules are in the refund policy.

← All docs · My ports

Dedicated port setup: connect, rotate, renew · Portproof