Справочник API

Генерация видео

Отправляйте задачи генерации видео, отслеживайте статус задачи и передавайте расширенные параметры Seedance/Doubao через TENSORAXIS.

Генерация видео выполняется асинхронно: отправьте задачу, чтобы получить task_id, отслеживайте статус задачи, а затем прочитайте URL видео после завершения.

Для видеомоделей Seedance/Doubao используйте поля запроса TENSORAXIS prompt, images и metadata. Не отправляйте тело запроса в стиле Volcengine с верхнеуровневым content[] напрямую в /v1/video/generations; TENSORAXIS не найдёт поле prompt и вернёт 400 prompt is required.

Страницы для отдельных моделей

Эта страница описывает общий процесс отправки, получения и опроса задач. Матрицу возможностей, поля запроса, примеры для каждой возможности и таблицы параметров для каждого семейства видео см. на отдельных страницах:

  • Генерация видео SeeDance — Volcengine Ark Doubao Seedance (текст/изображение в видео, первый/последний кадр, референс видео/продолжение)
  • Генерация видео HappyHorse — Alibaba Cloud Bailian DashScope (текст/изображение/референс в видео, редактирование видео)

Эндпоинты

МетодПутьНазначениеРекомендуемое использование
POST/v1/video/generationsОтправка задачи генерации видеоОбщая точка входа TENSORAXIS для видеозадач Seedance/Doubao
GET/v1/video/generations/{task_id}Получение задачи генерации видеоИспользуется в паре с эндпоинтом отправки выше
POST/v1/videosОтправка задачи в стиле OpenAI/SoraКлиенты, совместимые с Sora/OpenAI
GET/v1/videos/{task_id}Получение задачи в стиле OpenAI/SoraКлиенты, совместимые с Sora/OpenAI
GET/v1/videos/{task_id}/contentПроксирование скачивания содержимого видеоПолучение содержимого завершённого видео

Для новых интеграций Seedance/Doubao предпочтительно использовать /v1/video/generations.

Тело запроса

POST /v1/video/generations

ПолеТипОбязательноОписание
modelstringДаНазвание модели для вызова
promptstringДаПромпт для видео; при пустом значении возвращается 400 prompt is required
imagestringНетURL одного референсного изображения; сервер нормализует его в images
imagesstring[]НетURL референсных изображений для генерации видео из изображения
metadataobjectНетСпецифичные для модели или провайдера параметры; сюда помещаются расширенные параметры Seedance/Doubao
secondsstringНетПоле совместимости; положительное целое число преобразуется в вышестоящее поле duration для Doubao/Seedance
durationintegerНетОбщее поле задачи; для Seedance/Doubao предпочтительнее использовать metadata.duration
sizestringНетПоле размера, используемое некоторыми видеомоделями
modestringНетПоле режима, используемое некоторыми видеомоделями
input_referencestringНетВходной референс, используемый в некоторых потоках, совместимых с OpenAI/Sora; не используется в примерах Seedance/Doubao

Примеры правильного и неправильного использования

Неправильно: отправка вышестоящего тела запроса с верхнеуровневым content[] напрямую в TENSORAXIS.

{
  "model": "doubao-seedance-2-0-260128",
  "content": [
    {
      "type": "text",
      "text": "An old man wearing a hat smiles and walks forward"
    }
  ]
}

Правильно: используйте поля запроса TENSORAXIS и позвольте релею преобразовать их.

{
  "model": "doubao-seedance-2-0-260128",
  "prompt": "An old man wearing a hat smiles and walks forward",
  "images": ["https://example.com/reference.jpg"],
  "metadata": {
    "resolution": "1080p",
    "ratio": "16:9",
    "duration": 5,
    "camera_fixed": true,
    "watermark": false
  }
}

Отправка задачи

curl https://api.tensoraxis.com/v1/video/generations \
  -H "Authorization: Bearer $TENSORAXIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2-0-260128",
    "prompt": "An old man wearing a hat smiles and walks forward",
    "images": ["https://example.com/reference.jpg"],
    "metadata": {
      "resolution": "1080p",
      "ratio": "16:9",
      "duration": 5,
      "camera_fixed": true,
      "watermark": false
    }
  }'

Успешный ответ на отправку возвращает публичный идентификатор задачи. Поля могут немного отличаться в зависимости от видеоканала, но обычно включают:

{
  "id": "task_xxxxx",
  "task_id": "task_xxxxx",
  "object": "video",
  "model": "doubao-seedance-2-0-260128",
  "status": "queued",
  "progress": 0,
  "created_at": 1760000000
}

Сохраните id или task_id для последующего опроса.

Получение задачи

Если вы отправляете задачу через общий эндпоинт видеозадач, опрашивайте её так:

curl https://api.tensoraxis.com/v1/video/generations/task_xxxxx \
  -H "Authorization: Bearer $TENSORAXIS_API_KEY"

Общий ответ на получение использует обёртку задачи следующего вида:

{
  "code": "success",
  "message": "",
  "data": {
    "task_id": "task_xxxxx",
    "status": "SUCCESS",
    "progress": "100%",
    "result_url": "https://example.com/video.mp4",
    "fail_reason": ""
  }
}

Значения общих статусов:

СтатусЗначение
SUBMITTED / QUEUEDОтправлено или в очереди
IN_PROGRESSГенерируется
SUCCESSЗавершено; читайте result_url
FAILUREОшибка; читайте fail_reason

Путь получения в стиле OpenAI/Sora:

curl https://api.tensoraxis.com/v1/videos/task_xxxxx \
  -H "Authorization: Bearer $TENSORAXIS_API_KEY"

Этот путь возвращает ответ object: "video" и при успехе предоставляет URL видео в полях url, video_url и metadata.url.

Seedance/Doubao metadata

Для каналов Doubao/Seedance TENSORAXIS преобразует prompt, images и metadata в форму задачи генерации контента Volcengine:

Поле запроса TENSORAXISПередаётся вышестоящему как
promptcontent[].text
images[]content[].image_url.url
secondsduration
metadata.resolutionresolution
metadata.ratioratio
metadata.durationduration
metadata.framesframes
metadata.seedseed
metadata.camera_fixedcamera_fixed
metadata.watermarkwatermark
metadata.generate_audiogenerate_audio
metadata.draftdraft
metadata.service_tierservice_tier
metadata.return_last_framereturn_last_frame
metadata.execution_expires_afterexecution_expires_after
metadata.callback_urlcallback_url
metadata.toolstools

Примечания:

  • metadata.model удаляется и не может переопределить оплачиваемую модель.
  • Поля metadata, которые не соответствуют текущей структуре адаптера, как правило, не пересылаются вышестоящему API.
  • metadata.content — это расширенное внутреннее поле совместимости, которое может переопределить список содержимого, сгенерированный из images; публичные интеграции не должны его использовать.
  • Допустимые значения, перечисления и фактическое поведение вышестоящего API определяются официальной документацией Volcengine для выбранной модели. Эта страница описывает только то, как текущий релей TENSORAXIS принимает и пересылает поля.

Рекомендации по опросу

  • Подождите 2-5 секунд перед первым опросом после отправки задачи.
  • Опрашивайте каждые 5-10 секунд, пока задача генерируется.
  • Не используйте высокочастотный опрос вместо колбэков; ставьте большие пакеты задач в очередь в вашем приложении.
  • Если вы получаете 429, снизьте параллелизм и повторяйте запрос с экспоненциальной задержкой.