Base URL
https://router.zev.city/api/v1Migration guide
Move from OpenRouter to ZevRouter
Keep the OpenAI-compatible client shape, switch the base URL, use a zvr_... key, and keep familiar provider/model IDs for enabled models.
API key
zvr_...Default model
google/gemini-3.8-flashGeneration detail
/generation?id=...Migration Checklist
- Create or load a ZevRouter key at /keys.
- Set your client base URL to
https://router.zev.city/api/v1. - Set the API key to the provided
zvr_...key. - Keep the same model ID when it appears in /models; otherwise choose an enabled replacement.
- Send one short request in /playground.
- Confirm balance and transactions in /credits.
- Confirm request history in /activity and open the generation drilldown.
Need To Run The Beta?
Operators should use the beta runbook for issuing keys, collecting feedback, triaging failures, and deciding whether the cohort can expand.
Open Beta RunbookBefore
base_url = "https://openrouter.ai/api/v1" api_key = "sk-or-..." model = "google/gemini-2.5-flash-lite"
After
base_url = "https://router.zev.city/api/v1" api_key = "zvr_REPLACE_ME" model = "google/gemini-3.8-flash"
Curl
curl "https://router.zev.city/api/v1/chat/completions" \
-H "Authorization: Bearer zvr_REPLACE_ME" \
-H "Content-Type: application/json" \
-d '{
"model": "google/gemini-3.8-flash",
"max_completion_tokens": 128,
"messages": [
{ "role": "user", "content": "Reply with one sentence confirming ZevRouter migration works." }
]
}'
OpenAI JavaScript SDK
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://router.zev.city/api/v1",
apiKey: process.env.ZEVROUTER_API_KEY
});
const completion = await client.chat.completions.create({
model: "google/gemini-3.8-flash",
max_completion_tokens: 128,
messages: [
{ role: "user", content: "Confirm the ZevRouter migration." }
]
});
console.log(completion.choices[0].message.content);
OpenAI Python SDK
from openai import OpenAI
import os
client = OpenAI(
base_url="https://router.zev.city/api/v1",
api_key=os.environ["ZEVROUTER_API_KEY"],
)
completion = client.chat.completions.create(
model="google/gemini-3.8-flash",
max_completion_tokens=128,
messages=[
{"role": "user", "content": "Confirm the ZevRouter migration."}
],
)
print(completion.choices[0].message.content)
LiteLLM Client
from litellm import completion
import os
response = completion(
model="openai/google/gemini-3.8-flash",
api_base="https://router.zev.city/api/v1",
api_key=os.environ["ZEVROUTER_API_KEY"],
messages=[
{"role": "user", "content": "Confirm LiteLLM uses ZevRouter."}
],
)
print(response["choices"][0]["message"]["content"])
Agent Environment
export OPENAI_BASE_URL="https://router.zev.city/api/v1" export OPENAI_API_KEY="zvr_REPLACE_ME" export OPENAI_MODEL="google/gemini-3.8-flash"
Configure my agent harness to use ZevRouter as an OpenAI-compatible provider. Base URL: https://router.zev.city/api/v1 Model: google/gemini-3.8-flash API key: I will provide it separately. Do not print or commit the full API key. Run one small request, then check /activity.
OpenRouter subset
Supported Request Fields
| Field | Status | ZevRouter behavior |
|---|---|---|
model | supported | Uses enabled provider/model IDs such as google/gemini-3.8-flash. |
models[] | supported | First model is primary; remaining models are request-level fallback candidates. |
prompt | supported | Converted to one user message when messages is absent. |
max_completion_tokens | supported | Accepted and mapped to ZevRouter output limits. |
provider.allow_fallbacks | supported | false disables model/upstream fallback for that request. |
provider.sort.by | supported subset | price maps to cheapest; latency and throughput map to fastest. |
provider.only/order/ignore | validated | Validated against the enabled provider for the requested model. |
provider.max_price | supported | Enforced against catalog pricing in USD per 1M tokens. |
provider.zdr, data_collection, quantization filters | rejected | Returns a compatibility error until audited provider metadata exists. |
Provider Preferences
{
"model": "google/gemini-3.8-flash",
"models": ["google/gemini-3.8-flash", "google/gemini-3.7-flash"],
"provider": {
"allow_fallbacks": true,
"sort": { "by": "price", "partition": "none" },
"max_price": { "prompt": 1, "completion": 1 }
},
"messages": [{ "role": "user", "content": "Use a low-cost route." }]
}
ZevRouter Routing
{
"model": "google/gemini-3.8-flash",
"routing": "greenest",
"messages": [{ "role": "user", "content": "Use the lowest-carbon estimated route." }]
}
{
"model": "google/gemini-3.8-flash",
"provider_server": "google-vertex/global",
"messages": [{ "role": "user", "content": "Use this provider endpoint." }]
}
Internal Beta Script
- Open /keys, load the beta key, and confirm the key session is active.
- Open /credits, confirm available credits and transactions.
- Open /playground, run one non-streaming request and one streaming request.
- Open /activity, find the request row, and open the generation drilldown.
- Move one internal app by changing only base URL, key, and model if needed.
Known Beta Limits
- Closed beta is key-based; full user login is not implemented.
- Provider server carbon and CFE values are estimates, not audited disclosures.
- Payments may run in Stripe test mode or manual confirmation depending deployment.
- Enabled models are allowlisted per deployment and per key.
- No public production SLA is implied by this staging deployment.
Available Models
google/gemini-3.8-flashGoogle · $0.7500 / $3.7500 per 1M tokensgoogle/gemini-3.7-flashGoogle · $0.7500 / $3.7500 per 1M tokensgoogle/gemini-3.6-flashGoogle · $0.7500 / $3.7500 per 1M tokensgoogle/gemini-3.5-flashGoogle · $1.5000 / $9.0000 per 1M tokensgoogle/gemini-3-flash-previewGoogle · $0.5000 / $3.0000 per 1M tokensgoogle/gemini-2.5-flash-liteGoogle · $0.1000 / $0.4000 per 1M tokensgoogle/gemini-3.1-flash-liteGoogle · $0.2500 / $1.5000 per 1M tokensgoogle/gemini-2.5-flashGoogle · $0.3000 / $2.5000 per 1M tokensgoogle/gemini-2.5-proGoogle · $1.2500 / $10.0000 per 1M tokensgoogle/gemini-3.1-flash-imageGoogle · $0.5000 / $60.0000 per 1M tokensgoogle/gemini-3.5-flash-liteGoogle · $0.3000 / $2.5000 per 1M tokensopenai/gpt-6-lunaOpenAI · $0.1000 / $0.5000 per 1M tokensz-ai/glm-5.3-flashZ Ai · $0.1500 / $0.5000 per 1M tokensz-ai/glm-5.3Z Ai · $1.4000 / $4.4000 per 1M tokensdeepseek/deepseek-v4.1-flashDeepSeek · $0.2200 / $0.6600 per 1M tokensqwen/qwen3.8-max-0902Qwen · $2.0000 / $6.0000 per 1M tokens
Verification APIs
curl "https://router.zev.city/api/v1/credits" \ -H "Authorization: Bearer zvr_REPLACE_ME"
curl "https://router.zev.city/api/v1/activity?limit=10" \ -H "Authorization: Bearer zvr_REPLACE_ME"
curl "https://router.zev.city/api/v1/generation?id=GENERATION_ID" \ -H "Authorization: Bearer zvr_REPLACE_ME"