How to set a sticky session on a dynamic residential proxy

Pass sessionId and sessionMinutes from 1 to 60 when extracting a dynamic residential proxy to keep the same exit where possible. A sticky session is not a static IP. Not for mainland China.

When you need the same exit for a limited window, pass sessionId and sessionMinutes together while you extract credentials. This page follows the official Dynamic Resource 2 guide for those fields. It explains how to turn sticky on, not the conceptual difference between sticky and static; that comparison is sticky session vs static IP.

If you omit session fields, requests can rotate IPs. A sticky session tries to keep the same exit for the window; it does not guarantee the exit never changes. If you need a relatively fixed residential IP for the subscription term, use static. Authorized targets only. Not supported in mainland China.

What to prepare

ItemWhere it comes from
Dynamic account ID and tokenaccountId from the purchase response; keep the token on the server
Whether you really need stickySkip session fields if you want rotation; use static if you need a long-lived fixed exit
Session id rulesDocs: sessionId is letters and digits only, kept to at most 6 characters
Duration rulesDocs: sessionMinutes supports 1 to 60 minutes

Placeholders only (not production): host proxy.example.invalid, port 10000, user USER_EXAMPLE, password PASS_EXAMPLE_NOT_REAL. Account ID example ACCOUNT_ID_EXAMPLE. The cart01 value below comes from the official docs example; it is not a product-assigned session name.

What the fields mean

FieldDocumented behaviorWatch-outs
No session fieldsYou can receive rotating IPsA repeated exit by chance is not a sticky session
sessionIdLetters and digits, at most 6 characters; the platform binds it to the current standard location level and builds the 6-character session id actually usedDo not invent a longer id, and do not write it into the username
sessionMinutes1 to 60 minutesDo not describe a longer window as a verified product capability
Changing country, state, or cityGenerate a new session id at the same timeChanging location while reusing the old id may keep the previous exit
Batch extractEach credential gets its own 5-minute session by default; if you also send session fields, the platform derives a separate id per item and uses the duration you setThis is not a concurrency cap or SLA

Use different sessionId values for tasks that must stay isolated. Clients should still use the username and password exactly as returned; do not encode the session into the username yourself.

Extract example with sticky fields

export ZTPROXY_BASE="https://backend.ztproxy.net/api"
export ZTPROXY_TOKEN="TOKEN_EXAMPLE_NOT_REAL"

curl -X POST "$ZTPROXY_BASE/business/dynamic-accounts/ACCOUNT_ID_EXAMPLE/extract" \
  -H "Authorization: Bearer $ZTPROXY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "protocol": "socks5",
    "country": "US",
    "sessionId": "cart01",
    "sessionMinutes": 10
  }'

country is not required for sticky mode. If you need a specific exit, query the location catalog first; see location targeting. The documented default protocol is still socks5. For a first check, pass host, port, and auth as separate flags; see test with curl.

Do not confuse sticky with static

NeedBetter product or practice
A new exit for each public-page sampleDynamic traffic, without session fields
The same exit where possible for up to 60 minutesDynamic traffic plus the documented sticky fields
A relatively fixed residential IP for the term, including addresses you send to a partnerStatic; see allowlists

Sticky is not static, and it is not an SLA. When the window ends, or if the exit changes, extract again if your task still needs a stable address. Do not assume the same credentials always point at the same IP.

Scope and compliance

Use this only against targets you are authorized to access. This is not a bypass guide. Prices follow the console and Pricing (dynamic about $0.40/GB, about $0.20/GB on the 100 TB package; shared static about $1.50 and dedicated about $5 per IP per month). USDT and USDC are accepted; Visa and Mastercard are still being applied for. Not supported in mainland China.

FAQ

Can a sticky session replace a static IP?

No. Sticky tries to keep the same exit for a 1-to-60-minute window. Static is a relatively fixed residential IP for the subscription term. See sticky vs static.

Can sessionId be longer than 6 characters?

Not according to the docs. Use letters and digits only, kept to at most 6 characters. The platform builds the 6-character id that is actually used.

What is the longest sticky window?

Documented sessionMinutes values are 1 to 60. Do not treat a longer window as a verified capability.

Does the same session guarantee the IP never changes?

No. The docs say the platform tries to keep the same exit for the duration, but the exit can still change.

Can I reuse the same sessionId after I change country?

You should not. The docs say to generate a new session id when you change country, state, or city; otherwise you may keep the previous exit.

Can I use this to bypass login walls?

No. Authorized targets only.

Is the 5-minute batch default a billing plan?

No. It is the documented default session for batch extract. It is not a traffic package and not a concurrency SLA. For billing see GB vs IP.

Which price should I trust?

The console and Pricing.

Next steps

  1. Choose rotation, sticky, or static for the task.
  2. Extract a complete credential set and run a check.
  3. If you need to report a fixed address, use static and allowlists.