modo. ДОКУМЕНТАЦИЯ / API Личный кабинет
РАЗРАБОТЧИКАМ / 01

Подключение
к моделям.

Всё необходимое для первого запроса к ИИ-модели через MODO.

01 / НАЧАЛО РАБОТЫ

Первый запрос

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

01Получите аккаунтДоступ ↗
02Получите API-ключКлючи в кабинете ↗
03Укажите модельСписок в кабинете ↗
ПРИМЕР ЗАПРОСАcURL
curl https://cf24caf415b6.vps.myjino.ru/v1/chat/completions \
  -H "Authorization: Bearer avs_ВАШ_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-4.1-nano",
    "messages": [
      {"role": "user", "content": "Привет!"}
    ]
  }'

Это текущий адрес сервиса. Используйте точный идентификатор модели из списка вашего аккаунта. При переходе на собственный домен изменится только базовый URL.

02 / ДОСТУП

Ключи доступа

Создайте отдельный ключ для каждого проекта. Передавайте его в заголовке Authorization с префиксом Bearer. Полное значение ключа показывается один раз — сохраните его сразу после создания.

Для запросов к моделям используйте ключ вида avs_…. Токен входа в кабинет для этих запросов не подходит. Отзыв ключа сразу закрывает доступ к API.

Храните ключ на сервере.Не размещайте его в коде страницы или мобильного приложения. Если ключ больше не нужен, отзовите его в кабинете.
03 / ВЫБОР МОДЕЛИ

Доступные модели

В личном кабинете показаны модели, открытые для вашего аккаунта. В запросе передавайте точный идентификатор выбранной модели в поле model. С клиентским API-ключом список доступен по GET /v1/models в формате {"object":"list","data":[...]}. Кабинет использует GET /models с токеном сессии.

СПИСОК МОДЕЛЕЙcURL
curl https://cf24caf415b6.vps.myjino.ru/v1/models \
  -H "Authorization: Bearer avs_ВАШ_КЛЮЧ"

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

04 / ИНТЕГРАЦИЯ

Подключение SDK

Для Chat Completions можно использовать клиент с совместимым форматом. Укажите базовый URL MODO с суффиксом /v1 и ваш ключ avs_…. Доступные методы: POST /v1/chat/completions и GET /v1/models. Другие методы SDK, включая Responses, Embeddings, Images и Audio, пока не поддерживаются.

ПРИМЕР PYTHONOpenAI SDK
from openai import OpenAI

client = OpenAI(
    api_key="avs_ВАШ_КЛЮЧ",
    base_url="https://cf24caf415b6.vps.myjino.ru/v1",
)
response = client.chat.completions.create(
    model="openai/gpt-4.1-nano",
    messages=[{"role": "user", "content": "Привет!"}],
)
print(response.choices[0].message.content)

Установите пакет командой pip install openai. Модель в примере доступна только при наличии её в вашем списке.

05 / API

Формат запроса

Основной метод — POST /v1/chat/completions. Тело запроса — JSON с полями model и messages. Успешный ответ возвращается в формате Chat Completions с полями id, choices и usage, когда модель предоставляет данные использования.

modelОбязательно

Идентификатор доступной модели.

messagesОбязательно

Массив сообщений с полями role и content.

streamНеобязательно

true для потокового ответа; по умолчанию обычный ответ.

Также поддерживаются temperature, top_p, max_tokens, max_completion_tokens, stop, tools, tool_choice, parallel_tool_calls, response_format, seed, frequency_penalty, presence_penalty, stream_options, user, reasoning, reasoning_effort, n, logprobs, top_logprobs и logit_bias. Остальные поля отклоняются с кодом 400. Поддержка конкретного параметра зависит от модели.

Размер JSON-запроса ограничен 1 МБ. Нельзя передать произвольный адрес сервера модели или использовать модель вне вашего списка.

06 / ОТВЕТЫ

Потоковый ответ

Добавьте "stream": true в тело запроса. Ответ придёт как text/event-stream: части ответа передаются по мере генерации, а завершение обозначается data: [DONE].

ПОЛЕ В ЗАПРОСЕJSON
{
  "model": "openai/gpt-4.1-nano",
  "messages": [{"role": "user", "content": "Привет!"}],
  "stream": true
}
07 / АККАУНТ

Методы кабинета

Обычно эти действия выполняются в веб-кабинете. Для автоматизации используйте методы ниже. Токен сессии из POST /auth/login действует 12 часов и нужен только для управления аккаунтом. Клиентский ключ avs_… нужен для /v1/*.

POST /auth/registerБез токена

Доступен при открытой регистрации. {"email":"…","password":"…"}. Пароль не короче 12 символов. Возвращает pending; код подтверждения приходит на почту.

POST /auth/verifyБез токена

{"token":"код из письма"}. После подтверждения аккаунт становится активным.

POST /auth/loginБез токена

{"email":"…","password":"…"}. Возвращает access_token сессии.

GET /meСессия

Статус аккаунта, лимиты и ограничения моделей.

GET /modelsСессия

Список моделей для кабинета. Для клиентского ключа используйте GET /v1/models.

POST /keysСессия

{"name":"мой проект"}. Возвращает новый ключ один раз.

GET /keysСессия

Список ключей и статусов без полного значения секрета.

DELETE /keys/{id}Сессия

Отзывает ключ по его числовому идентификатору.

GET /usageСессия

Расход за текущий месяц и последние 100 запросов.

Проверка доступности: GET /healthz. Автоматический список маршрутов и схем аккаунта доступен в интерактивной API-справке.

08 / ДИАГНОСТИКА

Ошибки и лимиты

При ошибке шлюз возвращает JSON вида {"error":{"code":"…","message":"…"}}. Для ошибок после отправки запроса может прийти request_id; у успешных ответов он есть в заголовке X-Request-ID. При потоковом ответе ошибка модели может прийти внутри SSE после HTTP 200.

400 / 422Некорректный JSON, поля запроса или данные формы.
401Ключ отсутствует, неверен или отозван.
403Модель или аккаунт недоступны.
413Размер запроса превышает 1 МБ.
429Превышен месячный лимит, частота или число одновременных запросов; возможен лимит модели.
502 / 503Сервис модели или соединение временно недоступны.

Текущие лимиты и расход видны в кабинете. Если запрос завершился без стоимости в ответе модели, он отмечается для сверки.

ГОТОВЫ ПОДКЛЮЧИТЬ МОДЕЛЬ?Открыть личный кабинет