API Documentation

Get started with the KiroGate API

๐Ÿ”‘

Authentication

All API requests must include an API key in the header. Three authentication modes are supported:

Mode 1: User API Key (sk-xxx format) โญ Recommended

# OpenAI format
Authorization: Bearer sk-xxxxxxxxxxxxxxxx

# Anthropic format
x-api-key: sk-xxxxxxxxxxxxxxxx

Generate one in the user center after login. Uses your added tokens or the public token pool automatically.

Mode 2: Combined Mode (user-supplied REFRESH_TOKEN)

# OpenAI format
Authorization: Bearer YOUR_PROXY_API_KEY:YOUR_REFRESH_TOKEN

# Anthropic format
x-api-key: YOUR_PROXY_API_KEY:YOUR_REFRESH_TOKEN

Mode 3: Simple Mode (uses server-configured REFRESH_TOKEN)

# OpenAI format
Authorization: Bearer YOUR_PROXY_API_KEY

# Anthropic format
x-api-key: YOUR_PROXY_API_KEY

๐Ÿ’ก Recommended Usage

  • โ€ข Regular users: After login, generate an API key in sk-xxx format - the simplest option.
  • โ€ข Self-hosted users: Use combined mode with your own REFRESH_TOKEN - no server config needed.
  • โ€ข Cache optimization: Each user's auth info is cached (up to 100 users) for improved performance.
๐Ÿ“ก

Endpoints

GET
/

Health check endpoint

GET
/health

Detailed health check; returns token status and cache info

GET
/v1/models

List available models (authentication required)

POST
/v1/chat/completions

OpenAI-compatible chat completions API (authentication required)

POST
/v1/messages

Anthropic-compatible messages API (authentication required)

๐Ÿ’ก

Usage Examples

๐Ÿ OpenAI SDK (Python)

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8000/v1",
    api_key="YOUR_PROXY_API_KEY"
)

response = client.chat.completions.create(
    model="claude-sonnet-4-5",
    messages=[{"role": "user", "content": "Hello!"}],
    stream=True
)

for chunk in response:
    print(chunk.choices[0].delta.content, end="")

๐Ÿค– Anthropic SDK (Python)

import anthropic

client = anthropic.Anthropic(
    base_url="http://localhost:8000",
    api_key="YOUR_PROXY_API_KEY"
)

message = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello!"}]
)

print(message.content[0].text)

$ cURL

curl http://localhost:8000/v1/chat/completions \
  -H "Authorization: Bearer YOUR_PROXY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-5",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'
๐Ÿค–

Available Models

auto
claude-opus-4-7
claude-opus-4-6
claude-opus-4-5
claude-sonnet-4-6
claude-sonnet-4-5
claude-sonnet-4
claude-haiku-4-5
deepseek-3-2
minimax-m2-5
minimax-m2-1
glm-5
qwen3-coder-next