Аутентификация
QuillAI использует статические Bearer-токены — создавайте и ротируйте их в разделе Разработчикам.
Создание ключа
Откройте Разработчикам, нажмите Создать ключ, задайте ему метку и скопируйте открытое значение — мы показываем его только один раз. Сохраните его в переменную окружения (например, QAI_KEY) на машине, откуда пойдут запросы. Восстановить потерянный ключ нельзя: отзовите его и выпустите новый.
Формат ключа
Ключ состоит из ~40 символов: фиксированный префикс плюс тело в base62. На сервере хранится только SHA-256 хэш — открытая часть видна ровно один раз, в момент создания.
| Префикс | Окружение | Описание |
|---|---|---|
qai_test_ | Песочница | Не тарифицируется. Возвращает mock-ответы — подходит для CI и локальной разработки. |
qai_live_ | Production | Списывает поинты с баланса. Используйте только на доверенных серверах. |
Делаем аутентифицированный запрос
Передавайте ключ в заголовке Authorization в каждом запросе. Начните с GET /v1/me — это проверит, что ключ рабочий, и покажет остаток поинтов.
curl https://api.quillhub.ai/v1/me \
-H "Authorization: Bearer $QAI_KEY"Валидный ключ возвращает 200 с id аккаунта, текущим балансом поинтов и активной подпиской (или null, если вы на pay-as-you-go).
{
"id": "usr_3f9a2c1e8b",
"available_points": 12400,
"subscription": null
}Как безопасно хранить ключи
- Загружайте ключи из переменных окружения или секрет-менеджера (Vault, AWS Secrets Manager, Doppler) — не из конфигов в git.
- Не держите live-ключи на ноутбуках разработчиков. Локально используйте qai_test_, а qai_live_ — только в задеплоенных окружениях.
- Не коммитьте ключи, не вставляйте их в тикеты и не логируйте. Фильтруйте их в отчётах об ошибках.
- Ротируйте ключи по расписанию и каждый раз, когда кто-то с доступом покидает команду.
Ошибки
Отсутствующий или некорректный токен — 401 с типом authentication_error. Отозванный или без нужных прав — 403 с типом permission_error. Формат ответа в обоих случаях одинаковый.
{
"error": {
"type": "authentication_error",
"message": "Invalid API key provided."
}
}