← Блог

Свой API-ключ в редакторе и агенте: что подключается, а что нет

· 7 минут чтения

Коротко

Подключить свой ключ вместо подписки можно не к любому инструменту, и дело не в ключе, а в том, куда инструмент ходит. Универсального «вставьте ключ и всё» не существует: половина популярных агентов жёстко прибита к своему вендору.

Правило, по которому всё решается, одно:

Инструмент заработает на вашем ключе, если у него настраивается адрес API и он говорит в OpenAI-совместимом формате.

Обе части обязательны. Настраиваемый адрес без совместимого формата не поможет - ключ вставится, запрос уйдёт и вернётся ошибкой.

Блок-схема, показывающая успешный статус 401 для совместимого формата и ошибку 404 для несовместимого.
Несовпадение форматов API гарантированно приводит к ошибке маршрутизации запроса.

Ниже - как проверить любой инструмент за минуту, что подключается, что нет и почему.

Почему «OpenAI-совместимый» вообще что-то значит

Формат запроса к модели у разных вендоров разный. Исторически сложилось, что формат OpenAI - ручка /v1/chat/completions, поле model, массив messages - стал общим языком: его повторяют почти все сервисы, потому что под него уже написаны все библиотеки.

Отсюда практическое следствие: смена модели или сервиса - это две строки, адрес и ключ, если обе стороны говорят на этом языке.

from openai import OpenAI

client = OpenAI(
    api_key="ar-...",
    base_url="https://api.altrouter.ai/v1",
)

resp = client.chat.completions.create(
    model="claude-sonnet-5",
    messages=[{"role": "user", "content": "привет"}],
)

Ровно этот же приём работает в любом инструменте, который внутри использует библиотеку openai или даёт поле «Base URL» в настройках.

Но у части вендоров есть свой формат. У Anthropic это ручка /v1/messages с другой структурой запроса. Инструмент, написанный под неё, чужой адрес принять не сможет, даже если поле для адреса в нём есть.

Проверка за минуту

Не гадайте по документации инструмента - спросите сам сервис. Две команды.

Есть ли OpenAI-совместимая ручка:

curl -s -o /dev/null -w "%{http_code}\n" \
  -X POST https://api.altrouter.ai/v1/chat/completions \
  -H 'content-type: application/json' -d '{}'

401 - ручка есть, не хватает только ключа. Это то, что нужно. 404 - ручки нет, инструмент под этот формат не подключится.

Есть ли Anthropic-совместимая ручка:

curl -s -o /dev/null -w "%{http_code}\n" \
  -X POST https://api.altrouter.ai/v1/messages \
  -H 'content-type: application/json' -d '{}'

На нашем шлюзе это 404 - и это прямой ответ на вопрос, почему часть инструментов через нас не идёт.

Тот же приём годится для любого другого сервиса: подставьте его адрес и посмотрите на код. 401 или 403 означают «ручка на месте», 404 - «такого формата здесь нет».

Что подключается

Ваш собственный код. Любой скрипт на библиотеке openai для Python или Node - две строки, показанные выше. Сюда же попадают LangChain, LlamaIndex и всё, что принимает base_url.

Агенты и расширения с выбором «OpenAI Compatible». Если в настройках провайдера есть такой пункт и под ним поля для адреса и ключа - заработает. Порядок один и тот же: выбрать OpenAI-совместимого провайдера, вписать https://api.altrouter.ai/v1, вставить ключ ar-..., вписать идентификатор модели ровно как на витрине.

Инструменты с конфигом. Там, где провайдер описывается в JSON или YAML, нужны те же три поля - baseUrl, apiKey, список моделей.

Схема из трех обязательных элементов настройки: адрес, ключ и модель.
Три обязательных параметра для подключения любого инструмента к стороннему API-шлюзу.

🔴 Проверяйте каждый шаг, а не только итог. Самая частая поломка - лишний пробел или слеш в конце адреса: /v1 вместо /v1 даёт 404 Cannot POST /api/v1%20/..., и выглядит это как «сервис не работает». Прежде чем менять настройки дальше, посмотрите, что записалось в конфиг.

Что не подключается

