Опрашивайте задачу видео Seedance по id в CometAPI с помощью GET /v1/videos/. Работает для задач Seedance 1.0 Pro, 1.5 Pro и 2.0. Возвращает текущий статус, прогресс и подписанный video_url после того, как задача достигнет SUCCESS.
curl https://api.cometapi.com/v1/videos/<TASK_ID> \
-H "Authorization: Bearer <COMETAPI_KEY>"{
"id": "task_abc123",
"model": "doubao-seedance-2-0-fast",
"object": "video",
"status": "IN_PROGRESS",
"progress": 45,
"created_at": 1776567610,
"completed_at": null
}id в пути — это значение, возвращённое вызовом создания, независимо от того, какая модель Seedance создала задачу.
SUBMITTED и IN_PROGRESS не являются терминальными; SUCCESS, FAILED и ERROR являются терминальными, и после этого задача больше не изменится.
| Status | Meaning | Terminal |
|---|---|---|
SUBMITTED | Принята и поставлена в очередь на рендеринг. | нет |
IN_PROGRESS | Идёт рендеринг. | нет |
SUCCESS | Завершена. video_url присутствует в ответе. | да |
FAILED | Провайдер отклонил задачу. | да |
ERROR | Внутренняя ошибка помешала завершению. | да |
import time
import requests
TASK_ID = "<TASK_ID>"
headers = {"Authorization": "Bearer <COMETAPI_KEY>"}
TERMINAL = {"SUCCESS", "FAILED", "ERROR"}
while True:
response = requests.get(
f"https://api.cometapi.com/v1/videos/{TASK_ID}",
headers=headers,
timeout=15,
)
response.raise_for_status()
data = response.json()
if data["status"] in TERMINAL:
print(data.get("video_url"))
break
time.sleep(10)
status — определяет условие остановки для вашего цикла опроса.progress — целое число от 0 до 100, которое можно отображать в UI.video_url — подписанный URL для скачивания, присутствует только при SUCCESS. Срок действия подписи ограничен по времени; скачайте файл или разместите его у себя до истечения срока подписи.completed_at — Unix timestamp, который заполняется, как только задача достигает терминального статуса.model — возвращает model ID Seedance, использованный при создании задачи.400 с message: "task_not_exist" означает, что id неизвестен. Убедитесь, что вы сохранили id из успешного ответа POST /v1/videos и используете его без изменений.401 означает, что bearer token отсутствует или недействителен. Проверьте, что заголовок запроса имеет вид Authorization: Bearer <COMETAPI_KEY>.Bearer token authentication. Use your CometAPI key.
Task id returned by POST /v1/videos.
Current task state.
Task id.
Object type, always video.
Model id that generated the task.
Task status. SUBMITTED and IN_PROGRESS are non-terminal. SUCCESS, FAILED, and ERROR are terminal.
SUBMITTED, IN_PROGRESS, SUCCESS, FAILED, ERROR Completion percentage.
0 <= x <= 100Task creation time as a Unix timestamp in seconds.
Signed download URL for the finished video. Present only when status is SUCCESS. The signature is time-limited, so download or re-upload the file to your own storage soon after you receive it.
Task completion time as a Unix timestamp in seconds. null while the task is non-terminal.
curl https://api.cometapi.com/v1/videos/<TASK_ID> \
-H "Authorization: Bearer <COMETAPI_KEY>"{
"id": "task_abc123",
"model": "doubao-seedance-2-0-fast",
"object": "video",
"status": "IN_PROGRESS",
"progress": 45,
"created_at": 1776567610,
"completed_at": null
}