Sessions & rotation

Choose a fresh IP on every request (rotating) or hold a single IP across many requests (sticky). This is controlled by the -session parameter you append to your username.

i
How it works. Sessions are set on the username, dash-separated, alongside your other targeting parameters. Your password never changes. Omit -session for a new IP each request, or keep the same -session-<id> to reuse one IP.

Rotating sessions

For rotating traffic, omit -session, or send a new value each request. You get a different IP on every request, which suits high-volume scraping where each request should look independent.

Two equivalent approaches:

  • Omit -session entirely. Every request rotates to a fresh IP automatically.
  • Send a unique -session value each time (for example a random string or an incrementing counter). Each new value maps to a new IP.

In this example there is no session parameter, so each call goes out on a different IP:

# Two requests, two different exit IPs (rotating)
curl -x "http://USERNAME-country-us:[email protected]:10000" https://api.ipify.org
curl -x "http://USERNAME-country-us:[email protected]:10000" https://api.ipify.org

A fresh random session value per request also rotates:

# A new -session value each time = a new IP each time
curl -x "http://USERNAME-country-us-session-$RANDOM:[email protected]:10000" https://api.ipify.org

Sticky sessions

To hold the same IP across multiple requests, pick a session id and keep sending it unchanged. The same -session-<id> value maps to the same IP for the life of the session. Use sticky sessions when you need continuity, such as logging in, browsing behind a session cookie, or completing a multi-step flow that must come from one IP.

Here the same -session-abc123 on both requests reuses one IP:

# Same -session value = same exit IP across requests (sticky)
curl -x "http://USERNAME-country-us-session-abc123:[email protected]:10000" https://api.ipify.org
curl -x "http://USERNAME-country-us-session-abc123:[email protected]:10000" https://api.ipify.org

The session id can be any string you choose (letters and numbers). Change it, or drop it, whenever you want a fresh IP.

Session TTL

By default a sticky IP is held for a standard window. To control that window yourself, append -ttl-<minutes>. The value is always in minutes and sets how long that session's IP is held before it is released.

# Hold this session's IP for 30 minutes
curl -x "http://USERNAME-country-us-session-abc123-ttl-30:[email protected]:10000" https://api.ipify.org
i
TTL is in minutes. -ttl-30 means thirty minutes, not thirty seconds. Keep the TTL short if you want the IP to refresh often, or raise it (up to your product's maximum below) if you need the same IP to persist longer.

Maximum sticky duration by product

Each product caps how long a single sticky IP can be held. Beyond the maximum, the session rotates to a new IP.

ProductSticky supportMaximum sticky duration
Budget UnlimitedYesUp to 24 hours
Premium UnlimitedYesUp to 24 hours
Residential / ISPYesUp to 60 hours
MobileYesSticky supported
IPv6YesSticky supported
Static ISPPermanently pinnedIP never rotates
i
Static ISP is different. On Static ISP, each port is already a dedicated, pinned IP that never rotates, so there are no session or TTL parameters to set. Connect to the port for the IP you want.

Which products accept session and TTL

Not every product accepts both parameters. Check here before you build your username string:

Product-session-ttl
Budget UnlimitedYesYes
Premium UnlimitedYesYes
Residential / ISPYesYes
MobileYesYes
IPv6YesNo
Static ISPNot applicable; each port is a fixed dedicated IP

Best practices

i
Get the most out of sessions.
  • Use a unique session id per worker or thread. Give each concurrent task its own -session value so their IPs don't collide, and each worker keeps a consistent identity.
  • Rotate on a ban. If a target blocks a session, change the -session value (or drop it) to move that worker onto a fresh IP immediately.
  • Keep the TTL short if you need fresh IPs often. A low -ttl-<minutes> refreshes the IP more frequently. Raise it only when you genuinely need the same IP to persist.
  • Match the session length to the job. Multi-step flows like login, checkout, or paginated browsing want a stable sticky IP, whereas one-off lookups are usually better rotating.
i
Building the username for you. The dashboard's proxy-list generator assembles these -session and -ttl strings automatically, which is a quick way to get the exact format for your product.

Next steps

Targeting

Combine sessions with country, state, city, and ASN targeting in the same username string.

Code examples

Ready-to-run rotating and sticky examples in bash, Python, and JavaScript.

Last updated July 6, 2026