Request parameters
A single reference for every routing parameter you can set on a proxy request.
Set values either in the proxy username or with X-Proxy-* headers;
headers win. For an HTTPS target, send the headers on the CONNECT (in curl,
--proxy-header); headers inside the tunnel aren’t read.
Parameters
Section titled “Parameters”| Username param | Header | Values | Default |
|---|---|---|---|
region |
X-Proxy-Region |
edge region label (dot-prefix match), e.g. bom; labels with - like ap-south-1 via the header only |
any |
cc |
X-Proxy-Country |
country code the edge reports, e.g. in |
any |
iptype |
X-Proxy-IPType |
datacenter · residential |
any |
protocol |
X-Proxy-Protocol |
http (the only protocol edges advertise) |
any |
strategy |
X-Proxy-Strategy |
see strategies below | goodput_per_second |
session |
X-Proxy-Session |
any stable string (no - in the username); read only by session_affinity |
none |
strict |
X-Proxy-Strict |
true · false |
false |
Username encoding
Section titled “Username encoding”The username is the API key, followed by any params. No password. Values can’t
contain - (the username is split on -); param names are case-insensitive.
<api-key>[-<param>-<value>]...YOUR_API_KEY-region-eu.west-cc-de-strategy-freshest_ipMatching: region is a hierarchical prefix on dot-separated segments (today’s
labels have no dots, so it’s effectively exact); cc, iptype and protocol are
exact (case-insensitive).
Strategy values
Section titled “Strategy values”| Value | Notes |
|---|---|
goodput_per_second |
Default. Weights edges by pages delivered per second of slot time for this host. |
goodput_weighted |
Weights edges by success rate for this host. |
round_robin |
Even rotation. |
weighted_round_robin |
Weighted by each edge’s configured weight. |
least_connections |
Fewest in-flight. |
lowest_latency |
Best measured latency. |
random |
Uniform random. |
ip_hash |
Stable per client IP for plain HTTP; over HTTPS every client maps to the same edge. |
session_affinity |
Pinned by session. |
freshest_ip |
Least-recently-used edge per (org, host). |
ip_rotation |
Deterministic rotation per (org, host). |
cost_aware |
Favours higher-weight (cheaper) edges, balanced against in-flight connections. |
See Routing strategies for guidance.
Egress class
Section titled “Egress class”bytetourist runs datacenter edges (cloud machines) and residential ones
(home connections). Choose with iptype / X-Proxy-IPType (mobile is also
accepted). If no edge of that type is online, the request silently falls back to
any edge unless strict is set. For which edges exist today, see
Targeting & geo.
Status codes
Section titled “Status codes”| Code | Meaning |
|---|---|
200+ |
Target’s response, proxied back, including its own 4xx/5xx, which carry no X-Proxy-Error header. |
402 |
Out of credits (X-Proxy-Error: insufficient_credits). |
403 |
Plan violation: a region (or IP type) outside your org’s allow-list. |
407 |
Proxy auth required: bad, missing, or revoked API key. |
429 |
Org concurrency or per-second rate cap exceeded (rate_limited). |
502 |
strict=true and no node matches, or an unknown strategy name. |
592–596 |
Node couldn’t complete the call (upstream_unreachable, dns_failure, connection_refused, connection_reset, tls_error). |
597 |
Every eligible node at its concurrency limit for this host (governor_throttle). |
598 |
No response within the timeout (upstream_timeout). |
599 |
No node or free stream, or the node’s stream closed (no_edge, no_stream, edge_closed). |
Precedence rules
Section titled “Precedence rules”- Plan limits are applied first; they can reject the request outright.
X-Proxy-*headers override username-encoded params.strictdecides whether an unsatisfiable constraint fails (true) or falls back (false).Proxy-Authorizationand theX-Proxy-*headers bytetourist reads are stripped before the request reaches the node. Routing headers sent inside an HTTPS tunnel aren’t read, so they’re forwarded to the site.