Ключи и аутентификация
Все запросы, кроме GET /models, требуют ключ в заголовке:
Authorization: Bearer mxn-...Выпуск ключа
Заголовок раздела «Выпуск ключа»Кабинет → Профиль → API-ключи → «Создать ключ».
Полный ключ показывается один раз, сразу после создания. Мы храним только sha256-хэш, префикс и последние символы — восстановить ключ невозможно, потерянный проще удалить и выпустить новый.
Области доступа
Заголовок раздела «Области доступа»При создании ключа можно ограничить его набором возможностей. Доступны семь:
| Область | Что открывает |
|---|---|
chat |
POST /chat/completions |
search |
Модели с веб-поиском внутри /chat/completions |
images |
POST /images/generations, POST /images/edits |
video |
Все эндпоинты /videos |
music |
Все эндпоинты /audio/music |
audio |
POST /audio/speech, POST /audio/transcriptions |
embeddings |
POST /embeddings |
Ключ без ограничений (все области отмечены) получает доступ ко всему каталогу. Запрос вне разрешённых областей возвращает 403.
Ограничивайте области под задачу: ключ, который лежит в браузерном расширении и умеет только chat, при утечке не сожжёт баланс на видео.
Хранение
Заголовок раздела «Хранение»Ключ — это доступ к вашему балансу. Правила те же, что для любого платёжного секрета:
- переменные окружения или менеджер секретов, никогда не в репозитории;
- не в клиентском коде — браузер и мобильное приложение отдают ключ любому, кто откроет DevTools;
- отдельный ключ на каждое приложение и окружение, чтобы отзыв одного не ронял остальные;
- при подозрении на утечку — удалить ключ в кабинете, это мгновенно.
Проверка ключа
Заголовок раздела «Проверка ключа»curl https://api.mixen.ai/v1/chat/completions \ -H "Authorization: Bearer $MIXEN_API_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"gpt-5.6-luna","messages":[{"role":"user","content":"ping"}],"max_tokens":5}'Ответ 401 означает, что ключ не найден или отозван. 402 — ключ рабочий, но на балансе не хватает денег.