Quickstart

One API for supported AI models

Use an OpenAI-compatible base URL, your ZevRouter API key, and familiar provider/model IDs.

Base URL

https://router.zev.city/api/v1

Configuration

base_url = "https://router.zev.city/api/v1"
api_key = "zvr_REPLACE_ME"
model = "google/gemini-3.8-flash"

Enabled Models

  • google/gemini-3.8-flash
  • google/gemini-3.7-flash
  • google/gemini-3.6-flash
  • google/gemini-3.5-flash
  • google/gemini-3-flash-preview
  • google/gemini-2.5-flash-lite
  • google/gemini-3.1-flash-lite
  • google/gemini-2.5-flash
  • google/gemini-2.5-pro
  • google/gemini-3.1-flash-image
  • google/gemini-3.5-flash-lite
  • openai/gpt-6-luna
  • z-ai/glm-5.3-flash
  • z-ai/glm-5.3
  • deepseek/deepseek-v4.1-flash
  • qwen/qwen3.8-max-0902

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_tokens": 256,
    "messages": [
      { "role": "user", "content": "Say hello from ZEV AI Gateway." }
    ]
  }'

Optional Routing

Most requests only need a model and messages. Routing preferences are optional.

{
  "model": "google/gemini-3.8-flash",
  "routing": "greenest",
  "messages": [{ "role": "user", "content": "Use the lowest-carbon route." }]
}
{
  "model": "google/gemini-3.8-flash",
  "provider_server": "google-vertex/global",
  "messages": [{ "role": "user", "content": "Use this provider route." }]
}

Node

const res = await fetch("https://router.zev.city/api/v1/chat/completions", {
  method: "POST",
  headers: {
    authorization: "Bearer " + process.env.ZEV_API_KEY,
    "content-type": "application/json"
  },
  body: JSON.stringify({
    model: "google/gemini-3.8-flash",
    max_tokens: 256,
    messages: [{ role: "user", content: "Plan a low-carbon trip." }]
  })
});
const data = await res.json();
console.log(data.choices[0].message.content);
console.log(data.zevrouter);

Errors