Интеграции с IDE и CLI

Cursor, Cline, Roo Code, Continue, Aider, Codex, Windsurf, Copilot, Claude Code

KodikRouter — это OpenAI-совместимый HTTP API. Любой современный AI-агент или IDE-расширение, поддерживающий «Custom OpenAI Base URL», работает с нами без модификаций. Один ключ, один URL, 400+ моделей OpenAI, Anthropic, Google, DeepSeek, Qwen и Mistral — одна квитанция в рублях.

Базовые настройки

Base URLhttps://api.kodikrouter.ru/v1
ЗаголовокAuthorization: Bearer sk-kr_live_...
ПротоколOpenAI Chat Completions + Embeddings + Models
СтримингПолная поддержка SSE
Tool callsДа, если модель поддерживает
VisionДа, если модель поддерживает
ВалютаРубли по курсу ЦБ + наценка тарифа
Никакой смены SDK
Если вы используете openai SDK — просто укажите наш base_url. Downstream-модель может быть Claude или Gemini, но клиент по-прежнему вызывает client.chat.completions.create(...).

Получение API-ключа

  1. Войдите на kodikrouter.ru.
  2. Пополните баланс в разделе Биллинг — запросы списываются с баланса.
  3. Откройте API Keys → «Новый ключ».
  4. Выберите scope gateway:write.
  5. Скопируйте секрет сразу — он показывается один раз. Формат: sk-kr_live_<...> (production) или sk-kr_test_<...> (sandbox).
bash
export KODIKROUTER_API_KEY="sk-kr_live_xxxxxxxxxx"

IDE и десктопные клиенты

Cursor, Cline, Roo Code, Continue, Windsurf

Cursor

Cursor 2.x поддерживает Custom OpenAI Provider в Settings → Models.

  1. Cmd/Ctrl + , → поиск «Models» → откройте страницу Models.
  2. Прокрутите до секции OpenAI API Key.
  3. Включите Override OpenAI Base URL.
  4. Вставьте URL https://api.kodikrouter.ru/v1 и ключ sk-kr_live_....
  5. Нажмите Verify — должен загореться зелёный индикатор.
  6. В списке Custom Models добавьте нужные ID моделей, например anthropic/claude-sonnet-4.6, openai/gpt-5.5, deepseek/deepseek-v3.2.
  7. В чате (верхний правый угол) выберите модель.
Whitelist по строкам
Cursor проверяет имена моделей по строгому списку. Если модель не появляется в выборе — сначала добавьте её в Custom Models.

Cline (VS Code)

Cline (бывший Claude Dev) поддерживает OpenAI-совместимые провайдеры из коробки.

  1. Установите расширение Cline в VS Code.
  2. Откройте панель Cline → ⚙ Settings.
  3. API Provider: OpenAI Compatible.
  4. Base URL: https://api.kodikrouter.ru/v1.
  5. API Key: sk-kr_live_....
  6. Model ID: любая модель из каталога, например anthropic/claude-sonnet-4.6.

Или через settings.json:

json
{
  "cline.apiProvider": "openai",
  "cline.openAiBaseUrl": "https://api.kodikrouter.ru/v1",
  "cline.openAiApiKey": "sk-kr_live_xxxxxxxxxx",
  "cline.openAiModelId": "anthropic/claude-sonnet-4.6"
}

В разделе Model Configuration включите флаги под вашу модель:

  • Image Support — только для vision-моделей (GPT-5.5, Claude Sonnet 4.6).
  • Computer Use — только для моделей с tool-calling.

Каталог по адресу /catalog показывает бэйджи возможностей для каждой модели.

Roo Code (VS Code)

Roo Code — форк Cline с мультиагентными режимами (Code, Architect, Ask, Debug).

  1. Кликните иконку Roo Code в Activity Bar → Settings.
  2. API Provider: OpenAI Compatible.
  3. Base URL: https://api.kodikrouter.ru/v1.
  4. Model ID: например anthropic/claude-sonnet-4.6.
  5. Нажмите Verify.
json
{
  "roo-cline.apiProvider": "openai-compatible",
  "roo-cline.openAiBaseUrl": "https://api.kodikrouter.ru/v1",
  "roo-cline.openAiApiKey": "sk-kr_live_xxxxxxxxxx",
  "roo-cline.openAiModelId": "anthropic/claude-sonnet-4.6"
}
Для автономного режима Roo Code нужен tool-calling — выбирайте модель, у которой в каталоге есть бэйдж tools.

Continue.dev (VS Code / JetBrains)

В ~/.continue/config.yaml:

yaml
name: KodikRouter
version: 1.0.0
schema: v1

