API и токены через CloseRouter

«Кодиум» хочет, чтобы бот сам отвечал на вопросы о расписании, пока администратор спит. Claude Code тут не поможет: он работает, пока ты пишешь ему в окне. Боту нужен свой доступ к модели, по которому программа обращается к ней сама, днём и ночью. Такой доступ называется API.

Чему научишься в этом уроке:
• объяснить, чем API отличается от Claude Code и сколько стоит один запрос;
• получить ключ CloseRouter и поставить на него лимит расходов;
• посмотреть актуальный список моделей и их цены;
• отправить первый запрос к модели из Python и найти его в расходах.

API: телефонная линия для программы

Claude Code похож на сотрудника, которому ты пишешь задания. API (программный интерфейс, способ одной программы обращаться к другой) похож на телефонную линию: твой бот сам звонит модели, задаёт вопрос и получает ответ. Ты в этом разговоре не участвуешь. Чтобы линия знала, кому выставить счёт, у программы есть ключ.

Токены: за что платят

Модель читает и пишет текст кусочками, они называются токенами. Токен примерно равен части слова. Платят отдельно за вход (всё, что программа отправила) и за выход (всё, что модель ответила), а цену пишут за миллион токенов. Выход дороже входа в несколько раз, поэтому длинные ответы стоят больше длинных вопросов.

Пример цен в CloseRouter на 09.10.2026 для модели claude-sonnet-5: 0,045 $ за миллион токенов входа и 0,224 $ за миллион выхода. На ней прошёл прогон этого курса. Цены меняются, свежие смотри в списке моделей, как показано ниже.

Схема цены одного запроса. Слева блок «Программа бота» отправляет «Вход: вопрос ученика + инструкция, N токенов» в блок «Модель через CloseRouter». Обратно идёт «Выход: ответ, M токенов». Внизу формула: цена = N × цена входа + M × цена выхода, обе цены за 1 млн токенов, из списка моделей.

Ключ и лимит в CloseRouter

CloseRouter это шлюз: посредник между твоей программой и моделями разных компаний. Один ключ открывает модели Anthropic, Google, OpenAI и других, оплата по факту с баланса в кабинете. Если ты идёшь дорожкой «без подписки», ключ у тебя уже есть: тот же, что в настройках Claude Code. На дорожке Pro подписка не включает API, ключ CloseRouter нужен отдельно.

Ключи выпускаются на странице ключей кабинета. При создании ключа задаётся лимит расходов: сумма в долларах и период (на день, на месяц или на всё время). Когда лимит исчерпан, модель перестаёт отвечать по этому ключу, и больше лимита не уйдёт. Для учёбы хватит небольшой суммы на месяц. Если на балансе ноль, платные модели отвечают ошибкой 402 insufficient_balance.

Ключ сразу положи в .env, как в уроке «Секреты и .env». В чат с агентом, в код и на скриншоты он не попадает.

Какие модели есть и сколько стоят

Названия моделей у шлюза свои и со временем меняются. Список с ценами отдаёт сам CloseRouter. В PowerShell это одна команда, вместо <твой ключ> подставь свой:

curl.exe https://api.closerouter.dev/v1/models -H "Authorization: Bearer <твой ключ>"

В ответе для каждой модели есть её имя (например, anthropic/claude-sonnet-5) и поле usd_per_million_tokens с ценой за миллион токенов. Можно попросить агента: «выполни этот запрос с ключом из .env и сделай таблицу: модель, цена входа, цена выхода». Так ключ не появится в истории команд.

Первый запрос из кода

Поставь две библиотеки: для обращения к модели и для чтения .env. На Windows пиши py, так команда точно попадёт в установленный Python:

py -m pip install anthropic python-dotenv

В .env проекта добавь адрес шлюза и ключ. Адрес пишется без /v1 на конце, библиотека допишет путь сама, так же как Claude Code:

ANTHROPIC_BASE_URL=https://api.closerouter.dev
ANTHROPIC_API_KEY=<твой ключ>

Файл first_request.py:

from dotenv import load_dotenv
from anthropic import Anthropic

load_dotenv()          # читаем .env: адрес шлюза и ключ
client = Anthropic()   # библиотека сама берёт ANTHROPIC_BASE_URL и ANTHROPIC_API_KEY

msg = client.messages.create(
    model="anthropic/claude-sonnet-5",   # пример на 09.10.2026, сверь со списком моделей
    max_tokens=200,
    messages=[{"role": "user", "content": "Во сколько обычно начинаются вечерние занятия в онлайн-школе? Ответь одним предложением."}],
)
print(msg.content[0].text)
print("Вход:", msg.usage.input_tokens, "токенов, выход:", msg.usage.output_tokens, "токенов")
Как запустить: в терминале в папке проекта набери py first_request.py. Ответ модели и число токенов появятся в двух строках. Строка load_dotenv() обязательна: без неё программа не увидит файл .env и сообщит, что ключа нет.

