Server holds the Gemini key. Callers only send custom headers. Better for shared deployments.
PROXY_AUTH_HEADERSJSON headers, all must match. e.g. {"X-API-KEY":"<secret>"}
GEMINI_API_KEYSJSON array of server Gemini keys, e.g. ["keyA"] or ["keyA","keyB"]. Required for proxy mode.
GEMINI_RELAY_KV_REST_API_URLVercel KV REST URL (store-prefixed). Used with @upstash/redis for rotation counters.
GEMINI_RELAY_KV_REST_API_TOKENVercel KV write token. Without KV (or with one key), proxy uses keys[0]. Do not use READ_ONLY_TOKEN.
PROXY_AUTH_HEADERS='{"X-API-KEY":"<your-proxy-secret>"}'
GEMINI_API_KEYS='["<your-gemini-api-key>"]'
# Multi-key + KV (optional):
# GEMINI_API_KEYS='["key-a","key-b"]'
# GEMINI_RELAY_KV_REST_API_URL=https://….kv.vercel-storage.com
# GEMINI_RELAY_KV_REST_API_TOKEN=...curl "https://gemini-relay-proxy.vercel.app/api/v1beta/models" \ -H "X-API-KEY: <your-proxy-secret>"