API Reference

OpenAI-Compatible REST API

Site proxy base URL: https://your-site.example/api

Authentication

Site proxy requests require a Better Auth session or user API key in the Authorization header. The proxy forwards only its private gateway key. Direct gateway deployments instead require the server-level ROUTER_API_KEY. Usage history is available at /api/usage for authenticated users.

Authorization: Bearer router_user_...

Endpoints

POST/api/v1/chat/completions

Create a chat completion with any model

ParameterTypeRequiredDescription
modelstringYesModel ID, e.g. openai/gpt-4o
messagesarrayYesArray of message objects
temperaturenumberNo0–2, default 1
max_tokensintegerNoMax output tokens
streambooleanNoStream response via SSE
response_formatobjectNoJSON mode: { type: "json_object" }
POST/v1/completionsRoadmap

Legacy text completions (planned; chat completions are available now)

ParameterTypeRequiredDescription
modelstringYesModel ID
promptstringYesInput text
max_tokensintegerNoMax output tokens
GET/api/v1/models

List all available models

POST/api/v1/embeddingsRoadmap

Generate text embeddings (planned)

ParameterTypeRequiredDescription
modelstringYesEmbedding model ID
inputstringYesText to embed
GET/api/usage

Recent usage for the authenticated Better Auth user (same-origin control-plane route)

ParameterTypeRequiredDescription
limitintegerNoNumber of records to return, capped at 100

Example

Request
POST /api/v1/chat/completions
Authorization: Bearer router_user_...

{
  "model": "openai/gpt-4o",
  "messages": [
    {"role": "user", "content": "Hi"}
  ]
}
Response (200)
{
  "id": "chatcmpl_abc123",
  "model": "openai/gpt-4o",
  "choices": [{
    "message": {
      "role": "assistant",
      "content": "Hello! How can I help?"
    },
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 8,
    "completion_tokens": 7,
    "total_tokens": 15
  }
}