Подключение
к моделям.
Всё необходимое для первого запроса к ИИ-модели через MODO.
Первый запрос
Получите аккаунт, войдите в кабинет и создайте API-ключ. Когда открыта самостоятельная регистрация, подтвердите почту; во время пилота аккаунт предоставляет команда MODO. Затем выберите модель из списка доступных вашему аккаунту.
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.
Ключи доступа
Создайте отдельный ключ для каждого проекта. Передавайте его в заголовке Authorization с префиксом Bearer. Полное значение ключа показывается один раз — сохраните его сразу после создания.
Для запросов к моделям используйте ключ вида avs_…. Токен входа в кабинет для этих запросов не подходит. Отзыв ключа сразу закрывает доступ к API.
Доступные модели
В личном кабинете показаны модели, открытые для вашего аккаунта. В запросе передавайте точный идентификатор выбранной модели в поле model. С клиентским API-ключом список доступен по GET /v1/models в формате {"object":"list","data":[...]}. Кабинет использует GET /models с токеном сессии.
curl https://cf24caf415b6.vps.myjino.ru/v1/models \
-H "Authorization: Bearer avs_ВАШ_КЛЮЧ"
Набор моделей может меняться. Используйте список из кабинета как актуальный источник для своего аккаунта.
Подключение SDK
Для Chat Completions можно использовать клиент с совместимым форматом. Укажите базовый URL MODO с суффиксом /v1 и ваш ключ avs_…. Доступные методы: POST /v1/chat/completions и GET /v1/models. Другие методы SDK, включая Responses, Embeddings, Images и Audio, пока не поддерживаются.
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. Модель в примере доступна только при наличии её в вашем списке.
Формат запроса
Основной метод — POST /v1/chat/completions. Тело запроса — JSON с полями model и messages. Успешный ответ возвращается в формате Chat Completions с полями id, choices и usage, когда модель предоставляет данные использования.
Идентификатор доступной модели.
Массив сообщений с полями role и content.
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 МБ. Нельзя передать произвольный адрес сервера модели или использовать модель вне вашего списка.
Потоковый ответ
Добавьте "stream": true в тело запроса. Ответ придёт как text/event-stream: части ответа передаются по мере генерации, а завершение обозначается data: [DONE].
{
"model": "openai/gpt-4.1-nano",
"messages": [{"role": "user", "content": "Привет!"}],
"stream": true
}
Методы кабинета
Обычно эти действия выполняются в веб-кабинете. Для автоматизации используйте методы ниже. Токен сессии из POST /auth/login действует 12 часов и нужен только для управления аккаунтом. Клиентский ключ avs_… нужен для /v1/*.
Доступен при открытой регистрации. {"email":"…","password":"…"}. Пароль не короче 12 символов. Возвращает pending; код подтверждения приходит на почту.
{"token":"код из письма"}. После подтверждения аккаунт становится активным.
{"email":"…","password":"…"}. Возвращает access_token сессии.
Статус аккаунта, лимиты и ограничения моделей.
Список моделей для кабинета. Для клиентского ключа используйте GET /v1/models.
{"name":"мой проект"}. Возвращает новый ключ один раз.
Список ключей и статусов без полного значения секрета.
Отзывает ключ по его числовому идентификатору.
Расход за текущий месяц и последние 100 запросов.
Проверка доступности: GET /healthz. Автоматический список маршрутов и схем аккаунта доступен в интерактивной API-справке.
Ошибки и лимиты
При ошибке шлюз возвращает JSON вида {"error":{"code":"…","message":"…"}}. Для ошибок после отправки запроса может прийти request_id; у успешных ответов он есть в заголовке X-Request-ID. При потоковом ответе ошибка модели может прийти внутри SSE после HTTP 200.
Текущие лимиты и расход видны в кабинете. Если запрос завершился без стоимости в ответе модели, он отмечается для сверки.