Claude Code. Ходит в Anthropic-совместимый /v1/messages. У нас этой ручки нет - ключ вставится, работать не будет.

Cursor. По той же причине.

Это не временная недоработка, о которой стоит написать в поддержку: это разница форматов. Пока у шлюза нет Anthropic-совместимой ручки, инструменты, написанные под неё, через него не пойдут. Если ваш рабочий инструмент - именно Claude Code или Cursor, заводить ключ ради них не нужно.

Ещё одна честная граница: мы даём API, а не плагин к редактору. Автодополнения по Tab и кнопки «объясни выделенное» у нас нет и не будет - это работа расширений, а не шлюза.

Что даёт свой ключ вместо подписки

Разница не в цене за месяц, а в модели оплаты.

Два графика сравнения: прямая линия постоянных трат для подписки и волнообразная линия для оплаты по ключу.
Оплата по ключу выгодна при неравномерной нагрузке, тогда как подписка идеальна для постоянной.

Подписка - фиксированная сумма и лимиты внутри. Выгодна, если вы пользуетесь инструментом каждый день и упираетесь в эти лимиты.

Ключ - вы платите за то, что потратили. Выгоден при неровной нагрузке: неделю активно, две недели почти нет.

СценарийЧто дешевле
Каждый день, помногуподписка
Несколько раз в неделюключ
Пять инструментов, каждому нужен доступключ - он один на все
Нужна конкретная модель, которой нет в подпискеключ

Отдельный плюс ключа - один счёт и один баланс на всё: скрипты, агент, эксперимент в ноутбуке. Отдельный минус - счёт заранее неизвестен, и это надо закрывать лимитом на ключ, а не самодисциплиной.

С чего начать

  1. Проверьте инструмент двумя curl-ами до того, как что-то настраивать.
  2. Заведите отдельный ключ под каждый инструмент. Так видно, кто сколько тратит, и один ключ можно отозвать, не трогая остальные.
  3. Поставьте лимит трат на ключ. Агент в цикле умеет удивлять.
  4. Впишите идентификатор модели ровно как на витрине - большинство «не работает» это опечатка в имени модели.
  5. Начните с лёгкой модели. Убедитесь, что связь есть, и только потом переключайтесь на флагман.

Все 44 модели с идентификаторами и ценами - на витрине. Про то, во сколько обходится работа с агентом, - разбор вайбкодинга, а про выбор модели под кодовые задачи - здесь. Что выгоднее в вашем случае, ключ или подписка, - считали отдельно.

FAQ

Что значит «OpenAI-совместимый API»?

Что сервис принимает запросы в том же формате, что и OpenAI: ручка /v1/chat/completions, поле model, массив messages. Такой формат повторяет большинство сервисов, поэтому переезд между ними сводится к смене адреса и ключа, без переписывания кода.

Работает ли Claude Code через ваш API?

Нет. Claude Code обращается к Anthropic-совместимой ручке /v1/messages, а на нашем шлюзе её нет - есть OpenAI-совместимая /v1/chat/completions. Ключ вставится, но запросы работать не будут. То же касается Cursor и любого инструмента, написанного под формат Anthropic.

Как быстро понять, подключится ли мой инструмент?

Посмотрите в его настройках, есть ли поле для адреса API и пункт «OpenAI Compatible» среди провайдеров. Если есть оба - почти наверняка подключится. Если провайдеры заданы жёстко списком без своего адреса - нет.

Почему после настройки приходит 404?

Чаще всего из-за адреса: лишний пробел, лишний слеш в конце или потерянный /v1. Проверьте, что именно записалось в конфиг, а не что вы вводили. Второй по частоте случай - инструмент ходит в ручку другого формата, которой у сервиса нет.

Что выгоднее - подписка или свой ключ?

Зависит от ровности нагрузки. При ежедневной плотной работе дешевле подписка, при неровной - ключ, потому что вы платите только за потраченное. Плюс один ключ обслуживает сразу несколько инструментов, а подписки покупаются на каждый отдельно.

Можно ли ограничить траты по ключу?

Да, и это стоит сделать до первого запуска агента. Лимит на ключ - единственная защита от цикла, который за ночь потратит месячный бюджет: сам по себе шлюз не знает, что запрос был лишним.