Перейти к основному содержанию
AccessToken — это не API-ключ для запросов к моделям, и права у него шире.
  • Храните его на сервере, в переменной окружения или в хранилище секретов.
  • Никогда не передавайте его в браузер или клиентское приложение.

Получение AccessToken

1

Откройте настройки аккаунта

Войдите в консоль и откройте настройки аккаунта.
2

Откройте диалог системного токена

Выберите System Token и введите пароль от аккаунта, когда консоль его запросит.
3

Скопируйте AccessToken

Скопируйте AccessToken сразу после появления и надёжно сохраните. Новый AccessToken может сделать прежний недействительным, поэтому обновите его во всех сервисах, где он используется.
Не помещайте AccessToken в исходный код, браузерные приложения, логи, скриншоты и обращения в поддержку. Обращаясь в поддержку, указывайте время запроса, HTTP-статус, текст ответа и команду с закрытыми секретами.

Эндпоинт

У запроса нет параметров запроса и тела, ответ приходит в JSON. Передавайте в Authorization сам AccessToken, как в примерах ниже. Заголовки Accept: application/json и Content-Type: application/json необязательны. В cURL рекомендуем флаг --compressed, чтобы ответ распаковывался.

Ответ

Успешный запрос возвращает:
В зависимости от аккаунта ответ может содержать и другие поля. Читайте только нужные поля и позвольте парсеру игнорировать неизвестные.

Пересчёт квоты в доллары США

quota и used_quota возвращаются в единицах квоты, а не в долларах. 500 000 единиц квоты — это примерно 1 USD. Используйте пересчёт для отображения. Фактическая стоимость запроса зависит от цены модели, группы токена и суммы, указанной в журнале вызовов. Для оповещений храните исходное значение quota вместе с пересчитанной суммой, чтобы не терять точность.

Примеры кода

Один раз задайте AccessToken в терминале, заменив заглушку:
Без --compressed терминал может показать нечитаемые символы, а jq — ошибку Invalid numeric literal.

Ошибки

401 Unauthorized

Заголовок Authorization пуст, AccessToken неполный или уже недействителен, либо вместо AccessToken отправлен API-ключ для запросов к моделям. Каждую причину разбирает материал Как исправить ошибку 401 в API баланса. Смотрите на код статуса вместе с телом ответа:
  • Если заголовка Authorization нет совсем, API возвращает HTTP 401 с code, равным AUTH_REQUIRED.
  • Если AccessToken неверен или просрочен, возвращается HTTP 200 с success: false и сообщением о недействительном токене доступа.
Проверяйте success в скрипте, а не только код статуса.

403 Forbidden

У учётных данных нет прав на этот эндпоинт, либо аккаунтом должна заняться поддержка.

Нечитаемый вывод или ошибка jq

Если cURL печатает нечитаемые символы, а jq сообщает Invalid numeric literal, сжатый ответ не был распакован. Добавьте к команде cURL флаг --compressed.

Рекомендации по мониторингу

Чтобы узнавать о низком балансе заранее, запускайте проверку этого эндпоинта по расписанию. Скрипт завершается со статусом 1, если остаток баланса ниже порога:
Запускайте его из cron или системы мониторинга каждые 10–30 минут и отправляйте уведомление при ненулевом коде завершения, например:
Cron не загружает окружение вашей оболочки, поэтому задайте LAOZHANG_ACCESS_TOKEN в скрипте или в crontab. При настройке:
  • храните LAOZHANG_ACCESS_TOKEN в переменной окружения или в хранилище секретов;
  • задайте таймаут запроса, например 10 секунд;
  • опрашивайте с умеренным интервалом: для оповещений о балансе почти никогда не нужны проверки каждую секунду;
  • включайте в оповещение quota, пересчитанный баланс, used_quota, request_count, время запроса и HTTP-статус;
  • никогда не пишите в логи заголовок Authorization, access_token и другие конфиденциальные поля аккаунта.

Связанные материалы