[Network]

How routing works

The Topo Router picks a node for every request in a few milliseconds, scoring live latency, load, reputation and price across 40+ regions.

The request path

  1. 01

    Authenticate

    The router checks the key or wallet signature, the key's scope and the wallet balance at the edge, in under 3 ms.

  2. 02

    Filter

    Only nodes that have the model loaded, satisfy any region pin and hold enough stake for the request's value are eligible.

  3. 03

    Score

    Each eligible node is scored on recent time to first token, queue depth, verification history and price.

  4. 04

    Dispatch

    The best node gets the request and the runner-up is held in reserve. If no first token arrives within 600 ms, the runner-up starts too and the faster stream wins.

  5. 05

    Verify and settle

    Attestors re-run a sample, the node signs a receipt, and the cost settles in the next batch.

Scoring

score
text
score = 0.45 × latency + 0.25 × load + 0.20 × reputation + 0.10 × price
SignalMeasured asWindow
LatencyTime to first token, p50, from the caller's region5 minutes
LoadQueue depth and free GPU memoryLive
ReputationShare of sampled requests that matched the attestors30 days
PriceThe operator's ask against the model's list priceLive

Regions

RegionLocationGPUsp50 TTFT
us-east-4VirginiaH100, B200164 ms
us-west-2OregonH100, 4090171 ms
eu-west-2LondonB200, H100182 ms
eu-central-1FrankfurtH100176 ms
ap-northeast-1TokyoH200189 ms
ap-southeast-1SingaporeH100, 4090198 ms
sa-east-1São Paulo4090231 ms
Plus 30+ smaller regions. Live numbers are on the status page.

Pinning and priority

Pass topo.region to keep a request in one region (Max and Enterprise), and topo.priority: "priority" to skip the standard queue at peak (Builder and up).

request.json
json
{  "model": "claude-sonnet-5.5",  "messages": [{ "role": "user", "content": "Classify this support ticket" }],  "topo": { "region": "eu-west-2", "priority": "priority" }}