API Reference

API Documentation

z0.chat provides an OpenAI-compatible API via the Vercel AI Gateway. Send one prompt to multiple models simultaneously, compare responses, and build with parallel inference. This API is 100% compatible with existing OpenAI SDKs — just change the base URL and API key.

Base URL

https://ai-gateway.vercel.sh/v1

Authentication

All requests require an API key passed in the Authorization header as a Bearer token. Get your API key from the z0.chat dashboard after signing in.

Authorization: Bearer z0-xxxxxxxxxxxxxxxxxxxx
Security

Never expose your API key in client-side code. Always proxy requests through your backend server.

Base URL

All API endpoints are relative to the base URL:

https://ai-gateway.vercel.sh/v1

Append the endpoint path to this base URL. For example, to call chat completions: https://ai-gateway.vercel.sh/v1/chat/completions

POST /chat/completions

POST/chat/completions

Send a chat completion request to one or more models. Supports streaming, parallel inference across multiple models, and consensus scoring.

Parameters

ParameterTypeRequiredDescription
modelstringrequiredModel ID or comma-separated list for parallel inference (e.g. gpt-4o,claude-3.5-sonnet)
messagesarrayrequiredArray of message objects with role and content
streambooleanoptionalIf true, returns a streaming response (SSE)
temperaturenumberoptional0–2, default 1. Higher = more random
max_tokensintegeroptionalMaximum tokens to generate
top_pnumberoptionalNucleus sampling, 0–1. Default 1
stopstring|arrayoptionalUp to 4 stop sequences
consensusbooleanoptionalIf true with multiple models, returns consensus score

Request Body

curl -X POST https://ai-gateway.vercel.sh/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer z0-xxxxxxxxxxxx" \
  -d '{
    "model": "gpt-4o,claude-3.5-sonnet",
    "messages": [
      {"role": "user", "content": "Explain quantum computing in 2 sentences."}
    ],
    "stream": false,
    "consensus": true
  }'
const res = await fetch("https://ai-gateway.vercel.sh/v1/chat/completions", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer z0-xxxxxxxxxxxx",
  },
  body: JSON.stringify({
    model: "gpt-4o,claude-3.5-sonnet",
    messages: [{ role: "user", content: "Explain quantum computing in 2 sentences." }],
    stream: false,
    consensus: true,
  }),
});
const data = await res.json();
console.log(data);
import requests

res = requests.post(
    "https://ai-gateway.vercel.sh/v1/chat/completions",
    headers={
        "Content-Type": "application/json",
        "Authorization": "Bearer z0-xxxxxxxxxxxx",
    },
    json={
        "model": "gpt-4o,claude-3.5-sonnet",
        "messages": [{"role": "user", "content": "Explain quantum computing in 2 sentences."}],
        "stream": False,
        "consensus": True,
    },
)
print(res.json())

Response

{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1700000000,
  "models": ["gpt-4o", "claude-3.5-sonnet"],
  "choices": [
    {
      "index": 0,
      "model": "gpt-4o",
      "message": {"role": "assistant", "content": "Quantum computing uses..."},
      "finish_reason": "stop"
    },
    {
      "index": 1,
      "model": "claude-3.5-sonnet",
      "message": {"role": "assistant", "content": "Quantum computing leverages..."},
      "finish_reason": "stop"
    }
  ],
  "consensus": {"score": 0.82, "agreement": "high"},
  "usage": {"prompt_tokens": 12, "completion_tokens": 48, "total_tokens": 60}
}

GET /models

GET/models

List all available models on the z0.chat gateway.

Request
curl https://ai-gateway.vercel.sh/v1/models \
  -H "Authorization: Bearer z0-xxxxxxxxxxxx"
Response
{
  "object": "list",
  "data": [
    {"id": "gpt-4o", "provider": "openai", "context": 128000},
    {"id": "claude-3.5-sonnet", "provider": "anthropic", "context": 200000},
    {"id": "llama-3.1-70b", "provider": "meta", "context": 131072},
    {"id": "mistral-large", "provider": "mistral", "context": 128000}
  ]
}

Code Examples

Streaming with SSE

const res = await fetch("https://ai-gateway.vercel.sh/v1/chat/completions", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": `Bearer ${apiKey}`,
  },
  body: JSON.stringify({
    model: "gpt-4o,claude-3.5-sonnet",
    messages: [{ role: "user", content: "Write a haiku about the ocean." }],
    stream: true,
  }),
});
const reader = res.body.getReader();
const decoder = new TextDecoder();
while (true) {
  const { done, value } = await reader.read();
  if (done) break;
  const chunk = decoder.decode(value);
  chunk.split("\n").forEach((line) => {
    if (line.startsWith("data: ")) {
      const data = JSON.parse(line.slice(6));
      console.log(data.model, "→", data.choices[0]?.delta?.content || "");
    }
  });
}

Error Codes

CodeTypeDescription
400bad_requestInvalid request body or parameters
401unauthorizedMissing or invalid API key
403forbiddenAPI key lacks permission for the requested resource
404not_foundModel not available on the gateway
429rate_limitRate limit exceeded. Retry with exponential backoff
500server_errorInternal gateway error. Retry after brief delay
503unavailableUpstream provider temporarily unavailable
504timeoutRequest timed out waiting for upstream model

Rate Limits

Rate limits are applied per API key and vary by tier. All responses include X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers.

Free
60/min
1,000 requests/month
Pro
600/min
50,000 requests/month
Enterprise
Unlimited
Custom throughput
Retry Strategy

On 429, use exponential backoff: wait 1s, 2s, 4s, 8s. The Retry-After header tells you exactly how long to wait.

SDK Examples

OpenAI SDK (JavaScript)

import OpenAI from "openai";
const client = new OpenAI({
  apiKey: process.env.Z0_API_KEY,
  baseURL: "https://ai-gateway.vercel.sh/v1",
});
const res = await client.chat.completions.create({
  model: "gpt-4o,claude-3.5-sonnet",
  messages: [{ role: "user", content: "Hello, z0!" }],
});
console.log(res.choices);

OpenAI SDK (Python)

from openai import OpenAI
client = OpenAI(
    api_key=os.environ["Z0_API_KEY"],
    base_url="https://ai-gateway.vercel.sh/v1",
)
res = client.chat.completions.create(
    model="gpt-4o,claude-3.5-sonnet",
    messages=[{"role": "user", "content": "Hello, z0!"}],
)
print(res.choices)

LangChain Integration

from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
    model="gpt-4o",
    api_key=os.environ["Z0_API_KEY"],
    base_url="https://ai-gateway.vercel.sh/v1",
)
response = llm.invoke("What is multi-model inference?")