Документация API
Один ключ и один OpenAI-совместимый endpoint для всех моделей каталога. Здесь — как подключиться, что возвращает каждый эндпоинт, в чём считается расход и что означают коды ошибок.
Быстрый старт
- Создайте API-ключ в кабинете, раздел «API-ключи». Секрет показывается один раз — сохраните его.
- Укажите базовый URL и заголовок авторизации в своём клиенте.
- Отправьте запрос на нужный эндпоинт: расход списывается с баланса автоматически.
curl https://llmall.store/v1/chat/completions \
-H "Authorization: Bearer sk-llmall-..." \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.5",
"messages": [{ "role": "user", "content": "Привет" }]
}'Адрес и авторизация
Базовый URL: https://llmall.store/v1. Совместим с OpenAI SDK — достаточно подменить base_url.
Секрет передаётся в заголовке Authorization по схеме Bearer. Ключ можно приостановить или отозвать в любой момент; отзыв действует на шлюзе сразу.
from openai import OpenAI
client = OpenAI(
base_url="https://llmall.store/v1",
api_key="sk-llmall-...",
)
resp = client.chat.completions.create(
model="gpt-5.5",
messages=[{"role": "user", "content": "Привет"}],
)
print(resp.choices[0].message.content)Эндпоинты
| Эндпоинт | Что делает | Состояние |
|---|---|---|
| POST /chat/completions | Диалог, OpenAI-совместимый формат; поддерживает потоковый ответ (stream) | работает |
| POST /messages | Диалог в формате Anthropic Messages API | работает |
| GET /models | Список моделей, доступных вашему ключу с учётом политики | работает |
| POST /embeddings | Векторные представления текста | работает, если у модели настроен поставщик |
| POST /images/generations | Генерация изображений | работает, если у модели настроен поставщик |
| POST /audio/speech, /audio/transcriptions | Синтез и распознавание речи | работает, если у модели настроен поставщик |
| POST /videos/generations | Генерация видео | работает, если у модели настроен поставщик |
Часть моделей каталога работает без подключённого поставщика и отвечает симулированным результатом (для эмбеддингов — вектор-заглушка). Расход CU при этом списывается. Проверяйте конкретную модель перед промышленным использованием.
В чём считается расход
Единица — CU (1 CU = $10 расчётной стоимости). Модели тарифицируются по разным единицам: за 1K или 1M токенов, за эмбеддинг, за изображение, за секунду видео или за запрос — единица указана в карточке модели в каталоге.
Цены в каталоге показаны в рублях и в CU. Рубли для цен моделей считаются по курсу ЦБ; пополнение баланса идёт по курсу с надбавкой платёжного канала, поэтому сумма к оплате за тот же объём выше. Разницу видно в кассе до подтверждения платежа.
Пополнение: СБП по QR-коду или банковской картой. Минимум — 1 CU.
Лимиты
Месячный и дневной лимиты на ключ — по желанию: не задали — потолка нет, расход ограничен балансом аккаунта. Если задали месячный и у вас есть тариф, лимит не может превышать лимит тарифа.
Лимиты применяет шлюз: при исчерпании бюджета ключа запросы возвращают 429 insufficient_cu. Частота запросов ограничивается на стороне платформы; при превышении возвращается 429 с заголовком Retry-After — сколько секунд подождать.
Коды ошибок
| Код | Что означает | Что делать |
|---|---|---|
| 400 / 422 | Некорректный запрос: неверное тело, неизвестное поле | Проверьте формат JSON и имена полей |
| 401 | Ключ не передан, отозван или неверен | Проверьте заголовок Authorization |
| 403 | Модель запрещена политикой ключа | Уберите модель или измените политику ключа |
| 404 | Неизвестный путь или модель не найдена | Сверьтесь со списком эндпоинтов и GET /models |
| 429 insufficient_cu | Исчерпан баланс или бюджет ключа | Пополните баланс или поднимите лимит ключа |
| 429 rate_limit_exceeded | Превышена частота запросов | Подождите Retry-After секунд и повторите |
| 500 | Внутренняя ошибка шлюза | Повторите позже; если повторяется — напишите в поддержку |
| 503 provider_unavailable | Поставщик модели недоступен | Повторите позже или выберите другую модель |
Что настраивается в кабинете
Ключи: имя, месячный и дневной лимит в CU (по желанию), приостановка и отзыв. Секрет показывается один раз при создании.
Пополнение: сумма в CU или в рублях, способ оплаты (СБП по QR или карта). Минимум — 1 CU.
Профиль: имя, смена пароля, привязанные аккаунты входа (Google, Яндекс ID).
Комбо: свой набор моделей с общим именем — запрос уходит на самую дешёвую доступную модель набора, при занятости — на следующую по цене.
Подписка «Обезличивание данных»: перед отправкой поставщику находим в сообщении имена, телефоны, почту, паспортные данные, СНИЛС/ИНН и номера карт, заменяем их метками, а в ответе подставляем исходные значения обратно. Соответствие меток значениям живёт в памяти процесса и не сохраняется.
Если не работает
- 401 — проверьте, что ключ целиком, без пробелов и переносов строк.
- 403 — модель запрещена политикой именно этого ключа, а не аккаунта.
- 429 с insufficient_cu и 429 с rate_limit_exceeded — разные причины; смотрите поле type в ответе.
- Пустой или неожиданный ответ на недиалоговом эндпоинте — у модели не настроен поставщик, ответ симулирован.
- Модель не найдена — сверьтесь с GET /models: список учитывает политику вашего ключа.