OpenAI-compatible · OpenAI-compatible · 1M context

Документация
API Gateway

Независимый API-провайдер. Обрабатывает запросы — всё остальное заблокировано. Замени base_url и api_key в своём OpenAI-клиенте.

https://api.8bit.ca/v1 SSE stream tools
Base URL OpenAI SDK
https://api.8bit.ca/v1
from openai import OpenAI
client = OpenAI(
  api_key="kimi_live_...",
  base_url="https://api.8bit.ca/v1"
)
print(client.chat.completions.create(
  model="model",
  messages=[{"role":"user","content":"Привет"}]
).choices[0].message.content)
Модели
model
1M ctx · все чужие 404
Биллинг
Токены с баланса
balance + upstream

Быстрый старт — 3 минуты

  1. 1
    Получи ключ
    Админ выдаёт kimi_live_... (показывается 1 раз). Или зарегистрируйся — кабинет создаст ключ.
  2. 2
    Укажи Base URL
    https://api.8bit.ca/v1 — весь API только на api.8bit.ca.
  3. 3
    Модель model
    Любая другая → 404 model_not_allowed.

Авторизация

Ключ kimi_live_... можно передать двумя способами. Idempotency-Key — против двойного списания.

Authorization: Bearer kimi_live_a60f...
# или
x-api-key: kimi_live_...
Idempotency-Key: my-request-123
Поведение
  • Без ключа → 401 missing_api_key
  • Revoked/expired → 401 invalid_api_key
  • Баланс кончился → 402 insufficient_balance
  • Каждый ответ содержит X-Request-ID

Модели

model
Flagship · 1M ctx
recommended
model
Fast · 1M ctx
reasoning · vision · tools

GET /v1/models отдаёт только эти две. Любую другую → 404.

POST /v1/chat/completions

OpenAI-совместимый. Поля: model, messages, stream, max_tokens, temperature, top_p, tools, tool_choice, response_format, stop, frequency_penalty, presence_penalty, seed, user, parallel_tool_calls.

curl https://api.8bit.ca/v1/chat/completions \
  -H "Authorization: Bearer kimi_live_..." \
  -d '{"model":"model","messages":[{"role":"user","content":"Привет"}],"max_tokens":200}'
{
  "id":"chatcmpl-...",
  "model":"model",
  "choices":[{"message":{"role":"assistant","content":"Привет!"}}],
  "usage":{"prompt_tokens":299,"completion_tokens":353}
}

Streaming — SSE

{"model":"model","messages":[...],"stream":true}
# → text/event-stream
data: {"choices":[{"delta":{"content":"Привет"}}]}
data: {"choices":[{"finish_reason":"stop"}],"usage":{...}}
data: [DONE]
Gateway не буферизует — проксирует realtime. Финальный чанк с usage. При обрыве списывается только подтверждённый output.

Tools

Прозрачный прокси. Gateway сам tools не исполняет — возвращает tool_calls, клиент исполняет.

{"tools":[{"type":"function","function":{"name":"get_weather","parameters":{"type":"object","properties":{"city":{"type":"string"}}}}}],"tool_choice":"auto"}

Sessions — экономия до 86%

Вместо отправки всей истории — шлёшь только новый месседж. Сервер держит историю и жмёт контекст: summary + recent 10 + relevant, hard cap 8000. Billable — только новый input + output.
POST /v1/sessions {"model":"model"} → {"id":"sess_..."}
POST /v1/sessions/sess_.../messages {"content":"Привет"}
# → {"choices":[...],"_context_efficiency":{"raw":12800,"optimized":5300,"saved":7500,"compression_ratio":58.6}}

Account & Usage

GET /v1/account
balance allocated/used/remaining
GET /v1/usage
период all — input/output/billable
GET /api/client/*
кабинет: chart + requests + inspector

Ошибки — OpenAI формат

401 {"error":{"message":"Invalid API key.","type":"authentication_error","code":"invalid_api_key"}}
402 {"error":{"message":"Insufficient balance.","type":"billing_error","code":"insufficient_balance"}}
404 {"error":{"message":"Model 'gpt-4' not available","type":"invalid_request_error","code":"model_not_allowed"}}
429 {"error":{"type":"rate_limit_error","code":"rate_limit_exceeded"}}

Все ответы с X-Request-ID. Логи без Authorization / prompts.

Биллинг — двойной учёт

  • Ledger A — upstream: prompt + completion + estimated_cost (0.001817/1k) — только админу.
  • Ledger B — customer: списанное с баланса — клиенту.
  • Immutable usage_ledger + SELECT ... FOR UPDATE резервация — нет double-spend / negative.
  • Idempotency-Key — повтор не списывает дважды.

SDK & IDE

from openai import OpenAI
client = OpenAI(api_key="kimi_live_...", base_url="https://api.8bit.ca/v1")
print(client.chat.completions.create(
  model="model", messages=[{"role":"user","content":"hi"}]
).choices[0].message.content)
import OpenAI from "openai";
const c = new OpenAI({ apiKey: process.env.KEY, baseURL: "https://api.8bit.ca/v1" });
await c.chat.completions.create({ model:"model", messages:[{role:"user",content:"hi"}] });
opencode.json: {"provider":{"kimi":{"npm":"@ai-sdk/openai-compatible","options":{"baseURL":"https://api.8bit.ca/v1","apiKey":"{env:CUSTOM_API_KEY}"}}}}
Cline/Cursor: Settings → OpenAI Compatible → Base URL https://api.8bit.ca/v1 → Model model → Key kimi_live_...