Restricted territories

LowRouter is operated by an EU company and routes to providers that set their own geographic rules. Two kinds of restriction follow from that:

  • Sanctioned territories, where the service isn’t available at all.
  • Provider exclusions, where one provider’s terms rule out end users in a territory. Requests from there are never routed to that provider, and other providers still serve the request.

Both apply to the end user of a request, which is not always the account holder. If you build on LowRouter, your terms with your own users have to carry the same restrictions. Using a VPN or proxy to get around them breaches the terms of service.

Sanctioned territories

These are blocked on every model, under comprehensive EU and UN sanctions and EU Regulations 833/2014 (Russia) and 765/2006 (Belarus):

TerritoryCode
CubaCU
IranIR
North KoreaKP
SyriaSY
RussiaRU
BelarusBY
CrimeaUA-43
SevastopolUA-40
Donetsk regionUA-14
Luhansk regionUA-09

A request from one of these territories gets a 451 on every endpoint. An account cannot be created there, and a billing country on this list cannot buy credits.

Provider exclusions

Each row below is a provider’s own rule. A request from a listed territory is not routed to that provider:

  • With an auto/ id, the other providers of the model still compete for it.
  • With a full {provider}/… id pinned to the restricted provider, the request gets a 451.
  • When no route is left, the request gets a 451 too.
ProviderApplies toExcluded end-user locationsSource
anthropicevery modelAnywhere not on Anthropic’s supported list, including China (with Hong Kong and Macau), Venezuela, Myanmar, Afghanistan, Yemen and Kosovo. Ukraine’s Kherson (UA-65) and Zaporizhzhia (UA-23) regions are excluded too.Supported regions
vertex, aws-bedrock, deepinfraClaude modelsSame as anthropicSupported regions
openaievery modelAnywhere not on OpenAI’s supported list, including China (with Hong Kong and Macau) and VenezuelaSupported countries
aws-bedrockOpenAI modelsSame as openaiSupported countries
aws-bedrockCohere modelsChina, Hong Kong, MacauCohere EULA, “Restricted Location”
googleevery modelAnywhere not on Google’s Gemini API list, including China (with Hong Kong and Macau), Myanmar and AfghanistanAvailable regions
deepinfraGemini modelsSame as googleAvailable regions
metaevery modelChina (with Hong Kong and Macau), Afghanistan, Cambodia, Eritrea, Ethiopia, Haiti, Iraq, Libya, Myanmar, Nicaragua, Pakistan, Somalia, Venezuela, Western SaharaGeographic use policy
metaMuse ImageIndia, in addition to the row aboveGeographic use policy
tensorxevery modelMyanmar, plus the FATF “call for action” jurisdictions that the sanctioned list above already coversTensorX terms §17

Every other provider requires sanctions compliance only, which the first table covers.

Providers change these lists without notice. We re-check them before every release and update this page with them. The page’s date shows the last review.

How we locate a request

We read the location of each request from its IP address, using DB-IP’s IP to City Lite database (CC BY 4.0), refreshed monthly. Subdivision codes such as UA-43 come from the same database.

An address the database can’t place, such as a private range or an unmapped block, restricts nothing. For accounts, we also use the billing country Stripe verifies at checkout. The IP address itself is used only for this check, and logs record the territory, not the address.

What the API returns

A request from a sanctioned territory:

JSON
{
  "error": {
    "type": "permission_error",
    "message": "LowRouter is not available in your region (IR). See https://lowrouter.ai/docs/guides/restricted-territories/",
    "code": "unavailable_for_legal_reasons"
  }
}

A model whose remaining routes all exclude the caller’s territory:

JSON
{
  "error": {
    "type": "permission_error",
    "message": "auto/meta/muse-spark-1.3 is not available in your region (CN): provider terms exclude that territory — see https://lowrouter.ai/docs/guides/restricted-territories/",
    "code": "unavailable_for_legal_reasons",
    "param": "model"
  }
}

Retrying won’t help. The errors reference covers both responses.