- Destinations are limited to ports 80, 443, 8080
- Anything else is refused at the gateway, on both the HTTP and the SOCKS5 path. Without that rule the product is also an open mail relay and an SSH jump host, and the complaints land on the addresses every customer shares.
- An account may hold 300 connections open at once
- Past that the gateway refuses new ones until something closes; connections already running are never cut to make room. It is a limit on concurrency and not on throughput, and the distinction matters most at scale: session names are unlimited, so a pool of any size works through a few at a time without ever meeting this, while a job that opens every line at once meets it as soon as the pool is larger than this number. If you need more, ask — the number is a deployment setting, not a property of the network.
- There is no https:// proxy scheme
- As a proxy scheme, https:// means TLS to the proxy itself, and there is no TLS listener to speak it to. The protocol parameter still accepts the value, because it mirrors the grammar the network behind us publishes — so it is possible to build a line that has nothing to connect to. Use http:// or socks5://, each on its own port — take the port from the connection endpoint rather than assuming. None of this touches your destinations: https:// URLs are the normal case and ride a CONNECT tunnel over the http:// line, encrypted end to end. We cannot read them and do not want to.
- UDP is refused
- A SOCKS5 client asking for UDP ASSOCIATE, or for BIND, gets "command not supported" at the handshake. The path to the network is a TCP tunnel, so no answer at that handshake could make UDP work — and claiming it and then dropping the datagrams is worse than saying no.
- A proxy user’s password can be read back
- It comes back from GET /api/v1/proxy-users and from the connection endpoint, not only from the response that created it. That is a change: proxy users used to be credentials of ours and we stored only a digest, so a lost secret meant deleting and recreating. They are now accounts on the proxy network itself, which generates and holds the credentials, so there is nothing for us to withhold. The consequence worth knowing is the other direction: an API key with read scope can read every proxy password on the account, so scope a key per automation.
- A top-up is not instant at the gateway
- The gateway caches an account’s balance for about fifteen seconds. After a purchase, connections may be refused for a few seconds more before the new balance is seen. Nothing is lost and nothing needs reissuing — wait, then retry.
- Deleting a proxy user takes up to 120 seconds, and cannot be undone
- A deleted credential keeps working for a minute or two before the network stops accepting it — measured, polled every 25 seconds: still answering at 81 seconds, stopped by 107, and stopped for good after that. Do not read a timeout as proof it has died, either: a stalled connection is this network's generic failure and means nothing on its own. stopsServingWithinSeconds in the DELETE response is the figure to sleep for. What is immediate is the other half: it is final. The network generates the credentials, so there is nothing on our side to restore — create another and repaste it. The same thing happens by itself when a balance reaches zero.
- A listed city can be empty, and an empty one hangs
- GET /api/v1/locations returns what the network publishes, and a place appearing there is not a promise that it currently has addresses. When it does not, the connection is not refused — it stalls until your client times out, with no 407 and nothing in a log to search for. Measured: country-DE answered 3 of 3, country-DE-city-Munich 3 of 3, country-DE-state-Bavaria 3 of 3, and country-DE-city-Berlin 0 of 3, as did the state of the same name. Treat a timeout on a narrowly targeted line as "nothing there right now" and retry against the country, or a different city, before assuming your credentials or your client are wrong.
- Country is required, and city and state are exclusive
- Every connection names a country. Then a city or a state, never both — sending both is a request whose meaning depends on which one a parser reads last, so it is refused instead. Send the value the location catalogue gives you rather than a name you typed: names are letters, digits and underscores, spaces become underscores, and a place carrying an accent, a dash or an apostrophe cannot be expressed in a proxy username at all. Those are left out of the catalogue and counted, so you can see what is missing instead of guessing.
- A deleted proxy user keeps its name for ever
- Labels are unique across every proxy user an account has ever created, deleted ones included. That is deliberate — it is what keeps "scraper_prod spent 40 GB" unambiguous a year later — and it means a create-and-delete loop burns names permanently. Label by run rather than by role: scraper_prod_2026_09 can be created again, scraper_prod cannot.
- Usage is account-wide, and today has not settled
- usedBytes moves as traffic passes; billableBytes counts complete days only, so the two differ by however much of today has happened. Reconcile against billableBytes. Neither figure splits by proxy user, country or destination — the meter records bytes and a timestamp, and our privacy policy commits to not keeping the addresses you connect to.
- One account, many connections, one ceiling
- Up to 50 live proxy users and 10 live API keys per account, neither of them charged for. The gateway also caps how many connections one account may hold open at once, because every proxy user is another parallel channel spending the same balance.