packages/kilo-docs/pages/gateway/quickstart.md
This guide walks you through making your first AI model request with the Kilo AI Gateway. While this guide focuses on the Vercel AI SDK, you can also use the OpenAI SDK, Python, or cURL.
You need a Kilo account with API credits. Sign up at kilo.ai and add credits from your account dashboard.
mkdir my-ai-app
cd my-ai-app
npm init -y
npm install ai @ai-sdk/openai dotenv
Create a .env file and add your Kilo API key:
KILO_API_KEY=your_api_key_here
For step-by-step instructions on getting an API key, please see the Kilo Gateway API Key instructions.
Create an index.mjs file:
import { streamText } from "ai"
import { createOpenAI } from "@ai-sdk/openai"
import "dotenv/config"
const kilo = createOpenAI({
baseURL: "https://api.kilo.ai/api/gateway",
apiKey: process.env.KILO_API_KEY,
})
async function main() {
const result = streamText({
model: kilo.chat("anthropic/claude-sonnet-4.5"),
prompt: "Invent a new holiday and describe its traditions.",
})
for await (const textPart of result.textStream) {
process.stdout.write(textPart)
}
console.log()
console.log("Token usage:", await result.usage)
console.log("Finish reason:", await result.finishReason)
}
main().catch(console.error)
Run the script:
node index.mjs
You should see the model's response streamed to your terminal.
The Kilo AI Gateway is fully OpenAI-compatible, so you can use the OpenAI SDK by pointing it to the Kilo base URL.
{% tabs %} {% tab label="TypeScript" %}
import OpenAI from "openai"
const client = new OpenAI({
apiKey: process.env.KILO_API_KEY,
baseURL: "https://api.kilo.ai/api/gateway",
})
const response = await client.chat.completions.create({
model: "anthropic/claude-sonnet-4.5",
messages: [{ role: "user", content: "Why is the sky blue?" }],
})
console.log(response.choices[0].message.content)
{% /tab %} {% tab label="Python" %}
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("KILO_API_KEY"),
base_url="https://api.kilo.ai/api/gateway",
)
response = client.chat.completions.create(
model="anthropic/claude-sonnet-4.5",
messages=[
{"role": "user", "content": "Why is the sky blue?"}
],
)
print(response.choices[0].message.content)
{% /tab %} {% /tabs %}
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": "Why is the sky blue?"
}
],
"stream": false
}'