OpenAI-совместимый API
API Milly Lab
API Milly Lab — это OpenAI-совместимый REST API по адресу https://api.m-lab.app/v1. Один ключ даёт доступ к 13 чат-моделям от OpenAI, Anthropic, Google, DeepSeek и xAI, 4 моделям для изображений и модели эмбеддингов. API входит в тариф Max ($42 в месяц) и выше. Стоимость вызова — цена провайдера плюс $1 за каждый миллион входных или выходных токенов.
Обновлено:
Коротко об API Milly Lab
| Параметр | Значение |
|---|---|
| Базовый URL | https://api.m-lab.app/v1 |
| Протокол | Формат OpenAI для чат-запросов (chat completions), эмбеддингов и изображений; потоковая передача через server-sent events |
| Аутентификация | Bearer-ключ, который начинается с mk_ и показывается один раз при создании |
| Тарифы с доступом к API | Max, Advanced и Enterprise |
| Цена | Цена провайдера + $1 за 1 млн входных и $1 за 1 млн выходных токенов; изображения — + $0,01 за штуку |
| Сверх лимита тарифа | Оплата с баланса пополнения по цене ×2 от указанной |
| Лимит запросов | До 120 запросов в минуту на ключ |
| Ключей на аккаунт | До 5 активных ключей, у каждого свой лимит расходов и список моделей |
| Актуальный прайс-лист | GET /v1/models, ключ не нужен |
Как отправить первый запрос?
Создайте ключ в разделе «API-ключи» своего аккаунта Milly Lab и укажите https://api.m-lab.app/v1 как базовый URL в любом SDK OpenAI. Каждый пример ниже отправляет один и тот же чат-запрос.
- Создайте ключ. Он начинается с mk_ и показывается только один раз, поэтому сохраните его в переменной окружения, например MILLY_API_KEY.
- Укажите базовый URL https://api.m-lab.app/v1. Больше ничего в OpenAI-совместимом коде менять не нужно.
- Выберите id модели из GET /v1/models, например claude-sonnet-5.
curl
curl https://api.m-lab.app/v1/chat/completions \
-H "Authorization: Bearer $MILLY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "claude-sonnet-5", "messages": [{"role": "user", "content": "Hello"}]}'Python
import os
from openai import OpenAI
client = OpenAI(base_url="https://api.m-lab.app/v1", api_key=os.environ["MILLY_API_KEY"])
r = client.chat.completions.create(
model="claude-sonnet-5",
messages=[{"role": "user", "content": "Hello"}],
)
print(r.choices[0].message.content)Node.js
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.m-lab.app/v1", apiKey: process.env.MILLY_API_KEY });
const r = await client.chat.completions.create({
model: "claude-sonnet-5",
messages: [{ role: "user", content: "Hello" }],
});
console.log(r.choices[0].message.content);В ответ приходит стандартный объект chat.completion, а поле usage показывает, за сколько токенов списана оплата. Чтобы получать ответ потоком через server-sent events, передайте stream: true.
Какие эндпоинты есть в API?
Все эндпоинты API (5) находятся по адресу https://api.m-lab.app/v1.
| Эндпоинт | Назначение |
|---|---|
GET /v1/models | Список всех моделей API с актуальными ценами, контекстным окном и лимитом ответа. Работает без ключа. |
POST /v1/chat/completions | Ответ чат-модели — потоком через server-sent events или целиком. |
POST /v1/embeddings | Эмбеддинги модели text-embedding-3-small (размерность 1 536). |
POST /v1/images/generations | От 1 до 4 изображений за вызов; моделей для изображений: 4. Работает синхронно, до 180 секунд. |
GET /v1/usage | Запросы, токены и списанные доллары по каждому ключу и каждой модели за период до 92 суток. |
В какие тарифы входит доступ к API?
Доступ к API входит в тарифы Max, Advanced и Enterprise. На тарифах Бесплатно, Starter и Pro создать API-ключ нельзя. Если ваш тариф стал ниже Max, существующие ключи перестают работать до повышения тарифа, но их по-прежнему можно просматривать и отзывать.
| Тариф | Цена в месяц | Доступ к API |
|---|---|---|
| Бесплатно | $0 | Нет |
| Starter | $12 | Нет |
| Pro | $25 | Нет |
| Max | $42 | Да |
| Advanced | $72 | Да |
| Enterprise | Индивидуально | Да |
Бесплатный тариф даёт до 10 сообщений в чате на каждую модель раз в 4 ч — только в веб-приложении, без доступа к API.
Сколько стоит вызов API?
Вызов API стоит по цене провайдера модели плюс платформенный сбор Milly Lab: $1 за миллион входных и $1 за миллион выходных токенов; за генерацию изображения добавляется $0,01 за каждое изображение. Сначала расход покрывает месячный лимит тарифа для этой модели, а всё сверх него списывается с баланса пополнения по цене ×2.
- Сначала лимит тарифа: модель, которая входит в ваш тариф, оплачивается из её месячного лимита по цене из таблицы.
- Затем баланс пополнения по цене ×2: остальные модели и расход после исчерпания лимита оплачиваются по цене ×2 от указанной в таблице.
- Проверка до вызова: если лимита и баланса не хватает на запрос, API отвечает 402 ещё до обращения к провайдеру, и ничего не списывается.
- Частичный ответ оплачивается: если клиент отключится во время потоковой передачи, генерация завершится, и полученные токены будут списаны.
Пример расчёта
Запрос к Claude Sonnet 5 на 10 000 входных и 1 000 выходных токенов стоит $0,041 из лимита тарифа (10 000 × $3,00 + 1 000 × $11,00 за миллион токенов) или $0,082 с баланса пополнения.
Цены указаны в долларах США. Платежи обрабатывает SmartPay — платёжная система из Таджикистана. Оплатить можно в любой валюте.
Какие модели можно вызывать и сколько они стоят?
Ниже — модели, которые GET /v1/models возвращал на 2026-10-04: чат-модели, модели для изображений и одна модель эмбеддингов. Цены включают платформенный сбор $1; актуальные цены всегда отдаёт сам эндпоинт.
Чат-модели
| Модель | id в API | Вход, $ за 1 млн токенов | Выход, $ за 1 млн токенов | Контекстное окно, токенов | Лимит в тарифе |
|---|---|---|---|---|---|
| GPT-5.6 Luna | gpt-5.4-nano | $1,20 | $2,20 | 400 000 | Max, Advanced |
| GPT-5.6 Terra | gpt-5.4 | $3,00 | $13,00 | 400 000 | Max, Advanced |
| GPT-5.6 Sol | gpt-5.5 | $5,00 | $21,00 | 400 000 | Max, Advanced |
| ChatGPT Codex | gpt-5.3-codex | $2,75 | $15,00 | 400 000 | Advanced |
| Claude Haiku 4.5 | claude-haiku-4-5 | $2,00 | $6,00 | 200 000 | Max, Advanced |
| Claude Sonnet 5 | claude-sonnet-5 | $3,00 | $11,00 | 1 000 000 | Max, Advanced |
| Claude Opus 5 | claude-opus-4-8 | $6,00 | $26,00 | 200 000 | Advanced |
| DeepSeek V4 Flash | deepseek-v4-flash | $1,22 | $1,66 | 128 000 | Только баланс |
| DeepSeek V4 | deepseek-v4 | $1,22 | $1,66 | 128 000 | Только баланс |
| DeepSeek V4 Pro | deepseek-v4-pro | $1,66 | $2,98 | 256 000 | Max, Advanced |
| Gemini 3.7 Flash 200K | gemini-3.6-flash-200k | $1,75 | $4,75 | 200 000 | Только баланс |
| Gemini 3.7 Flash | gemini-3.6-flash | $1,75 | $4,75 | 1 000 000 | Max, Advanced |
| Grok 4.6 | grok-4.3 | $3,00 | $7,00 | 256 000 | Только баланс |
Модели для изображений
| Модель | id в API | Цена за изображение, стандартное качество | Лимит в тарифе |
|---|---|---|---|
| Gemini Nano Banana 2 | gemini-nano-banana | $0,077 | Max, Advanced |
| ChatGPT Image 2.0 | gpt-image-2 | $0,0627 | Max, Advanced |
| Flux 2 Pro | fal-ai/flux-pro | $0,04 | Max |
| Stable Diffusion 3.5 Large | fal-ai/stable-diffusion-xl | $0,075 | Advanced |
Эмбеддинги
text-embedding-3-small возвращает векторы размерности 1 536 и стоит $1,02 за миллион входных токенов с учётом сбора. Эмбеддинги не входят ни в один тариф, поэтому всегда оплачиваются с баланса пополнения по цене ×2.
В колонке «Лимит в тарифе» перечислены тарифы с месячным лимитом на модель. У моделей с пометкой «Только баланс», например Grok 4.6, лимита в тарифах нет: они оплачиваются с баланса пополнения по цене ×2. Лимиты Enterprise согласуются в договоре. При другом уровне качества цена изображения меняется.
Какие лимиты на запросы?
Каждый API-ключ может отправлять до 120 запросов в минуту, а в аккаунте может быть до 5 активных ключей. Запрос сверх лимита получает HTTP 429 с заголовком Retry-After — через сколько секунд можно повторить.
| Лимит | Значение |
|---|---|
| Запросов на ключ | До 120 в минуту |
| Активных ключей на аккаунт | 5 |
| Сообщений в одном чат-запросе | 200 |
| Символов в одном чат-запросе | 400 000 |
| Входов эмбеддингов за вызов | 256, каждый до 12 000 символов |
| Изображений за вызов | 1–4, промпт до 4 000 символов |
| Время на запрос изображения | 180 с |
| Период отчёта об использовании | До 92 суток |
В каждом ответе /v1 есть заголовок x-request-id — укажите его, когда пишете в поддержку. Ответы на запросы с действующим ключом также содержат x-ratelimit-limit, x-ratelimit-remaining и x-ratelimit-window.
Как работают лимиты расходов и списки моделей?
Для каждого ключа можно задать месячный лимит расходов в долларах США и список разрешённых моделей. Вызов после достижения лимита возвращает 402 spend_cap_reached, вызов модели не из списка — 403 model_not_allowed. Обе проверки выполняются до любого списания.
| Настройка | Как работает |
|---|---|
| Месячный лимит расходов | В целых центах, до $100 000. Учитываются списания по этому ключу с 1-го числа месяца (UTC), сброс — 1-го числа. Запрос, на котором лимит превышен, всё равно завершается, поэтому перерасход — не больше одного запроса. |
| Разрешённые модели | До 64 id моделей; пустой список означает все модели API. Старые псевдонимы заменяются на актуальный id. |
| Отзыв | Отозванный ключ перестаёт работать со следующего запроса. Просматривать и отзывать ключи можно на любом тарифе. |
Для /v1 открыт CORS, поэтому код в браузере может вызывать API напрямую, но ключ на веб-странице виден любому посетителю. Задайте такому ключу жёсткий лимит расходов и список моделей или вызывайте API со своего сервера.
Какие коды ошибок возвращает API?
Ошибки приходят в формате OpenAI (пример ниже), поэтому обработка ошибок в SDK работает без изменений. Ориентируйтесь на поле code, а не на текст сообщения.
{"error": {"message": "…", "type": "…", "code": "…"}}| HTTP | code | Значение |
|---|---|---|
| 400 | invalid_body · invalid_messages · invalid_input · input_too_long · unsupported_encoding · invalid_range | Некорректное тело запроса, нет текста пользователя, неверные входные данные эмбеддингов или неверный период отчёта |
| 401 | missing_api_key · invalid_api_key | Нет Bearer-ключа, либо ключ неизвестен или отозван |
| 402 | insufficient_for_request · insufficient_balance | Лимита тарифа и баланса не хватает на запрос |
| 402 | spend_cap_reached | Ключ достиг месячного лимита расходов |
| 403 | api_access_required | Тариф аккаунта не включает доступ к API |
| 403 | model_not_allowed | Модели нет в списке разрешённых для ключа |
| 403 | account_disabled | Аккаунт отключён |
| 404 | model_not_found · key_not_found | Неизвестная или выведенная из каталога модель либо id ключа, которого нет в этом аккаунте |
| 429 | rate_limit_exceeded | Больше 120 запросов в минуту по этому ключу; подождите время из Retry-After |
| 502 | upstream_error | Провайдер дал сбой до начала ответа; ничего не списано |
| 503 | provider_unavailable | Провайдер модели сейчас недоступен; ничего не списано |
Частые вопросы разработчиков
Работает ли API Milly Lab с SDK OpenAI?
Да. Чат-запросы, эмбеддинги и генерация изображений используют формат OpenAI, поэтому официальные пакеты openai для Python и Node.js и другие OpenAI-совместимые инструменты работают, если указать базовый URL https://api.m-lab.app/v1 и ключ Milly Lab.
Поддерживает ли API вызов инструментов и изображения на входе?
Пока нет. Поля tools и tool_choice принимаются, чтобы настройки SDK по умолчанию не вызывали ошибок, но не выполняются. Сообщения чата принимают только текст; части с изображениями игнорируются.
Можно ли генерировать видео или 3D через API?
Нет. API поддерживает чат-запросы, эмбеддинги и генерацию изображений. Видео и 3D через /v1 недоступны.
Можно ли вызвать модель, которой нет в моём тарифе?
Да. На тарифе Max и выше можно вызвать любую модель из GET /v1/models. Модель без месячного лимита в вашем тарифе, например Grok 4.6, оплачивается с баланса пополнения по цене ×2 от указанной.
Есть ли бесплатный доступ к API?
Нет. Для создания API-ключей нужен тариф Max или выше. Бесплатный тариф даёт до 10 сообщений в чате на каждую модель раз в 4 ч — только в веб-приложении, без доступа к API.
Как оплачивать использование API?
Использование API оплачивается сначала из месячного лимита тарифа, а затем с баланса пополнения; цены указаны в долларах США. Платежи обрабатывает SmartPay — платёжная система из Таджикистана. Оплатить можно в любой валюте.
Где найти полное описание API?
В руководстве по API подробно описаны потоковая передача, эмбеддинги, изображения, эндпоинт статистики использования и рекомендации.