ProxioDocs
Proxies & Targeting

Targeting & Username Syntax

The master reference for Proxio Residential proxies, covering how the user:pass@host:port connection string works and how to chain country, state, city, sticky-session and smart-retry parameters directly inside the username.

Everything you control on a Proxio Residential proxy (the exit country, the state, the city, whether you hold one IP or rotate every request, how aggressively a connection retries) is expressed in one place: the username. There are no extra headers, no query strings, and no separate API to call. You build a username, send it as normal proxy Basic auth, and the gateway does the rest.

This page is about Residential proxies

Username targeting applies to the Residential pool served through the geo.proxio.cc:16666 gateway. ISP and Datacenter proxies are dedicated IPs with their own host, port and credentials and do not use username parameters. See ISP & Datacenter Proxies.

The connection string

Every request is routed through a standard proxy URL:

http://USERNAME:[email protected]:16666

It breaks down into five parts:

PartExampleWhat it is
Schemehttp://http:// / https:// for the HTTP proxy, or socks5h:// for SOCKS5. See Protocols & Ports.
Usernameabcxyz123defYour credential's username plus any targeting segments you append.
PasswordPASSWORDYour credential's password, exactly as shown in the dashboard.
Hostgeo.proxio.ccThe single Residential gateway hostname.
Port16666The single gateway port (HTTP/HTTPS and SOCKS5 share it).

The simplest possible request uses the bare username with no targeting, so you get a fresh residential IP from the global pool on every request:

curl -x http://abcxyz123def:[email protected]:16666 https://ipinfo.io

Where credentials come from

Your username is a 12-character random lowercase-alphanumeric string generated in the dashboard (for example abcxyz123def), and the password is shown alongside it. Open your Residential service's Sub-users tab to view or reset them.

The username grammar

To target a location or hold a session, you append hyphen-delimited segments to your base username. The full grammar is:

{base}[-region-{country}][-st-{state}][-city-{city}][-sessid-{sessionId}-sesstime-{minutes}[-retry-{N}[-retryrotate-1]]]

Every segment in square brackets is optional. The gateway reads them as key/value pairs, so their order does not technically matter; still, write them in the order above so usernames stay readable and match every example in these docs. What does matter is the geo hierarchy (country before state, state before city) and pairing sessid with sesstime.

SegmentExampleMeaningConstraints
{base}abcxyz123defYour credential's username.Generated for you; lowercase letters and digits.
-region-{country}-region-usExit country.2-letter country code from the dashboard list; slugged.
-st-{state}-st-californiaExit state or province.Requires a country. Slugged.
-city-{city}-city-losangelesExit city.Requires a state. Slugged.
-sessid-{sessionId}-sessid-myapp_9k2p7qPins one exit IP (a sticky session).Prefix must be letters, numbers or underscore only. Pair with sesstime.
-sesstime-{minutes}-sesstime-15The session window, in minutes. It slides: the session expires after this long without traffic.Integer 1 to 90. Dashboard default 10. Very long values may be capped by the gateway (currently 60).
-retry-{N}-retry-3Extra connection retries (smart rotation).N is 1 to 5. Works with or without a session.
-retryrotate-1-retryrotate-1Pull a fresh IP on each retry.Optional flag; pairs with -retry-.

Watch out at these points

State requires a country; city requires a state

-st- is only valid when you have already set -region-, and -city- is only valid when you have already set -st-. Appending a city without its parent state (or a state without its country) will not target where you expect.

Typos fail silently

The gateway ignores any segment key it does not recognize instead of returning an error. A typo like -regoin-us or an uppercase key like -Region-us simply vanishes: the request succeeds, but from a random location. If your targeting seems to be ignored, check the segment spelling first (keys are lowercase: region, st, city, sessid, sesstime, retry, retryrotate).

Session prefixes: letters, numbers and underscore only

The sessionId is your own prefix plus random characters. Keep the prefix to a-z, A-Z, 0-9 and _. A dash inside your prefix corrupts parsing, because dashes are how the gateway separates every segment of the username.

Geo values are slugged

Country, state and city values are lowercased with everything outside a-z0-9 stripped out. New York becomes newyork; Winston-Salem becomes winstonsalem. Full rules and a conversion table live on Geo-Targeting.

Worked examples

Each example builds on the one before it. abcxyz123def is the base username and PASSWORD is the credential password.

1. Bare, a fresh IP every request (auto rotation).

http://abcxyz123def:[email protected]:16666

2. Add a country to exit from the United States.

http://abcxyz123def-region-us:[email protected]:16666

3. Add state and city to exit from Los Angeles, California.

http://abcxyz123def-region-us-st-california-city-losangeles:[email protected]:16666

4. Hold a sticky session: the same Los Angeles IP for 15 minutes.

http://abcxyz123def-region-us-st-california-city-losangeles-sessid-myapp_9k2p7qz1m4vb1-sesstime-15:[email protected]:16666

5. Smart rotation: sticky, plus up to 3 connection retries that each rotate the IP.

http://abcxyz123def-region-us-sessid-myapp_9k2p7qz1m4vb1-sesstime-15-retry-3-retryrotate-1:[email protected]:16666

Putting it in a request

Drop the full username into any HTTP client. This example targets the United States and verifies the exit IP against ipinfo.io:

curl -x "http://abcxyz123def-region-us:[email protected]:16666" https://ipinfo.io
import requests

proxy = "http://abcxyz123def-region-us:[email protected]:16666"
r = requests.get("https://ipinfo.io", proxies={"http": proxy, "https": proxy})
print(r.json())
import { ProxyAgent } from "undici";

const proxyAuth = Buffer.from("abcxyz123def-region-us:PASSWORD").toString("base64");
const dispatcher = new ProxyAgent({
  uri: "http://geo.proxio.cc:16666",
  token: `Basic ${proxyAuth}`,
});
const res = await fetch("https://ipinfo.io", { dispatcher });
console.log(await res.json());

Keep going

On this page