Обзор API
API журнала запросов возвращает подробную запись о каждом API-вызове, выполненном в вашей учетной записи, включая использованную модель, фактически списанную сумму, задержку, был ли вызов выполнен с потоковой передачей, а также код ошибки, если вызов завершается сбоем. Он дополняет API запроса баланса: запрос баланса показывает, сколько кредита осталось, а запрос журнала показывает, куда он ушел. Три типичных сценария использования:Автоматическая сверка
Самостоятельное устранение неполадок
Обращения в службу поддержки
request_id службе поддержки, чтобы они могли точно определить конкретный вызовКак получить ваш System Token
API для запросов журнала аутентифицируется с помощью System Token, который не является тем же самым, что и API-ключ (см. Важные примечания в конце этой страницы).Доступ к консоли
api.apiyi.com/account/profile, чтобы открыть страницу профиляНайдите System Token
Сгенерируйте AccessToken

Информация об API
Детали запроса
Заголовки запроса
Параметры запроса
Типы логов
Детали ответа
Пример успешного ответа
Ключевые поля ответа
other содержит JSON строку, а не вложенный объект, поэтому требуется второй раз выполнить парсинг
(json.loads() в Python, JSON.parse() в JavaScript). Оно содержит billing_type,
request_path (фактически вызванный endpoint), group_ratio, model_ratio и usage.Преобразование квоты
Правило преобразования
quota ÷ 500,000
Примеры:
quota: 7500→ $0.015 USDquota: 22500→ $0.045 USDquota: 18→ $0.000036 USD
Ответы с ошибкой
HTTP 401 - Ошибка аутентификации
sk-) был
по ошибке использован как system token.
Решение: Сгенерируйте system token заново в консоли и убедитесь, что Authorization содержит
сырое значение без префикса Bearer.
Примеры кода
Пример cURL (одна страница, быстрая проверка)
Пример Python (с пагинацией, готов к запуску)
Пример Node.js (с пагинацией)
--compressed.Распространенные сценарии
Расчет расходов за период времени
Используйте пример на Python выше. Два важных момента: передатьtype=2 и разделить сумму quota на 500 000. Чтобы ограничить это одной моделью, добавьте параметр model_name.
Поиск неудачных вызовов
quota равный 0 и
не тарифицируются. error_code в журнале позволяет вам отличить «вызов завершился сбоем» от
«вызов завершился успешно, но мне не понравился результат».Предоставление идентификатора запроса для поддержки
Найдите проблемный вызов в журналах и передайте службе поддержкиrequest_id. Это позволяет
однозначно идентифицировать точный запрос от начала до конца, что намного эффективнее, чем
описывать «вызов к какой-то модели завершился сбоем примерно в определенное время».
Частые вопросы
Почему я получаю только 10 записей?
Почему я получаю только 10 записей?
page_size равен 10. Более высокие значения не приводят к ошибке, но и не
начинают действовать. Чтобы получить больше данных, нужно выполнять пагинацию
(p=0, p=1, p=2 и так далее), пока ответ не вернет пустой массив. Примеры на Python
и Node.js выше уже это учитывают.Некоторые поля в ответе пустые — это нормально?
Некоторые поля в ответе пустые — это нормально?
quota, model_name, error_code и request_id
полностью заполнены.Почему token_group отличается от названия группы, показанного в консоли?
Почему token_group отличается от названия группы, показанного в консоли?
default, а консоль показывает Default.Полное сопоставление доступно в публичном эндпоинте https://api.apiyi.com/api/pricing
в поле usable_group, которое сопоставляет идентификатор с меткой. Если вы хотите, чтобы ваши
отчеты совпадали с консолью, примените это сопоставление самостоятельно.Счетчики token и квота, похоже, не совпадают — чему верить?
Счетчики token и квота, похоже, не совпадают — чему верить?
quota. Это сумма, которая фактически списывается за вызов, и единственное
поле, подходящее для сверки. Для моделей с оплатой за вызов, таких как генерация изображений
и генерация видео, счетчики token в ответе могут быть значениями-заглушками, которые не
участвуют в тарификации — такие модели возвращают by_count в other.billing_type.Насколько далеко назад я могу делать запрос?
Насколько далеко назад я могу делать запрос?
start_timestamp и end_timestamp. За точным сроком
хранения исторических данных обратитесь в поддержку. Мы рекомендуем периодически
экспортировать данные для сверки, а не полагаться на API для долгосрочного просмотра истории.curl возвращает искаженный текст, или jq выдает ошибку
curl возвращает искаженный текст, или jq выдает ошибку
Content-Encoding: gzip), а curl
не распаковывает его.Решение: добавьте флаг --compressed:Запрос журналов расходует квоту?
Запрос журналов расходует квоту?
Важные замечания
- Оставляйте не менее 1 секунды между запросами, чтобы избежать лимита запросов
- Установите разумный тайм-аут запроса (рекомендуется 30 секунд)
- Для широких диапазонов времени реализуйте пагинацию и обработку повторных попыток
Связанная документация
- Balance Query API — проверьте оставшийся кредит аккаунта
- Token Management API — создавайте и управляйте API key программно
- Как посмотреть мои записи вызовов — ручной просмотр в консоли
- Как читать логи и тарификацию — как читать поля тарификации