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 модели берите из каталога текстовых моделей.

POSThttps://themegabrain.ru/api/gateway/v1/chat/completions
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 в списке моделей.

ПараметрТипОписание
modelstringОбязательный. ID модели из каталога, например anthropic/claude-sonnet-5.5.
messagesarrayОбязательный. Диалог в формате OpenAI: роли system, user, assistant, tool.
streambooleanПотоковый ответ (server-sent events). По умолчанию false.
max_tokensintegerМаксимум токенов в ответе.
temperaturenumberСлучайность ответа, от 0 до 2.
top_pnumberNucleus-сэмплирование, от 0 до 1.
stopstring | string[]До 4 строк, на которых модель остановится.
seedintegerПовторяемость ответа там, где модель это поддерживает.
response_formatobjectОтвет в JSON: {"type": "json_object"} или {"type": "json_schema", "json_schema": {…}}.
toolsarrayФункции, которые модель может вызвать (формат OpenAI).
tool_choicestring | objectnone, auto, required или конкретная функция.
reasoning_effortstringГлубина рассуждений для моделей, которые это умеют: none, minimal, low, medium, high, xhigh, max.
userstringID вашего пользователя, до 256 символов. Для своей аналитики.

Список моделей

Модели, доступные по API, в формате OpenAI. У каждой модели есть id, название, размер контекста (context_length), входные модальности (architecture.input_modalities) и поддерживаемые параметры (supported_parameters).

GEThttps://themegabrain.ru/api/gateway/v1/models
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-ключ