Skip to content

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.

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

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_ip

Matching: 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).

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.

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.

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).
  1. Plan limits are applied first; they can reject the request outright.
  2. X-Proxy-* headers override username-encoded params.
  3. strict decides whether an unsatisfiable constraint fails (true) or falls back (false).
  4. Proxy-Authorization and the X-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.