Skip to main content

Regions

PolarGrid runs GPU infrastructure at edge locations to minimize latency.

Available Regions

Endpoint URLs

Examples:
  • https://api.yto-01.edge.polargrid.ai
  • https://api.yul-01.edge.polargrid.ai
  • https://api.yvr-02.edge.polargrid.ai
  • https://api.nyc-01.edge.polargrid.ai
  • https://api.dfw-01.edge.polargrid.ai
  • https://api.sfo-01.edge.polargrid.ai
  • https://api.lax-01.edge.polargrid.ai
  • https://api.sea-01.edge.polargrid.ai
  • https://api.chi-01.edge.polargrid.ai
  • https://api.phx-01.edge.polargrid.ai
  • https://api.was-01.edge.polargrid.ai
  • https://api.mia-01.edge.polargrid.ai
  • https://api.sfo-03.edge.polargrid.ai

Auto-Routing

The SDKs can automatically select the fastest region:

Explicit Region Selection

You can specify a region by ID or alias:

Region Aliases

For convenience, these aliases are supported: The -02 variants (e.g. yul-02, nyc-02, dfw-02) and lax-01, sea-01, chi-01, phx-01, was-01, mia-01, sfo-03 are reachable only by explicit region ID — they have no alias.

Checking Latency

CLI

SDK

Auto-routing logs latency when debug is enabled:

Default Region

If you don’t specify a region and don’t use auto-routing, the SDKs default to Toronto (yto-01). For CLI, you can set a default:

Health Checks and Fallback

Checking Region Health

Each edge node exposes a /health endpoint:
A healthy response includes the node ID, runtime info, and loaded models. Use this to verify a region is operational before pinning traffic to it.

Autorouter Discovery

The autorouter returns the single best edge for the caller. By default it detects the caller’s country (from request geo) and returns the nearest edge in that country — a US caller is routed to the nearest US edge, a Canadian caller to the nearest Canadian edge — even when an edge across the border is physically closer. If no healthy edge exists in the caller’s country, it falls back to the globally nearest edge.
The endpoint field is the base URL you POST inference to. The ttl (seconds) is a hint for how long the SDK should cache the choice before re-asking.

Choosing the routing scope

Country affinity is the default because it keeps traffic domestic, which is usually what data-residency-sensitive workloads want. When raw proximity matters more than staying in-country, pass scope=global to let the router cross borders:
Unrecognized values fall back to country, so a typo can never silently widen routing to another country. The response echoes the scope that was actually applied — check it if you need to confirm your request was honored rather than silently defaulted.
scope=global opts out of country affinity and the network-aware on-ramp preference applied to callers whose country has no edge. It ranks purely by distance plus edge queue depth — the same load term the default uses — with no network-topology awareness. Great-circle distance is not always the lowest-latency choice across oceans, so benchmark before switching long-haul traffic to global.
Both SDKs expose this as a client option:

Routing to a warm model

Discovery can also narrow candidates to edges that already have a specific model loaded, so your first request hits a warm node instead of paying a dynamic model load. Model availability is a hard filter; scope then picks the nearest among the nodes that qualify — the two options compose:
If no edge currently serves the model, the raw endpoint returns 404; the SDKs catch that and fall back to the default edge (uncached — the miss is transient) so connecting still succeeds. The first request then triggers a dynamic model load instead of hitting a warm node. These options are ignored when you pin a region or baseUrl — those bypass the autorouter entirely. Each scope/model combination is cached separately, so switching either re-asks the router rather than reusing another combination’s answer.

Fallback Strategy

If you’re pinning to a specific region (not using auto-routing), we recommend this fallback pattern:
  1. Primary: Your chosen region (e.g., yto-01)
  2. Fallback: Try the next-closest region if the primary returns 5xx or times out
  3. Auto-route: Fall back to PolarGrid.create() which calls the autorouter
For most use cases, PolarGrid.create() is the best option — it handles region selection and failover automatically. Only pin to a specific region if you need deterministic routing for compliance or latency guarantees.

Direct API Access

For raw HTTP requests, use the full endpoint: