Баланс и расход
Как считается счёт
При постановке задачи шлюз удерживает кредиты по запрошенному варианту модели, а когда задача
завершилась — списывает фактический расход, о котором сообщил поставщик; разница возвращается на
баланс. Задача, закончившаяся состоянием fail, не тарифицируется: всё
удержание возвращается целиком. Списанное видно в поле
creditsConsumed ответа о состоянии задачи. Цена каждой модели по
вариантам — на её странице в каталоге, а условия
пополнения — в блоке цен.
Спросить по ключу
Те же цифры, что показывает кабинет, отдают три адреса — по тому же ключу
sk-…, что и генерация. Они нужны программе, а не человеку: пакетную
генерацию останавливают по остатку на балансе, а не открыв кабинет глазами.
Баланс: /v1/account
Отвечает объектом без конверта — форма кабинета, не форма задач. Кредиты приходят строками, потому что считаются точными числами, а не с плавающей точкой.
| Поле | Тип | Что в нём |
|---|---|---|
| строка | Почта аккаунта, которому принадлежит ключ. | |
| balance | строка | Сколько кредитов на балансе всего, включая удержанные. |
| reserved | строка | Сколько кредитов удержано под задачи и запросы, которые ещё не завершились. |
| available | строка | Свободные кредиты: баланс за вычетом удержания. Именно с ними сравнивается удержание под новый запрос. |
| is_admin | да или нет | Служебный признак кабинета; клиенту не нужен. |
Расход: /v1/usage
Сводка по последним 1000 запросам аккаунта: сколько всего списано, разбивка по дням и по адресам. Глубина ограничена нарочно — полный пересчёт по всей истории рос бы вместе с аккаунтом.
| Поле | Тип | Что в нём |
|---|---|---|
| total_requests | число | Сколько запросов попало в сводку. |
| total_credits | число | Сколько кредитов по ним списано всего. |
| by_endpoint | список | Разбивка по адресам: { endpoint, credits }, от дорогого к дешёвому. |
| by_day | список | Разбивка по дням: { day, credits }, от раннего дня к позднему. День — дата по UTC. |
Свои задачи: /api/v1/jobs/recordInfos
Список своих задач в конверте задач {code, msg, data}, где в
data.tasks лежат те же записи, что отдаёт
recordInfo, а data.hasMore говорит, есть ли
следующая страница. Пригодится, когда номера задач у себя не сохранены: по нему видно, чем
закончились последние. Предел частоты — 60 запросов в минуту
на ключ; это не замена опросу состояния, а страница истории.
| Параметр | Тип | Что делает |
|---|---|---|
| state | значение из списка | Отбор по состоянию: waiting, queuing, generating, success или fail. Другое значение — отказ 422. |
| limit | целое число | Сколько задач вернуть. Без него — 20, больше 100 маршрут не отдаёт. |
| afterTaskId | строка | Номер последней задачи предыдущей страницы: следующая страница начинается за ней. |
# сколько кредитов свободно прямо сейчас
curl -s https://api.gen202.com/v1/account \
-H "Authorization: Bearer sk-ваш-ключ" | jq '.available'
# расход по дням и по адресам
curl -s https://api.gen202.com/v1/usage \
-H "Authorization: Bearer sk-ваш-ключ" | jq '.by_day, .by_endpoint'
# последние 20 задач; больше 100 за раз не отдаётся
curl -s "https://api.gen202.com/api/v1/jobs/recordInfos?state=success&limit=20" \
-H "Authorization: Bearer sk-ваш-ключ" | jq '.data.tasks[] | {taskId, model, creditsConsumed}'