models:
  - name: Claude Sonnet via KodikRouter
    provider: openai
    model: anthropic/claude-sonnet-4.6
    apiBase: https://api.kodikrouter.ru/v1
    apiKey: sk-kr_live_xxxxxxxxxx
    capabilities:
      - tool_use
      - image_input
    roles:
      - chat
      - edit
      - apply

  - name: GPT-5.5 via KodikRouter
    provider: openai
    model: openai/gpt-5.5
    apiBase: https://api.kodikrouter.ru/v1
    apiKey: sk-kr_live_xxxxxxxxxx
    roles:
      - chat
      - edit

  - name: Qwen Coder Plus
    provider: openai
    model: qwen/qwen3-coder-plus
    apiBase: https://api.kodikrouter.ru/v1
    apiKey: sk-kr_live_xxxxxxxxxx
    roles:
      - autocomplete

  - name: text-embedding-3-small
    provider: openai
    model: openai/text-embedding-3-small
    apiBase: https://api.kodikrouter.ru/v1
    apiKey: sk-kr_live_xxxxxxxxxx
    roles:
      - embed
Не забудьте про Local Config
В боковой панели Continue переключитесь с Default Assistant на Local Config — иначе config.yaml игнорируется.

Windsurf

  1. Settings → CascadeCustom Models.
  2. Добавьте кастомную модель с Base URL https://api.kodikrouter.ru/v1 и ключом sk-kr_live_....
  3. Добавьте каждый ID модели — Windsurf, как Cursor, проверяет по строгому списку.
  4. В чате выберите новый entry из дропдауна моделей.

GitHub Copilot Chat — BYOK

Copilot Chat поддерживает Bring Your Own Key для OpenAI-совместимых провайдеров.

  1. Откройте Copilot Chat → селектор моделей → Manage models....
  2. Add providerOpenAI Compatible.
  3. Base URL: https://api.kodikrouter.ru/v1.
  4. Добавьте ID моделей и выберите одну в дропдауне.
Inline tab-completion (Copilot Autocomplete) по-прежнему использует модель GitHub — BYOK работает только для чата.

CLI-агенты

Aider, OpenAI Codex CLI, Claude Code

Aider

Aider уже понимает OpenAI-протокол. Две переменные окружения — и готово:

bash
export OPENAI_API_BASE="https://api.kodikrouter.ru/v1"
export OPENAI_API_KEY="sk-kr_live_xxxxxxxxxx"

aider --model openai/anthropic/claude-sonnet-4.6
Зачем префикс openai/
У Aider есть жёсткий whitelist моделей. Префикс openai/ заставляет его обойти валидатор и направлять запросы на OPENAI_API_BASE. Строка после openai/ уходит к KodikRouter как model ID.

Per-project конфиг в .aider.conf.yml:

yaml
openai-api-base: https://api.kodikrouter.ru/v1
openai-api-key: sk-kr_live_xxxxxxxxxx
model: openai/anthropic/claude-sonnet-4.6
weak-model: openai/openai/gpt-4o-mini
editor-model: openai/anthropic/claude-sonnet-4.6
editor-edit-format: editor-diff

Architect-режим

Связка: одна модель планирует, вторая пишет код.

bash
aider --architect \
  --model        openai/anthropic/claude-opus-4.6 \
  --editor-model openai/deepseek/deepseek-v3.2 \
  --editor-edit-format editor-diff

Качество планирования от Opus, скорость и цена эмиссии кода — от V3.2.

OpenAI Codex CLI

bash
export OPENAI_BASE_URL="https://api.kodikrouter.ru/v1"
export OPENAI_API_KEY="sk-kr_live_xxxxxxxxxx"

codex --model openai/gpt-5.5

Или в ~/.codex/config.toml:

toml
[provider]
base_url = "https://api.kodikrouter.ru/v1"
api_key  = "sk-kr_live_xxxxxxxxxx"

[model]
default = "openai/gpt-5.5"

Claude Code (через Anthropic-bridge proxy)

Claude Code говорит на Anthropic Messages диалекте (POST /v1/messages), а не на /v1/chat/completions. Поэтому напрямую он не работает — нужен мини-прокси для трансляции.

Стандарт сообщества — claude-code-proxy. Он принимает запросы в формате Anthropic, переводит в OpenAI-формат, вызывает наш endpoint и переводит ответ обратно.

bash
# 1. Один раз поднимаем прокси
git clone https://github.com/fuergaosi233/claude-code-proxy
cd claude-code-proxy
echo "OPENAI_API_KEY=sk-kr_live_xxxxxxxxxx"          > .env
echo "OPENAI_BASE_URL=https://api.kodikrouter.ru/v1" >> .env
echo "BIG_MODEL=anthropic/claude-opus-4.6"           >> .env
echo "MIDDLE_MODEL=anthropic/claude-sonnet-4.6"      >> .env
echo "SMALL_MODEL=anthropic/claude-haiku-4.6"        >> .env
python start_proxy.py  # дефолтный порт 8082

# 2. Указываем Claude Code на прокси
export ANTHROPIC_BASE_URL="http://localhost:8082"
export ANTHROPIC_API_KEY="any-value"  # прокси его игнорирует

