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

ПараметрЗначение
Базовый URLhttps://api.m-lab.app/v1
ПротоколФормат OpenAI для чат-запросов (chat completions), эмбеддингов и изображений; потоковая передача через server-sent events
АутентификацияBearer-ключ, который начинается с mk_ и показывается один раз при создании
Тарифы с доступом к APIMax, 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. Каждый пример ниже отправляет один и тот же чат-запрос.

  1. Создайте ключ. Он начинается с mk_ и показывается только один раз, поэтому сохраните его в переменной окружения, например MILLY_API_KEY.
  2. Укажите базовый URL https://api.m-lab.app/v1. Больше ничего в OpenAI-совместимом коде менять не нужно.
  3. Выберите 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 Lunagpt-5.4-nano$1,20$2,20400 000Max, Advanced
GPT-5.6 Terragpt-5.4$3,00$13,00400 000Max, Advanced
GPT-5.6 Solgpt-5.5$5,00$21,00400 000Max, Advanced
ChatGPT Codexgpt-5.3-codex$2,75$15,00400 000Advanced
Claude Haiku 4.5claude-haiku-4-5$2,00$6,00200 000Max, Advanced
Claude Sonnet 5claude-sonnet-5$3,00$11,001 000 000Max, Advanced
Claude Opus 5claude-opus-4-8$6,00$26,00200 000Advanced
DeepSeek V4 Flashdeepseek-v4-flash$1,22$1,66128 000Только баланс
DeepSeek V4deepseek-v4$1,22$1,66128 000Только баланс
DeepSeek V4 Prodeepseek-v4-pro$1,66$2,98256 000Max, Advanced
Gemini 3.7 Flash 200Kgemini-3.6-flash-200k$1,75$4,75200 000Только баланс
Gemini 3.7 Flashgemini-3.6-flash$1,75$4,751 000 000Max, Advanced
Grok 4.6grok-4.3$3,00$7,00256 000Только баланс

Модели для изображений

Модельid в APIЦена за изображение, стандартное качествоЛимит в тарифе
Gemini Nano Banana 2gemini-nano-banana$0,077Max, Advanced
ChatGPT Image 2.0gpt-image-2$0,0627Max, Advanced
Flux 2 Profal-ai/flux-pro$0,04Max
Stable Diffusion 3.5 Largefal-ai/stable-diffusion-xl$0,075Advanced

Эмбеддинги

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": "…"}}
HTTPcodeЗначение
400invalid_body · invalid_messages · invalid_input · input_too_long · unsupported_encoding · invalid_rangeНекорректное тело запроса, нет текста пользователя, неверные входные данные эмбеддингов или неверный период отчёта
401missing_api_key · invalid_api_keyНет Bearer-ключа, либо ключ неизвестен или отозван
402insufficient_for_request · insufficient_balanceЛимита тарифа и баланса не хватает на запрос
402spend_cap_reachedКлюч достиг месячного лимита расходов
403api_access_requiredТариф аккаунта не включает доступ к API
403model_not_allowedМодели нет в списке разрешённых для ключа
403account_disabledАккаунт отключён
404model_not_found · key_not_foundНеизвестная или выведенная из каталога модель либо id ключа, которого нет в этом аккаунте
429rate_limit_exceededБольше 120 запросов в минуту по этому ключу; подождите время из Retry-After
502upstream_errorПровайдер дал сбой до начала ответа; ничего не списано
503provider_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 подробно описаны потоковая передача, эмбеддинги, изображения, эндпоинт статистики использования и рекомендации.