Краткий ответ
Запросите API задачи поtask_id; возвращаемое значение quota — это общая стоимость видео. Две записи журнала (предварительное списание + расчёт) в сумме дают эту стоимость, а значение quota в подробном представлении «Асинхронные задачи» — то же самое число.
quota ÷ 500,000 = USD. Выполните аутентификацию с помощью системного token (не ключа API sk-); информацию о его получении см. в API запросов журналов.
Не пытайтесь сопоставлять записи журнала по одной через API запросов журналов: ни одна из записей не содержит task_id, а запись расчёта имеет пустое значение request_id.
Как связаны три числа
Видео Seedance тарифицируются по схеме «предварительное списание при отправке, расчёт разницы по завершении», поэтому для одного видео создаются две записи журнала, тогда как API задачи и представление сведений о задаче показывают одно значениеquota:
Расчёт также может быть возвратом: для быстрой задачи преобразования текста в видео 480p длительностью 4 секунды было предварительно списано 144,000, использовано 40,594 tokens × 18.5 × 0.18 = 135,179, поэтому в записи расчёта указано −8,821 (возврат $0.02), а значение API задачи
quota равно 135,179.
Первый набор чисел получен из реальной задачи преобразования изображения в видео 2.0 с эталонным видео: 368,100 tokens × 14 (тарифный уровень для входного видео) × 0.18 (коэффициент группы) = 927,612, то есть $1.86. Поле other записи расчёта содержит final_quota = 927,612, original_quota = 224,999 и adjustment_quota = 702,613, поэтому все три значения видны в одной записи.
Определение фактической стоимости по статусу
Обратите внимание, что используются два разных набора терминов: эндпоинт запроса видео
/seedance/api/v3/.../tasks/{id} сообщает об успехе как succeeded, тогда как API задач /api/task/self сообщает о нём как completed; не копируйте условие из кода опроса.
Написание параметров (в отличие от Log Query API)
Параметры пагинации API задач используют snake_casepage_size, а номер страницы p начинается с 1; Log Query API использует camelCase pageSize, где p начинается с 0. Ошибка не вызывает ошибку, вы просто получите страницу по умолчанию.
Проверенные фильтры:
Для пакетной сверки выполняйте выборку по временному окну; каждый элемент содержит
task_id, status, quota, submit_time, finish_time и model_name:
Если необходимо вручную сверить данные в журналах
Три поля в строке записи о расчёте соответствуют API задач:- Её временная метка (
created_at) совпадает сfinish_timeзадачи с точностью до 1 секунды - Её
completion_tokensсовпадает сusage.completion_tokensзадачи - Её
other.final_quotaсовпадает сquotaзадачи
request_id записи о предварительном списании совпадает с заголовком X-Shellapi-Request-Id ответа на отправку, поэтому запись можно найти с помощью /api/log/self?request_id=…. Обратите внимание: ответ также содержит заголовок X-Request-Id; это идентификатор запроса на стороне провайдера, который невозможно найти в журналах APIYI. Однако записи о предварительном списании совпадают при отправке нескольких задач в одну и ту же секунду, а запись о расчёте не содержит request_id, поэтому журналы подходят только для выборочной проверки отдельных задач. Для программной сверки используйте API задач.
Часто задаваемые вопросы
Квота в сведениях о задаче отличается от суммы двух записей журнала?
Квота в сведениях о задаче отличается от суммы двух записей журнала?
Сначала проверьте статус задачи. Пока
submitted / in_progress, quota представляет собой только предварительное списание, а второй записи журнала ещё нет; при failed quota всё ещё показывает предварительное списание, тогда как в журналах появилась отрицательная запись возврата, поэтому сумма двух записей равна 0. Для задач completed эти значения должны совпадать; если это не так, отправьте task_id в службу поддержки.Почему в записи расчёта нет token и request_id?
Почему в записи расчёта нет token и request_id?
Расчёт проводится системой после завершения задачи, вне пути запроса к шлюзу, поэтому в нём нет token, группы или
request_id, а в консоли он помечен как «streaming». Это нормально.Содержат ли задачи, отправленные через универсальные эндпоинты видео, task_id в журналах?
Содержат ли задачи, отправленные через универсальные эндпоинты видео, task_id в журналах?
В
/v1/videos и других универсальных эндпоинтах content записи предварительного списания включает task ID: cgt-…, однако запись расчёта по-прежнему его не содержит. Кроме того, эти эндпоинты пока не полностью передают параметр разрешения Seedance, поэтому всегда используйте документированный путь /seedance/api/v3/contents/generations/tasks; см. API генерации видео.Может ли системный token просматривать задачи других аккаунтов?
Может ли системный token просматривать задачи других аккаунтов?
/api/task/self возвращает только задачи аккаунта, которому принадлежит token. Системный token эквивалентен учётным данным аккаунта, поэтому защищайте его как пароль и не храните в репозиториях кода.