curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "pixverse-v6",
"prompt": "A cinematic shot of a corgi running through a sunflower field at golden hour",
"size": "16:9",
"resolution": "540p",
"duration": 5
}'
import requests
url = "https://api.apimart.ai/v1/videos/generations"
payload = {
"model": "pixverse-v6",
"prompt": "A cinematic shot of a corgi running through a sunflower field at golden hour",
"size": "16:9",
"resolution": "540p",
"duration": 5
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/videos/generations";
const payload = {
model: "pixverse-v6",
prompt: "A cinematic shot of a corgi running through a sunflower field at golden hour",
size: "16:9",
resolution: "540p",
duration: 5
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error("Error:", error));
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01JWXXXXXXXXXXXX"
}
]
}
{
"error": {
"type": "invalid_request_error",
"message": "invalid duration 20, allowed range: 1-15 seconds"
}
}
{
"error": {
"code": 401,
"message": "Ошибка аутентификации. Проверьте ваш API-ключ",
"type": "authentication_error"
}
}
{
"error": {
"code": 403,
"message": "insufficient quota: balance=0, required=0.25",
"type": "quota_not_enough"
}
}
{
"error": {
"code": 429,
"message": "Слишком много запросов, попробуйте позже",
"type": "rate_limit_error"
}
}
Pixverse v6
Pixverse v6 Генерация видео
- Унифицированная модель генерации видео Pixverse v6
- Поддерживает «текст в видео», «изображение в видео», переход между первым и последним кадрами, объединение нескольких опорных изображений и продолжение видео
- Разрешения 360p/540p/720p/1080p, длительность 1–15 секунд
- Асинхронный API: после отправки результат запрашивается по ID задачи
POST
/
v1
/
videos
/
generations
curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "pixverse-v6",
"prompt": "A cinematic shot of a corgi running through a sunflower field at golden hour",
"size": "16:9",
"resolution": "540p",
"duration": 5
}'
import requests
url = "https://api.apimart.ai/v1/videos/generations"
payload = {
"model": "pixverse-v6",
"prompt": "A cinematic shot of a corgi running through a sunflower field at golden hour",
"size": "16:9",
"resolution": "540p",
"duration": 5
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/videos/generations";
const payload = {
model: "pixverse-v6",
prompt: "A cinematic shot of a corgi running through a sunflower field at golden hour",
size: "16:9",
resolution: "540p",
duration: 5
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error("Error:", error));
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01JWXXXXXXXXXXXX"
}
]
}
{
"error": {
"type": "invalid_request_error",
"message": "invalid duration 20, allowed range: 1-15 seconds"
}
}
{
"error": {
"code": 401,
"message": "Ошибка аутентификации. Проверьте ваш API-ключ",
"type": "authentication_error"
}
}
{
"error": {
"code": 403,
"message": "insufficient quota: balance=0, required=0.25",
"type": "quota_not_enough"
}
}
{
"error": {
"code": 429,
"message": "Слишком много запросов, попробуйте позже",
"type": "rate_limit_error"
}
}
curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "pixverse-v6",
"prompt": "A cinematic shot of a corgi running through a sunflower field at golden hour",
"size": "16:9",
"resolution": "540p",
"duration": 5
}'
import requests
url = "https://api.apimart.ai/v1/videos/generations"
payload = {
"model": "pixverse-v6",
"prompt": "A cinematic shot of a corgi running through a sunflower field at golden hour",
"size": "16:9",
"resolution": "540p",
"duration": 5
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/videos/generations";
const payload = {
model: "pixverse-v6",
prompt: "A cinematic shot of a corgi running through a sunflower field at golden hour",
size: "16:9",
resolution: "540p",
duration: 5
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error("Error:", error));
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01JWXXXXXXXXXXXX"
}
]
}
{
"error": {
"type": "invalid_request_error",
"message": "invalid duration 20, allowed range: 1-15 seconds"
}
}
{
"error": {
"code": 401,
"message": "Ошибка аутентификации. Проверьте ваш API-ключ",
"type": "authentication_error"
}
}
{
"error": {
"code": 403,
"message": "insufficient quota: balance=0, required=0.25",
"type": "quota_not_enough"
}
}
{
"error": {
"code": 429,
"message": "Слишком много запросов, попробуйте позже",
"type": "rate_limit_error"
}
}
Аутентификация
string
обязательно
Все эндпоинты требуют аутентификации с помощью Bearer Token.Получение API Key:Перейдите на страницу управления API Key, чтобы получить ваш API Key.Добавьте следующий заголовок в запрос:
Authorization: Bearer YOUR_API_KEY
Параметры запроса
string
обязательно
Название модели генерации видео. Фиксировано:
pixverse-v6.boolean
по умолчанию:"false"
Выполнять ли проверку содержимого перед отправкой задачи генерации видео.
true: проверить промпты и входные изображения с помощьюomni-moderation-latestfalseили параметр не указан: не отправлять запрос на проверку, без дополнительных затрат и задержки (по умолчанию)
string
обязательно
Описание содержимого видео, до 5000 символов. Обязателен во всех режимах.
string
по умолчанию:"540p"
Разрешение видео. Влияет на стоимость.
360p: SD540p: Стандарт (по умолчанию)720p: HD1080p: Full HD
Другие значения разрешения возвращают ошибку параметра.
integer
по умолчанию:"5"
Длительность видео в секундах, диапазон
1–15.Режим перехода между первым и последним кадрами поддерживает только
5 или 8 секунд.string
по умолчанию:"16:9"
Соотношение сторон видео. Действует только в режимах «текст в видео» и объединения нескольких опорных изображений.
16:9: Горизонтальный широкий (по умолчанию)4:3: Горизонтальный 4:31:1: Квадрат3:4: Вертикальный 3:49:16: Вертикальный2:3: Вертикальный 2:33:2: Горизонтальный 3:221:9: Кинематографический широкий
integer
по умолчанию:"0"
Случайное зерно. Диапазон
0–2147483647. Один и тот же prompt и seed дают похожий результат.string
Негативный промпт для исключения нежелательного содержимого. До 2048 символов.
boolean
по умолчанию:"false"
Генерировать ли аудиодорожку.
true: Генерировать аудио (повышает цену)false: Без аудио (по умолчанию)
boolean
по умолчанию:"false"
Добавлять ли водяной знак в правом нижнем углу видео.
true: Добавить водяной знакfalse: Без водяного знака (по умолчанию)
string
Режим движения.
normal: Стандартный режим (pixverse-v6поддерживает только это значение)
fast доступен только для устаревших моделей и будет отклонён сервером для pixverse-v6.boolean
по умолчанию:"false"
Генерировать ли непрерывное видео из нескольких клипов. Поддерживается только в режимах «текст в видео» и «изображение в видео».
true: Генерировать непрерывное многоклиповое видеоfalse: Один клип (по умолчанию)
array<url>
Массив URL входных изображений для режима «изображение в видео». Используется только первое изображение.Изображения должны быть публично доступными HTTP/HTTPS URL.
url
URL первого кадра в режиме перехода. Должен передаваться вместе с
last_frame_image.url
URL последнего кадра в режиме перехода. Должен передаваться вместе с
first_frame_image.array<url>
Массив URL опорных изображений для режима объединения. Поддерживает 1–7 изображений.Передача этого поля активирует режим объединения нескольких опорных изображений.
string
ID исходной задачи для продолжения видео. Передача этого поля активирует режим продолжения.Исходная задача должна принадлежать текущему пользователю, иметь модель
pixverse-v6 и статус completed.Режимы генерации
Адаптер автоматически выбирает режим генерации по полям запроса. Сопоставление выполняется по приоритету: побеждает первый совпавший режим.| Режим | Условие активации | Описание |
|---|---|---|
| Текст в видео | Поля изображения и продолжения отсутствуют | Генерация видео по prompt |
| Изображение в видео | image_urls с одним изображением | Используется первое изображение |
| Переход между первым и последним кадрами | Указаны и first_frame_image, и last_frame_image | Генерация плавного перехода между двумя кадрами |
| Объединение нескольких опорных изображений | Указан массив img_references | Объединение 1–7 изображений в видео |
| Продолжение видео | Указан extend_from_task_id | Продолжение из завершённой задачи Pixverse |
Все входы изображений принимают только публично доступные HTTP/HTTPS URL. base64 и Data URI не поддерживаются. Если у вас есть только локальные изображения, сначала загрузите их в объектное хранилище и передайте URL.
Правила параметров
| Ограничение | Описание |
|---|---|
| Длительность | 1 ≤ duration ≤ 15 секунд; режим перехода поддерживает только 5 или 8 секунд |
| Разрешение | Поддерживаются только 360p, 540p, 720p, 1080p |
| Соотношение сторон | size действует только в режимах «текст в видео» и объединения опорных изображений |
| Длина промпта | prompt до 5000 символов, negative_prompt до 2048 символов |
| Изображение в видео | image_urls использует только первое изображение |
| Переход | first_frame_image и last_frame_image передаются парой |
| Режим движения | pixverse-v6 поддерживает только normal |
| Объединение опорных изображений | img_references поддерживает 1–7 изображений |
| Продолжение видео | extend_from_task_id должен указывать на завершённую (completed) задачу pixverse-v6 текущего пользователя |
Ответ
integer
Код состояния ответа. При успехе —
200.array
Получение результата задачи
Генерация видео — асинхронная задача. После отправки возвращаетсяtask_id. Используйте эндпоинт Получение статуса задачи для запроса прогресса и результата.
cURL
curl --request GET \
--url https://api.apimart.ai/v1/tasks/task_01JWXXXXXXXXXXXX \
--header 'Authorization: Bearer <token>'
completed или failed.
Пример успешного результата
{
"code": 200,
"data": {
"id": "task_01KSPX48B8V1M6C2ZN0D0T4BKB",
"status": "completed",
"progress": 100,
"cost": 0.2,
"credits_cost": 2,
"created": 1779958948,
"completed": 1779958999,
"estimated_time": 100,
"actual_time": 51,
"result": {
"videos": [
{
"url": ["https://upload.apimart.ai/f/video/xxxx.mp4"],
"expires_at": 1780045399
}
]
}
}
}
data.result.videos[0].url[0]. Поле url само является массивом. Ссылки обычно действуют 24 часа — заранее скачайте или перенесите файл.
Пример неудачного результата
{
"code": 200,
"data": {
"id": "task_01KSPX48B8V1M6C2ZN0D0T4BKB",
"status": "failed",
"progress": 100,
"cost": 0,
"credits_cost": 0,
"created": 1779958948,
"completed": 1779958960,
"error": {
"code": "task_failed",
"message": "pixverse error 400063: moderation failed",
"type": "task_failed"
}
}
}
cost обычно равен 0. Причина ошибки — в data.error.message.
Сценарии использования
Сценарий 1: Текст в видео
{
"model": "pixverse-v6",
"prompt": "A neon-lit alley in Tokyo at night, light rain, anamorphic lens flare",
"size": "21:9",
"resolution": "720p",
"duration": 8,
"seed": 42,
"audio": true
}
Сценарий 2: Изображение в видео
{
"model": "pixverse-v6",
"prompt": "Camera slowly zooms in, gentle wind moves the leaves",
"image_urls": ["https://example.com/first-frame.jpg"],
"resolution": "540p",
"duration": 5
}
Сценарий 3: Переход между первым и последним кадрами
{
"model": "pixverse-v6",
"prompt": "transform smoothly from a puppy to a cat",
"first_frame_image": "https://example.com/puppy.jpg",
"last_frame_image": "https://example.com/cat.jpg",
"resolution": "540p",
"duration": 5,
"motion_mode": "normal"
}
Сценарий 4: Объединение нескольких опорных изображений
{
"model": "pixverse-v6",
"prompt": "A girl wearing the outfit from image 2, holding the cat from image 3",
"img_references": [
"https://example.com/character.jpg",
"https://example.com/outfit.jpg",
"https://example.com/cat.jpg"
],
"size": "9:16",
"resolution": "720p",
"duration": 5
}
Сценарий 5: Продолжение видео
{
"model": "pixverse-v6",
"prompt": "the character now walks into a forest",
"extend_from_task_id": "task_01JWXXXXXXXXXXXX",
"resolution": "540p",
"duration": 5
}