wan2.7-t2v
model и prompt — единственные обязательные поля. Без size и duration шлюз отправляет 1280*720 на пять секунд.
Ничего не найдено. Попробуйте указать протокол, возможность или путь эндпоинта.
Модели видео отвечают задачами, а не одним ответом. POST /v1/videos возвращает идентификатор задачи со "status": "queued", а GET /v1/videos/{task_id} сообщает о ходе выполнения, пока задача не достигнет состояния completed или failed. По завершении готовый файл — это подписанный URL в metadata.url; он содержит параметр Expires, поэтому скачивайте файл, а не сохраняйте ссылку. Неудачная задача несёт код и текст вышестоящего сервиса в error.code и error.message, чего обычно достаточно, чтобы понять, какого поля не хватало в запросе. POST /v1/video/generations ведёт к тому же обработчику для клиентов, уже написанных под этот путь.
curl https://api.chinaapi.ai/v1/videos \
-H "Authorization: Bearer $CHINAAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "wan2.7-i2v",
"prompt": "the cat turns and walks toward the camera",
"input_reference": "https://example.com/first-frame.jpg",
"size": "1280*720",
"duration": 5
}'
# {"id":"task_9f2c...","task_id":"task_9f2c...","object":"video",
# "model":"wan2.7-i2v","status":"queued","progress":0}
curl https://api.chinaapi.ai/v1/videos/task_9f2c... \
-H "Authorization: Bearer $CHINAAPI_KEY"
# {"id":"task_9f2c...","object":"video","model":"wan2.7-i2v",
# "status":"completed","progress":100,
# "metadata":{"url":"https://.../output.mp4?Expires=..."}}
model и prompt — единственные обязательные поля. Без size и duration шлюз отправляет 1280*720 на пять секунд.
Оживление неподвижного изображения. input_reference принимает публично доступный URL изображения и становится первым кадром; отправляйте вместе с ним size и duration.
Построение видео по референсным материалам. input_reference принимает одно референсное изображение; чтобы передать несколько, используйте images, а video_url добавляет референсное видео — референсы считаются вместе, максимум пять. Не отправляйте input_reference и images одновременно: шлюз оставит только input_reference.
Редактирование существующего ролика по промпту. video_url принимает исходное видео длительностью от 2 до 10 секунд в формате MP4 или MOV, а size задаёт результат.
Референсные изображения передаются в images, а input_reference принимает одно; при отправке обоих сохраняются оба. Длительность указывается в seconds или duration, а параметры поставщика — в metadata, где resolution принимает значение 480p или 720p.
Та же форма запроса, что и у doubao-seedance-2-5-260628, включая правила role для metadata.content. doubao-seedance-2-0-fast-260128 и doubao-seedance-2-0-mini-260615 меняют качество на скорость и стоимость, а линейке 2.0 нужен хотя бы один референс — изображение или видео, тогда как 2.5 принимает и одно аудио.
Первый кадр передаётся в image; это семейство никогда не читает input_reference. mode по умолчанию равен std, а duration — 5 секунд. Остальное несёт metadata: image_tail для завершающего кадра, sound со значением on или off (off по умолчанию), а также negative_prompt, cfg_scale и camera_control.
Отправьте prompt для генерации видео из текста или добавьте image — и шлюз соберёт массив contents, который ожидает вышестоящий сервис. Размеры задаются в metadata.settings: resolution принимает 720p или 1080p, duration — от 3 до 15 секунд, а aspect_ratio — 16:9, 9:16 или 1:1. Звук включается всегда и не имеет переключателя.
Генерация по нескольким референсным изображениям сразу. Все параметры находятся в metadata, поля resolution нет — уровень качества задаёт mode. См. разобранный пример ниже.
Принимает собственные поля шлюза и собирает запрос для вышестоящего сервиса за вас: image или input_reference становится первым кадром, images — референсными изображениями, а video_url — референсным видео. size выбирает 768P или 2K, а duration — целое число от 4 до 15. Запросам только из текста нужен явный metadata.ratio, отличный от adaptive.
Вместе с MiniMax-Hailuo-2.3-Fast и MiniMax-Hailuo-02. Эти модели читают с верхнего уровня только prompt, duration и size; все изображения передаются через metadata — как first_frame_image, last_frame_image или subject_reference.
Вместе с happyhorse-1.1-i2v и happyhorse-1.1-r2v. Поля совпадают с семейством wan2.7 — prompt, input_reference, size, duration, — и 480P здесь имеет цену, поэтому 832*480 принимается там, где wan2.7 его отклоняет. Несколько референсов передаются в metadata.input.media, потому что автоматическая сборка, которую запускает поле images, характерна только для wan2.7-r2v.
size как ширину и высоту через звёздочку, например 1280*720. Буква x не принимается: 832x480 возвращается как invalid size: 832x480, example: 1920*1080. duration — целое число секунд. Для wan2.7-i2v, wan2.7-r2v и wan2.7-videoedit шлюз сводит size к уровню разрешения, а у вышестоящего сервиса их всего два, поэтому отправляйте 1280*720 для 720P или 1920*1080 для 1080P. Размер 480P, например 832*480, не имеет цены у этих трёх и либо отклоняется сразу, либо принимается и затем падает у вышестоящего сервиса с InvalidParameter; неудачная задача возвращает средства, но обращение в любом случае потрачено впустую. wan2.7-t2v принимает значение как есть.
size по фиксированной таблице, где размеры записаны через букву x — 1280x720, 1920x1080, 720x1280, 1080x1920, 1024x1024, 512x512, — и всё, что оно не распознаёт, становится 1:1 без ошибки. Поэтому отправка формы со звёздочкой 1280*720 в kling-v3 возвращает квадратное видео, а не жалобу: если кадрирование важно, задавайте metadata.aspect_ratio напрямую.
MiniMax-Hailuo-2.3, MiniMax-Hailuo-2.3-Fast и MiniMax-Hailuo-02 молча отбрасывают image, input_reference, images и video_url верхнего уровня: запрос выполняется успешно, но работает как генерация из текста и тарифицируется соответственно. Помещайте изображение в metadata.first_frame_image, добавляйте metadata.last_frame_image для завершающего кадра и используйте metadata.subject_reference для референсов объекта. MiniMax-H3 — исключение в этом семействе: он читает поля верхнего уровня.
curl https://api.chinaapi.ai/v1/video/generations \
-H "Authorization: Bearer $CHINAAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kling-v3-omni",
"prompt": "the character from the references walks through a neon-lit street",
"metadata": {
"image_list": [
{"image_url": "https://example.com/character.jpg"},
{"image_url": "https://example.com/outfit.jpg"},
{"image_url": "https://example.com/scene.jpg"}
],
"mode": "std",
"duration": "5",
"aspect_ratio": "16:9",
"sound": "off"
}
}'
curl https://api.chinaapi.ai/v1/video/generations/task_9f2c... \
-H "Authorization: Bearer $CHINAAPI_KEY"
# {"code":"success",
# "data":{"task_id":"task_9f2c...","status":"SUCCESS",
# "progress":"100%","fail_reason":"",
# "result_url":"https://.../output.mp4"}}
type; это поле нужно только чтобы отметить first_frame или end_frame, а aspect_ratio обязателен всегда, когда первого кадра нет. mode — это уровень качества (std, pro или 4k), и у вышестоящего сервиса по умолчанию стоит pro, который тарифицируется в 1,33 раза выше указанной цены, а 4k — в 5 раз; передавайте mode явно, чтобы списание было ожидаемым. duration — строка от "3" до "15", а sound по умолчанию равен off. Референсное видео передаётся в video_list и должно содержать "refer_type": "feature": режим редактирования base тарифицируется по длине переданного вами видео, не может быть оценён до отправки и потому отклоняется. У референсных изображений также есть минимальный размер у вышестоящего сервиса, и файл размером с иконку пройдёт отправку, но задача упадёт с Image pixel is invalid; неудачная задача возвращает средства, но обращение потеряно.
GET /v1/videos/{task_id} отвечает в формате видео OpenAI, где файл — это metadata.url, а прогресс — число. GET /v1/video/generations/{task_id} отвечает {"code": "success", "data": {…}}, где файл — data.result_url, data.status — слово в верхнем регистре, например SUCCESS или FAILURE, data.progress — строка вида "100%", а причина неудачи объясняется в data.fail_reason. Опрашивайте тот путь, на который отправляли задачу.
curl https://api.chinaapi.ai/v1/videos \
-H "Authorization: Bearer $CHINAAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedance-2-5-260628",
"prompt": "the subject slowly turns toward the camera",
"images": ["https://example.com/first-frame.jpg"],
"seconds": "5",
"metadata": {"resolution": "480p"}
}'
curl https://api.chinaapi.ai/v1/videos \
-H "Authorization: Bearer $CHINAAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedance-2-5-260628",
"prompt": "keep the subject from the reference image",
"seconds": "5",
"metadata": {
"resolution": "480p",
"ratio": "16:9",
"content": [
{
"type": "image_url",
"image_url": {"url": "https://example.com/reference.jpg"},
"role": "reference_image"
}
]
}
}'
role читается как первый кадр, а не как референс: результат наследует соотношение сторон этого изображения, отправка ratio вместе с ним отклоняется с InvalidParameter.TaskTypeConstraint, а seconds со значением 2 там тоже отклоняется, тогда как 5 работает. generate_audio у вышестоящего сервиса по умолчанию равен true, поэтому файл возвращается со звуковой дорожкой, если не выставить false в metadata. Помечайте каждую часть metadata.content полем role, чтобы получить полный референсный режим — до 30 изображений, 10 видео и 10 аудиофрагментов, ввод только из аудио и 30 секунд за один раз, — где ratio принимается.