API Reference

REST API Endpoints

Complete reference for all Komilion API endpoints.

Base URL

https://www.komilion.com/api

All endpoints require Authorization: Bearer ck_your-api-key-here

Chat

POST
/chat/completions

Create a chat completion (OpenAI compatible)

from openai import OpenAI

client = OpenAI(
    base_url="https://www.komilion.com/api",
    api_key="ck_your-api-key-here",
)

# Neo Mode — automatic model selection
response = client.chat.completions.create(
    model="neo-mode/balanced",  # or "neo-mode/frugal" or "neo-mode/premium"
    messages=[{"role": "user", "content": "Hello, world!"}],
)

print(response.choices[0].message.content)
print(f"Model used: {response.model}")
print(f"Tokens: {response.usage.total_tokens}")

Use a specific model (bypass Neo routing):

response = client.chat.completions.create(
    model="anthropic/claude-sonnet-4-5",  # Any model from the catalog
    messages=[{"role": "user", "content": "Explain monads simply"}],
)
print(response.choices[0].message.content)

Voice

POST
/voice/realtime

Get WebSocket config for real-time voice

import requests

API_KEY = "ck_your-api-key-here"

# Get WebSocket config
config = requests.post(
    "https://www.komilion.com/api/voice/realtime",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={
        "policy": "balanced",  # "frugal" | "balanced" | "premium"
        "voice": "alloy"
    }
).json()

print(f"WebSocket URL: {config['websocket']['url']}")
print(f"Model: {config['websocket']['model']}")
print(f"Cost: {config['pricing']['estimated_per_minute']}/min")
GET
/voice/realtime

Get available voice models and pricing

curl https://www.komilion.com/api/voice/realtime \
  -H "Authorization: Bearer ck_your-api-key-here"

Wallet & Billing

GET
/wallet/balance

Get your current balance

import requests

API_KEY = "ck_your-api-key-here"

balance = requests.get(
    "https://www.komilion.com/api/wallet/balance",
    headers={"Authorization": f"Bearer {API_KEY}"}
).json()

print(f"Available: ${balance['total_available']:.2f}")
print(f"  Wallet:  ${balance['wallet_balance']:.2f}")
print(f"  Trial:   ${balance['trial_credits']:.2f}")

if balance.get("is_low_balance"):
    print("⚠️  Low balance — consider topping up")
GET
/user/usage

Get detailed usage breakdown

{
  "period": "2024-12",
  "total_cost": 12.50,
  "total_requests": 1250,
  "by_model": {
    "gpt-4o-mini": { "requests": 800, "cost": 4.20 },
    "claude-3-sonnet": { "requests": 450, "cost": 8.30 }
  }
}

Models

GET
/models

List available models

models = client.models.list()

for model in models.data:
    print(f"{model.id} (by {model.owned_by})")

Orchestration (Neo Mode)

POST
/chat

Execute complex tasks with tool calling

import requests

API_KEY = "ck_your-api-key-here"

result = requests.post(
    "https://www.komilion.com/api/chat",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={
        "messages": [{"role": "user", "content": "Calculate fib(50) with Python"}],
        "policy": "balanced",
        "enableToolCalling": True,
        "tools": ["python_execute"]
    }
).json()

print(result["response"])
print(f"Tools used: {result.get('toolsUsed', [])}")
print(f"Cost: ${result.get('cost', 0):.4f}")

API Keys

API key management is available in the Dashboard → API Keys

Format
ck_[64 hex chars]
Header
Authorization: Bearer ck_your-api-key-here

Rate Limits

Default limits for API requests

EndpointLimitWindow
/chat/completions60 requestsper minute
/voice/*10 sessionsconcurrent
/models100 requestsper minute

Need higher limits? Contact us