Для n8n и библиотек в стиле OpenAI адрес другой: https://api.closerouter.dev/v1, с /v1. Подключение модели в n8n подробно разобрано в уроке трека 2 «Подключаем модель».

Считаем стоимость

Цена запроса складывается из двух частей. Возьмём условные рубли, чтобы считать в уме: вход 3 ₽ за 1000 токенов, выход 15 ₽ за 1000 токенов. Запрос в 2000 токенов входа стоит 2000 ÷ 1000 × 3 = 6 ₽ за вход, к этому прибавляется выход. Реальные цены за миллион токенов в долларах на порядки ниже, считаются так же. Фактическое списание видно в кабинете CloseRouter, раздел «Использование»: там расход по дням, моделям и ключам.

Если не получилось

  • authentication_error или ошибка про ключ. Нет строки load_dotenv(), .env лежит в другой папке или ключ скопирован не целиком.
  • Модель «may not exist». Имя модели не совпадает со списком шлюза. Возьми точное имя из ответа /v1/models.
  • 402 insufficient_balance. На балансе ноль, пополни его в кабинете.
  • Ошибка пути или 404. Для библиотеки anthropic адрес без /v1. Проверь строку ANTHROPIC_BASE_URL.

Контрольный вопрос. Условная цена: вход 3 ₽ за 1000 токенов, выход 15 ₽ за 1000 токенов. Запрос бота школы занял 1500 токенов входа и 300 токенов выхода. Сколько стоит запрос целиком?

А4,5 ₽
Б9 ₽
В18 ₽
Г54 ₽

Подсказка: Посчитай вход и выход отдельно, каждый по своей цене, потом сложи.

На курсе задания проверяются автоматически. Решить первое задание бесплатно →  ·  Подобрать курс

Контрольный вопрос. Программа отработала неделю, а сегодня на каждый запрос получает 402 insufficient_balance. Что делать?

АСменить модель на другую
БУбрать /v1 из адреса шлюза
ВПополнить баланс в кабинете CloseRouter
ГВыпустить новый ключ в кабинете CloseRouter

Подсказка: Неделю всё работало, значит адрес и модель верные. Что могло закончиться?

На курсе задания проверяются автоматически. Решить первое задание бесплатно →  ·  Подобрать курс

Контрольный вопрос. Запуск first_request.py закончился ошибкой: модель с таким именем не найдена. Что проверить в первую очередь?

АПереустановить Python
БЗаписать ключ прямо в код
ВПроверить, что ключ в .env записан без пробелов
ГСверить имя модели со списком из /v1/models

Подсказка: Ключ и адрес программа нашла, раз ответ про модель. Откуда берутся точные имена?

На курсе задания проверяются автоматически. Решить первое задание бесплатно →  ·  Подобрать курс

Задание. МИССИЯ «Первый звонок модели». Выпусти ключ CloseRouter с лимитом (или проверь лимит на уже выданном), получи список моделей и выбери одну. Положи адрес и ключ в .env, запусти first_request.py со своим вопросом от лица ученика школы. Посчитай стоимость запроса по ценам выбранной модели из списка и сверь с разделом «Использование». Приложи: (1) скриншот ответа программы с числом токенов; (2) скриншот ключа, где видны сумма и период лимита (сам ключ закрыт); (3) расчёт стоимости: формула и итог в долларах; (4) скриншот строки расхода из кабинета. Принято, если: программа ответила и вывела число токенов; у ключа есть лимит с суммой и периодом; расчёт сделан по ценам из списка моделей и указана дата; ключа нет ни в коде, ни на скриншотах.

Подсказка: Сумма за один запрос выйдет очень маленькой, это нормально. Запиши её со всеми знаками после запятой.

✅ Готово, если: программа запускается без ошибок и выводит то, что просят в задании.

На курсе задания проверяются автоматически. Решить первое задание бесплатно →  ·  Подобрать курс

Что дальше

Твоя программа умеет сама обращаться к модели. В следующем уроке обратная задача: подключим к Claude Code внешний инструмент через MCP, чтобы агент сам читал файлы заказчика.

Итог:
• API нужен, когда модель работает внутри продукта без тебя;
• платят за токены входа и выхода, цена указана за миллион;
• ключ CloseRouter живёт в .env и всегда с лимитом расходов;
• имена и цены моделей берут из /v1/models, фактическое списание видно в разделе «Использование».

← Назад  ·  ↑ В начало урока  ·  ⌂ В начало курса  ·  Вперёд →

Школа Виктора Комлева