API текстовых моделей
Claude, GPT, Gemini, Grok, DeepSeek, Qwen и другие модели через один OpenAI-совместимый API. Подходит любой клиент или SDK для OpenAI: достаточно сменить базовый адрес и ключ.
Базовый адрес
https://themegabrain.ru/api/gateway/v1
Ключ
Ключ передаётся в каждом запросе в заголовке Authorization: Bearer <ключ>. Скопировать его можно в кабинете на странице «API-ключ». Тот же ключ работает с API генерации изображений и видео.
export MEGABRAIN_API_KEY="ваш ключ"Держите ключ в секрете: с ним можно тратить ваш баланс. Если ключ утёк, сбросьте его на той же странице — старый перестанет работать.
Запрос к модели
Формат запроса и ответа — как у OpenAI Chat Completions. ID модели берите из каталога текстовых моделей.
curl https://themegabrain.ru/api/gateway/v1/chat/completions \
-H "Authorization: Bearer $MEGABRAIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-sonnet-5.5",
"messages": [
{"role": "system", "content": "Ты — полезный ассистент. Отвечай коротко."},
{"role": "user", "content": "Привет! Что ты умеешь?"}
]
}'Текст ответа — в choices[0].message.content, расход токенов — в usage. Заголовок X-Generation-Id содержит ID запроса: укажите его, если пишете в поддержку.
{
"id": "gen-…",
"model": "anthropic/claude-sonnet-5.5",
"choices": [
{
"index": 0,
"message": { "role": "assistant", "content": "Привет! Я могу…" },
"finish_reason": "stop"
}
],
"usage": { "prompt_tokens": 31, "completion_tokens": 120, "total_tokens": 151, … }
}Потоковый ответ
С "stream": true ответ приходит по частям (server-sent events). Последний фрагмент перед data: [DONE] содержит usage. Строки, которые начинаются с двоеточия, держат соединение открытым — их нужно пропускать. SDK делают это сами.
curl https://themegabrain.ru/api/gateway/v1/chat/completions \
-H "Authorization: Bearer $MEGABRAIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-sonnet-5.5",
"stream": true,
"messages": [{"role": "user", "content": "Расскажи короткую историю про кота"}]
}'OpenAI SDK
Укажите базовый адрес и ключ — остальной код не меняется.
Python
import os
from openai import OpenAI
client = OpenAI(
base_url="https://themegabrain.ru/api/gateway/v1",
api_key=os.environ["MEGABRAIN_API_KEY"], # ключ со страницы «API-ключ»
)
response = client.chat.completions.create(
model="anthropic/claude-sonnet-5.5",
messages=[{"role": "user", "content": "Привет!"}],
)
print(response.choices[0].message.content)
# Потоковый ответ: печатаем текст по мере поступления
stream = client.chat.completions.create(
model="anthropic/claude-sonnet-5.5",
messages=[{"role": "user", "content": "Расскажи короткую историю про кота"}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)JavaScript / TypeScript
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://themegabrain.ru/api/gateway/v1",
apiKey: process.env.MEGABRAIN_API_KEY, // ключ со страницы «API-ключ»
});
const response = await client.chat.completions.create({
model: "anthropic/claude-sonnet-5.5",
messages: [{ role: "user", content: "Привет!" }],
});
console.log(response.choices[0].message.content);Изображения во входе
Модели, которые видят изображения, принимают картинку частью сообщения: ссылкой или data URL в base64. Такие модели отмечены в каталоге.
{
"model": "anthropic/claude-sonnet-5.5",
"messages": [
{
"role": "user",
"content": [
{ "type": "text", "text": "Что на этом фото?" },
{ "type": "image_url", "image_url": { "url": "https://example.com/photo.jpg" } }
]
}
]
}Параметры
Основные поля запроса. Остальные поля OpenAI Chat Completions передаются модели как есть. Какие параметры поддерживает конкретная модель, видно в поле supported_parameters в списке моделей.
| Параметр | Тип | Описание |
|---|---|---|
| model | string | Обязательный. ID модели из каталога, например anthropic/claude-sonnet-5.5. |
| messages | array | Обязательный. Диалог в формате OpenAI: роли system, user, assistant, tool. |
| stream | boolean | Потоковый ответ (server-sent events). По умолчанию false. |
| max_tokens | integer | Максимум токенов в ответе. |
| temperature | number | Случайность ответа, от 0 до 2. |
| top_p | number | Nucleus-сэмплирование, от 0 до 1. |
| stop | string | string[] | До 4 строк, на которых модель остановится. |
| seed | integer | Повторяемость ответа там, где модель это поддерживает. |
| response_format | object | Ответ в JSON: {"type": "json_object"} или {"type": "json_schema", "json_schema": {…}}. |
| tools | array | Функции, которые модель может вызвать (формат OpenAI). |
| tool_choice | string | object | none, auto, required или конкретная функция. |
| reasoning_effort | string | Глубина рассуждений для моделей, которые это умеют: none, minimal, low, medium, high, xhigh, max. |
| user | string | ID вашего пользователя, до 256 символов. Для своей аналитики. |
Список моделей
Модели, доступные по API, в формате OpenAI. У каждой модели есть id, название, размер контекста (context_length), входные модальности (architecture.input_modalities) и поддерживаемые параметры (supported_parameters).
curl "https://themegabrain.ru/api/gateway/v1/models?q=claude&input_modalities=image" \
-H "Authorization: Bearer $MEGABRAIN_API_KEY"Фильтры в строке запроса: q — поиск по ID, названию и описанию, input_modalities — например image, supported_parameters — например tools, limit и offset — постраничный вывод (до 1000 за раз). total_count — сколько моделей подошло под фильтр. Цены в рублях удобнее смотреть в каталоге.
Оплата
Каждый запрос оплачивается с рублёвого баланса по цене модели: отдельно входные и выходные токены. Цены указаны в рублях за миллион токенов в каталоге. Если средств не хватает, API вернёт 402 — пополните баланс на странице «Баланс». Бесплатные модели баланс не расходуют, но у них ограничена частота запросов.
Ошибки
Ошибка приходит с HTTP-статусом и объектом error: code — статус, message — описание, metadata.megabrain_error_type — точная причина. Если ошибка случилась уже во время потокового ответа, она придёт последним фрагментом с объектом error и finish_reason: "error".
{
"error": {
"code": 402,
"message": "…",
"metadata": {
"error_type": "payment_required",
"megabrain_error_type": "insufficient_credits"
}
}
}| Статус | Что значит |
|---|---|
| 400 | Некорректный запрос: битый JSON, нет обязательного поля, значение вне диапазона или промпт длиннее контекста модели. |
| 401 | Нет ключа или ключ неверный. |
| 402 | На балансе недостаточно средств. Пополните баланс и повторите запрос. |
| 403 | Запрос к этой модели не разрешён. |
| 404 | Неизвестная модель или неверный адрес. |
| 429 | Слишком много запросов. Подождите и повторите. |
| 502 | Ошибка у провайдера модели. Подробности — в error.metadata.provider_code и error.metadata.raw. |
| 503 | Модель временно недоступна. Повторите позже, увеличивая паузу. |
Получите ключ
Войдите, пополните баланс и скопируйте ключ на странице «API-ключ».
Получить API-ключ