curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "wan2.6",
"prompt": "Милый котенок бежит по траве",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 5
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "wan2.6",
"prompt": "Кот начинает радостно бегать",
"image_urls": ["https://example.com/cat.jpg"],
"resolution": "1080p",
"duration": 10
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "wan2.6",
"prompt": "Персонаж машет рукой и улыбается камере",
"metadata": {
"reference_urls": ["https://cdn.example.com/ref-character.mp4"]
},
"resolution": "1080p",
"duration": 5
}'
import requests
response = requests.post(
"https://toapis.com/v1/videos/generations",
headers={
"Authorization": "Bearer your-ToAPIs-key",
"Content-Type": "application/json"
},
json={
"model": "wan2.6",
"prompt": "Милый котенок бежит по траве",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 5
}
)
task = response.json()
print(f"Task ID: {task['id']}")
print(f"Status: {task['status']}")
const response = await fetch('https://toapis.com/v1/videos/generations', {
method: 'POST',
headers: {
'Authorization': 'Bearer your-ToAPIs-key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'wan2.6',
prompt: 'Милый котенок бежит по траве',
aspect_ratio: '16:9',
resolution: '1080p',
duration: 5
})
});
const task = await response.json();
console.log(`Task ID: ${task.id}`);
console.log(`Status: ${task.status}`);
{
"id": "video_01J9HA7JPQ9A0Z6JZ3V8M9W6PZ",
"object": "generation.task",
"model": "wan2.6",
"status": "queued",
"progress": 0,
"created_at": 1768380224,
"metadata": {
"aspect_ratio": "16:9"
}
}
Wan2.6
Wan2.6 Генерация видео
Генерация высококачественных видео с помощью модели Alibaba Cloud Wan2.6 — поддержка текст-в-видео, изображение-в-видео и референсного видео
POST
/
v1
/
videos
/
generations
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "wan2.6",
"prompt": "Милый котенок бежит по траве",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 5
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "wan2.6",
"prompt": "Кот начинает радостно бегать",
"image_urls": ["https://example.com/cat.jpg"],
"resolution": "1080p",
"duration": 10
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "wan2.6",
"prompt": "Персонаж машет рукой и улыбается камере",
"metadata": {
"reference_urls": ["https://cdn.example.com/ref-character.mp4"]
},
"resolution": "1080p",
"duration": 5
}'
import requests
response = requests.post(
"https://toapis.com/v1/videos/generations",
headers={
"Authorization": "Bearer your-ToAPIs-key",
"Content-Type": "application/json"
},
json={
"model": "wan2.6",
"prompt": "Милый котенок бежит по траве",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 5
}
)
task = response.json()
print(f"Task ID: {task['id']}")
print(f"Status: {task['status']}")
const response = await fetch('https://toapis.com/v1/videos/generations', {
method: 'POST',
headers: {
'Authorization': 'Bearer your-ToAPIs-key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'wan2.6',
prompt: 'Милый котенок бежит по траве',
aspect_ratio: '16:9',
resolution: '1080p',
duration: 5
})
});
const task = await response.json();
console.log(`Task ID: ${task.id}`);
console.log(`Status: ${task.status}`);
{
"id": "video_01J9HA7JPQ9A0Z6JZ3V8M9W6PZ",
"object": "generation.task",
"model": "wan2.6",
"status": "queued",
"progress": 0,
"created_at": 1768380224,
"metadata": {
"aspect_ratio": "16:9"
}
}
Для пользователей из материкового Китая: используйте
https://toapis.cn в качестве эндпоинта (Base URL). Замените https://toapis.com на https://toapis.cn во всех примерах этого документа.- Модель генерации видео Alibaba Cloud Wanxiang
- Поддержка трёх режимов: текст-в-видео, изображение-в-видео и референсное видео (r2v)
- Сервер автоматически выбирает нужную модель на основе параметров запроса
- Поддержка разрешений 720p/1080p, длительность 5/10/15 секунд
- Не-Flash версия всегда включает аудио в выходное видео
Важное изменение: Для повышения производительности и контроля затрат мы больше не поддерживаем передачу данных изображений в формате base64 напрямую в
image_urls. Пожалуйста, сначала используйте API загрузки изображений для загрузки изображений и получения URL, а затем вызывайте этот эндпоинт.Логика маршрутизации
Сервер автоматически выбирает модель на основе параметров запроса:| Переданные параметры | Режим |
|---|---|
metadata.reference_urls (URL видео) | Референсное видео (r2v) |
image_urls (изображение) | Изображение-в-видео (i2v) |
Только prompt | Текст-в-видео (t2v) |
Аутентификация
string
обязательно
Все API требуют аутентификации Bearer TokenПолучите API Key на странице управления API ключамиДобавьте в заголовок запроса:
Authorization: Bearer YOUR_API_KEY
Параметры запроса
string
обязательно
Название модели генерации видео, фиксированное значение
wan2.6string
обязательно
Описание содержимого видеоОбязательно для режима текст-в-видео; опционально для изображение-в-видео и референсного видео (описывает желаемое движение или стиль)Пример:
"Милый котенок потягивается на солнце"string[]
Массив URL референсных изображений (режим изображение-в-видео, поддерживает только 1 изображение)⚠️ Только формат URL (base64 больше не поддерживается)
- Публично доступный URL изображения (http:// или https://)
- Вы можете использовать API загрузки изображений для загрузки локальных изображений и получения URL
["https://example.com/image.jpg"]Примечание: Нельзя использовать вместе с metadata.reference_urlsstring
по умолчанию:"16:9"
Соотношение сторон видео (для режимов текст-в-видео и референсного видео)Доступные значения:
16:9- Горизонтальный (по умолчанию)9:16- Вертикальный1:1- Квадрат4:3- Горизонтальный3:4- Вертикальный
16:9Примечание: Не поддерживается в режиме изображение-в-видеоstring
по умолчанию:"1080p"
Разрешение видеоДоступные значения:
720p- Стандартное1080p- Высокое качество (по умолчанию)
1080p480p не поддерживается. Тарификация посекундная; разные разрешения имеют разную стоимость.integer
по умолчанию:"5"
Длительность видео (секунды)Поддерживается:
5, 10, 15По умолчанию: 5string
Негативный промпт — описывает нежелательное содержимоеПример:
"размытый, низкое качество, деформированный"integer
Случайное зерно для воспроизводимости результатовПример:
12345boolean
по умолчанию:"true"
Автоматическое расширение промптаПри включении система автоматически оптимизирует и обогащает ваш промпт. Включено по умолчанию — установите
false для отключения.boolean
Включить аудио в видеоНе-Flash модели Wan2.6 по умолчанию генерируют видео со звуком. Установите
true для явного включения.string
Тип съёмки (для режимов текст-в-видео и референсного видео)Доступные значения:
single- Один непрерывный планmulti- Несколько планов (кинематографический монтаж)
boolean
Добавить водяной знак Alibaba Cloud на видео
object
Расширенные параметры
Показать Показать поля metadata
Показать Показать поля metadata
string[]
Режим референсного видео (r2v) — массив URL референсных видеоПри наличии этого поля сервер направляет запрос к модели референсного видео (wan2.6-r2v). Модель использует эти видео для генерации нового контента с согласованными персонажами или сценами.
- Каждый элемент должен быть публично доступным URL видео (http:// или https://)
["https://cdn.example.com/ref-character.mp4"]Примечание: Нельзя использовать вместе с image_urlsКомбинации разрешений и соотношений сторон
| Соотношение сторон | Описание | Размер 720p | Размер 1080p |
|---|---|---|---|
| 16:9 | Горизонтальный (по умолчанию) | 1280×720 | 1920×1080 |
| 9:16 | Вертикальный | 720×1280 | 1080×1920 |
| 1:1 | Квадрат | 960×960 | 1440×1440 |
| 4:3 | Горизонтальный | 1088×832 | 1632×1248 |
| 3:4 | Вертикальный | 832×1088 | 1248×1632 |
Ответ
string
Уникальный идентификатор задачи для последующих запросов
string
Тип объекта, всегда
generation.taskstring
Использованное название модели
string
Статус задачи
queued- В очередиin_progress- Обрабатываетсяcompleted- Успешно завершенаfailed- Ошибка
integer
Прогресс задачи в процентах (0-100)
integer
Временная метка создания задачи (Unix timestamp)
object
Метаданные задачи
Сценарии использования
Сценарий 1: Текст-в-видео
{
"model": "wan2.6",
"prompt": "Милый котенок бежит по траве, солнечный день",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 5
}
Сценарий 2: Изображение-в-видео
{
"model": "wan2.6",
"prompt": "Кот начинает радостно бегать",
"image_urls": ["https://example.com/cat.jpg"],
"resolution": "1080p",
"duration": 10
}
Сценарий 3: Референсное видео (r2v)
{
"model": "wan2.6",
"prompt": "Персонаж машет рукой и улыбается камере",
"metadata": {
"reference_urls": ["https://cdn.example.com/ref-character.mp4"]
},
"shot_type": "single",
"resolution": "1080p",
"duration": 5
}
Сценарий 4: Текст-в-видео (полные параметры)
{
"model": "wan2.6",
"prompt": "Золотистый ретривер бежит через поле подсолнухов",
"negative_prompt": "размытый, низкое качество, деформированный",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 10,
"seed": 12345,
"prompt_extend": true,
"shot_type": "multi",
"watermark": false
}
Получение результатов задачиГенерация видео — асинхронная задача. После отправки возвращается
task_id. Используйте интерфейс Получить статус видео для запроса прогресса и результатов.curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "wan2.6",
"prompt": "Милый котенок бежит по траве",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 5
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "wan2.6",
"prompt": "Кот начинает радостно бегать",
"image_urls": ["https://example.com/cat.jpg"],
"resolution": "1080p",
"duration": 10
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "wan2.6",
"prompt": "Персонаж машет рукой и улыбается камере",
"metadata": {
"reference_urls": ["https://cdn.example.com/ref-character.mp4"]
},
"resolution": "1080p",
"duration": 5
}'
import requests
response = requests.post(
"https://toapis.com/v1/videos/generations",
headers={
"Authorization": "Bearer your-ToAPIs-key",
"Content-Type": "application/json"
},
json={
"model": "wan2.6",
"prompt": "Милый котенок бежит по траве",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 5
}
)
task = response.json()
print(f"Task ID: {task['id']}")
print(f"Status: {task['status']}")
const response = await fetch('https://toapis.com/v1/videos/generations', {
method: 'POST',
headers: {
'Authorization': 'Bearer your-ToAPIs-key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'wan2.6',
prompt: 'Милый котенок бежит по траве',
aspect_ratio: '16:9',
resolution: '1080p',
duration: 5
})
});
const task = await response.json();
console.log(`Task ID: ${task.id}`);
console.log(`Status: ${task.status}`);
{
"id": "video_01J9HA7JPQ9A0Z6JZ3V8M9W6PZ",
"object": "generation.task",
"model": "wan2.6",
"status": "queued",
"progress": 0,
"created_at": 1768380224,
"metadata": {
"aspect_ratio": "16:9"
}
}