The same model is not the same route
“Claude,” “GPT,” or “Qwen” names the model family. It does not tell you which account is billed, which endpoint served the request, which policy was applied or how much capacity is behind it.
Your request
model + key + policy
The route
gateway → provider
Fallbacks, region, data policy and BYOK can change the endpoint.
The result
price + latency + policy
The model name alone cannot tell you all three.
Route identity is part of the product
A model comparison that collapses direct APIs, gateways and cloud deployments into one row can compare the wrong prices and the wrong limits. The model ID is only one coordinate. A useful record also keeps the route, provider, region, service tier, billing owner and whether a fallback was used.
OpenRouter makes this visible through provider routing controls and optional router metadata. OpenCode Zen is itself an AI gateway with its own credits and monthly workspace limits. NVIDIA NIM, by contrast, exposes local readiness and Prometheus metrics for a deployment rather than a shared hosted-account balance. OpenRouter routing ↗ · OpenCode Zen ↗ · NVIDIA NIM ↗
Five routes, five different truths
Price
Name the payer
A gateway quote and a lab quote can share a model name while charging different request, token, cache or tool rates.
Access
Name the authority
Keys may be scoped to an organization, project, workspace, cloud account or deployment. “The key works” is not enough.
Capacity
Name the evidence
Use provider-reported limits, rolling performance, request telemetry and route metadata. Keep guarantees separate from observations.
A route record
model: anthropic/claude-sonnet route: gateway gateway: openrouter selected_provider: Anthropic region: global billing_owner: gateway account byok: false fallback_used: false evidence: response metadata + generation record
This shape lets a reader explain a price, an error or a latency number after the fact.