Документация
Мы говорим на том же протоколе, что OpenAI и Anthropic. В большинстве проектов достаточно поменять базовый адрес и ключ.
Подключение
Базовый адрес
https://mnogotokenov.ru/api/v1Авторизация
Authorization: Bearer mt-live-…Anthropic-клиенты
x-api-key: mt-live-…Формат ошибок
Эндпоинты
| Метод и путь | Что делает | Расход |
|---|---|---|
POST /api/v1/chat/completions | Основной эндпоинт OpenAI. Поддерживает stream: true. | по токенам |
POST /api/v1/responses | Responses API OpenAI. | по токенам |
POST /api/v1/messages | Messages API Anthropic, включая стриминг. | по токенам |
POST /api/v1/messages/count_tokens | Подсчёт токенов до отправки запроса. | бесплатно |
GET /api/v1/models | Список моделей с модификаторами. | бесплатно |
Примеры
Python, официальный SDK OpenAI
from openai import OpenAI
client = OpenAI(
base_url="https://mnogotokenov.ru/api/v1",
api_key="mt-live-…",
)
response = client.chat.completions.create(
model="gpt-5",
messages=[{"role": "user", "content": "Объясни рекурсию в двух фразах"}],
)
print(response.choices[0].message.content)
print(response.usage) # сколько токенов посчитал провайдерTypeScript, стриминг
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://mnogotokenov.ru/api/v1",
apiKey: process.env.MNOGO_TOKENOV_KEY,
});
const stream = await client.chat.completions.create({
model: "gpt-5",
messages: [{ role: "user", content: "Привет" }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}curl
curl https://mnogotokenov.ru/api/v1/chat/completions \
-H "Authorization: Bearer mt-live-…" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5",
"messages": [{"role": "user", "content": "Привет"}]
}'Anthropic SDK
import anthropic
client = anthropic.Anthropic(
base_url="https://mnogotokenov.ru/api",
api_key="mt-live-…",
)
message = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Привет"}],
)SDK Anthropic сам добавляет /v1 к базовому адресу, поэтому здесь он указан без него.
Ошибки
| Код | Что случилось | Что делать |
|---|---|---|
401 | Ключ не передан, отозван или неверен. | Проверьте заголовок и создайте новый ключ в кабинете. |
402 | Баланс исчерпан. | Пополните баланс. |
404 | Модель не подключена или выключена. | Сверьтесь со списком /models. |
503 | Ключи доноров исчерпаны — со стороны сервиса. | Повторите через несколько минут, мы уже видим проблему. |