claude

Прокси маппит тиры Claude Code (Opus / Sonnet / Haiku) на конкретные ID каталога KodikRouter, которые вы задали в env-переменных.

Программное использование

SDK на Python, Node, LangChain, LlamaIndex

Python (openai SDK ≥ 1.0)

python
from openai import OpenAI

client = OpenAI(
    base_url="https://api.kodikrouter.ru/v1",
    api_key="sk-kr_live_xxxxxxxxxx",
)

response = client.chat.completions.create(
    model="anthropic/claude-sonnet-4.6",
    messages=[{"role": "user", "content": "Напиши хайку про Python."}],
)
print(response.choices[0].message.content)

Node / TypeScript

typescript
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.kodikrouter.ru/v1",
  apiKey: process.env.KODIKROUTER_API_KEY!,
});

const result = await client.chat.completions.create({
  model: "openai/gpt-5.5",
  messages: [{ role: "user", content: "Hello!" }],
});

console.log(result.choices[0].message.content);

Стриминг

python
stream = client.chat.completions.create(
    model="anthropic/claude-sonnet-4.6",
    messages=[{"role": "user", "content": "Stream a sonnet."}],
    stream=True,
)
for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)

Tool calling

python
tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "parameters": {
            "type": "object",
            "properties": {"city": {"type": "string"}},
            "required": ["city"],
        },
    },
}]

resp = client.chat.completions.create(
    model="anthropic/claude-sonnet-4.6",
    messages=[{"role": "user", "content": "Погода в Москве?"}],
    tools=tools,
)

LangChain

python
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    base_url="https://api.kodikrouter.ru/v1",
    api_key="sk-kr_live_xxxxxxxxxx",
    model="anthropic/claude-sonnet-4.6",
)

LlamaIndex

python
from llama_index.llms.openai import OpenAI

llm = OpenAI(
    api_base="https://api.kodikrouter.ru/v1",
    api_key="sk-kr_live_xxxxxxxxxx",
    model="anthropic/claude-sonnet-4.6",
)

Выбор модели

Опинионированный набор пресетов для типичных задач

Полный каталог с ценами, контекстом и бэйджами возможностей — /catalog. Несколько проверенных пресетов для кодинг-агентов:

Глубокий рефакторинг / сложные рассужденияanthropic/claude-opus-4.6Лучшее multi-step reasoning, дороже
Ежедневный чат и правкиanthropic/claude-sonnet-4.6Быстро, не дорого, отличный tool-calling
Дешёвый автокомплит / inline-правкиdeepseek/deepseek-v3.2Очень дёшево, быстро, хорошая эмиссия кода
Code-only пайплайныqwen/qwen3-coder-plusСильно в коде, низкая цена
Vision + понимание диаграммopenai/gpt-5.5 или anthropic/claude-sonnet-4.6У обоих есть image_input
Эмбеддинги (search / RAG)openai/text-embedding-3-smallДёшево, быстро, 1536 измерений

Список моделей через API:

bash
curl -s https://api.kodikrouter.ru/v1/models \
  -H "Authorization: Bearer sk-kr_live_xxxxxxxxxx" \
  | jq '.data[] | .id' | head

Troubleshooting

Типичные ошибки и как их решать

401 Invalid api key

  • Ключ без префикса sk-kr_, либо вы скопировали без завершающих символов.
  • Проверьте, что ключ не отключён в /keys.

402 Insufficient credits

  • Пополните баланс в /billing. Каждый запрос списывает стоимость с баланса организации в рублях.

403 Model not allowed for this key

  • У API-ключа задан models_allowlist. Расширьте список в дашборде или выберите модель из allowlist.

404 Model not found

  • Проверьте точный ID в GET /v1/models. ID чувствительны к регистру и включают префикс провайдера (например anthropic/claude-sonnet-4.6, не claude-sonnet-4.6).

429 Rate limited

  • Достигнут RPM-лимит вашего тира. Пополните баланс (повышает тир) или напишите в поддержку для override.

Стриминг зависает в Cline / Roo Code

  • Отключите Image Support, если модель не поддерживает vision.
  • Выберите модель с бэйджем streaming в каталоге.

Tool calls не делаются

  • У модели должна быть способность tools. Проверьте в каталоге или через GET /v1/catalog/models?supported_parameters=tools.

usage.cost = 0 (стоимость нулевая)

  • KodikRouter автоматически фолбэкается на цены каталога — биллинг остаётся точным. Если в дашборде показывается 0 ₽ при успешных запросах, проверьте, что у модели в каталоге выставлены цены.
Нужна помощь с конкретным запросом?
Загляните в /usage — каждая строка показывает статус, latency, стоимость и код ошибки. Или вытащите данные через GET /v1/usage/activity?limit=20 с JWT. Для саппорта пишите на admin@vibekodik.ru и обязательно прилагайте X-KodikRouter-Request-Id из заголовков ответа.