QuillAIQuillAIDocs
Войти
Начало работыАутентификация

Аутентификация

QuillAI использует статические Bearer-токены — создавайте и ротируйте их в разделе Разработчикам.

Создание ключа

Откройте Разработчикам, нажмите Создать ключ, задайте ему метку и скопируйте открытое значение — мы показываем его только один раз. Сохраните его в переменную окружения (например, QAI_KEY) на машине, откуда пойдут запросы. Восстановить потерянный ключ нельзя: отзовите его и выпустите новый.

Формат ключа

Ключ состоит из ~40 символов: фиксированный префикс плюс тело в base62. На сервере хранится только SHA-256 хэш — открытая часть видна ровно один раз, в момент создания.

ПрефиксОкружениеОписание
qai_test_ПесочницаНе тарифицируется. Возвращает mock-ответы — подходит для CI и локальной разработки.
qai_live_ProductionСписывает поинты с баланса. Используйте только на доверенных серверах.

Делаем аутентифицированный запрос

Передавайте ключ в заголовке Authorization в каждом запросе. Начните с GET /v1/me — это проверит, что ключ рабочий, и покажет остаток поинтов.

terminalbash
curl https://api.quillhub.ai/v1/me \
  -H "Authorization: Bearer $QAI_KEY"

Валидный ключ возвращает 200 с id аккаунта, текущим балансом поинтов и активной подпиской (или null, если вы на pay-as-you-go).

200 OKjson
{
  "id": "usr_3f9a2c1e8b",
  "available_points": 12400,
  "subscription": null
}

Как безопасно хранить ключи

  • Загружайте ключи из переменных окружения или секрет-менеджера (Vault, AWS Secrets Manager, Doppler) — не из конфигов в git.
  • Не держите live-ключи на ноутбуках разработчиков. Локально используйте qai_test_, а qai_live_ — только в задеплоенных окружениях.
  • Не коммитьте ключи, не вставляйте их в тикеты и не логируйте. Фильтруйте их в отчётах об ошибках.
  • Ротируйте ключи по расписанию и каждый раз, когда кто-то с доступом покидает команду.
В GitHub включён push-protection. Если qai_live_-ключ попадёт в публичный коммит, секрет-сканер GitHub уведомит нас и ключ будет автоматически отозван — обычно в течение 90 секунд. Сразу выпустите новый и проверьте логи.

Ошибки

Отсутствующий или некорректный токен — 401 с типом authentication_error. Отозванный или без нужных прав — 403 с типом permission_error. Формат ответа в обоих случаях одинаковый.

401 Unauthorizedjson
{
  "error": {
    "type": "authentication_error",
    "message": "Invalid API key provided."
  }
}