packages/kilo-docs/pages/gateway/authentication.md
The Kilo AI Gateway supports multiple authentication methods depending on your use case.
The primary authentication method is a Bearer token passed in the Authorization header:
Authorization: Bearer <your_api_key>
API keys are JWT tokens tied to your Kilo account. See how to get your API key for step-by-step instructions.
{% tabs %} {% tab label="TypeScript" %}
import { createOpenAI } from "@ai-sdk/openai"
const kilo = createOpenAI({
baseURL: "https://api.kilo.ai/api/gateway",
apiKey: process.env.KILO_API_KEY,
})
{% /tab %} {% tab label="Python" %}
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("KILO_API_KEY"),
base_url="https://api.kilo.ai/api/gateway",
)
{% /tab %} {% tab label="cURL" %}
curl -X POST "https://api.kilo.ai/api/gateway/chat/completions" \
-H "Authorization: Bearer $KILO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "anthropic/claude-sonnet-4.5", "messages": [{"role": "user", "content": "Hello"}]}'
{% /tab %} {% /tabs %}
When making requests on behalf of an organization, include the organization ID in the request header:
X-KiloCode-OrganizationId: your_org_id
Organization tokens are scoped with a 15-minute expiry and enforce the organization's policies, including model allow lists, provider restrictions, and per-user spending limits.
The gateway allows unauthenticated access for free models only. Anonymous requests are identified by IP address and are subject to rate limiting (200 requests per hour per IP).
Free models include models tagged with :free in their model ID, such as minimax/minimax-m2.1:free and z-ai/glm-5:free.
BYOK lets you use your own provider API keys with the Kilo AI Gateway. When a BYOK key is configured, requests are sent to the provider using your key. You are billed directly by the provider -- Kilo does not add any markup.
| Provider | BYOK Key ID |
|---|---|
| Anthropic | anthropic |
| AWS Bedrock | bedrock |
| Google AI Studio | google |
| Inception | inception |
| OpenAI | openai |
| MiniMax | minimax |
| Mistral | mistral |
| xAI | xai |
| Z.AI | zai |
| BytePlus Coding Plan | byteplus-coding |
| Codestral (FIM) | codestral |
| Kimi Code | kimi-coding |
| Neuralwatt | neuralwatt |
| Z.AI Coding Plan | zai-coding |
BYOK keys can be configured at the personal level or at the organization level. Organization-level keys apply to all members of the organization and require owner or billing manager access to manage.
The gateway accepts the following headers:
| Header | Required | Description |
|---|---|---|
Authorization | Yes (unless free model) | Bearer <api_key> |
Content-Type | Yes | application/json |
X-KiloCode-OrganizationId | No | Organization context for org-scoped requests |
X-KiloCode-TaskId | No | Task identifier for prompt cache keying |
X-KiloCode-Version | No | Client version string |
x-kilocode-mode | No | Mode hint for kilo-auto model routing |