Краткий ответ
Запросите API задач поtask_id; возвращаемое значение quota — это общая стоимость видео. Сумма двух записей журнала (предварительное списание + окончательный расчет) равна этому значению, и quota в подробном представлении «Асинхронные задачи» — это то же самое число.
quota ÷ 500,000 = USD. Выполняйте аутентификацию с помощью персонального access token (начинающегося с nap_, а не ключа API sk-). Ему требуется только разрешение «Использование и личные записи · Чтение» («Usage & personal records · Read»). Инструкции по его созданию см. в статье Что такое персональный access token?. Устаревшие системные tokens планируется вывести из эксплуатации 2026-11-11 (UTC+8).
Не пытайтесь сопоставлять записи журнала по одной через 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, а консоль помечает его как «потоковая передача». Это нормально.Содержат ли задачи, отправленные через общие эндпоинты генерации видео, 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 для сверки только разрешение «Usage & personal records · Read», храните его надежно и не добавляйте в репозитории кода.