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.

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.
-st-{state}-st-caExit state or province.Requires a country. A code, not a slugged name, see Geo-Targeting.
-city-{city}-city-losangelesExit city.Requires a country; the state is optional.
-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.
-retry-{N}-retry-3Extra connection retries (smart rotation).N is 1 to 5. Off unless you set it. Works with or without a session.
-retryrotate-1-retryrotate-1Give each retry of a sticky session a fresh IP.Off unless you set it. Needs -retry- and a sessid.

The three geo segments, their slugging rules and how they combine are covered in full on Geo-Targeting.

Watch out at these points

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 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.

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-ca-city-losangeles:[email protected]:16666

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

http://abcxyz123def-region-us-st-ca-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