Документация на метод "aivideo"
ИИ-генератор видео: генерация и редактирование роликов
Метод запускает генерацию видео в инструменте ИИ-генератор видео — по текстовому описанию, по опорному изображению или на основе готового ролика. Работает асинхронно: сначала ставится задача, потом по report_id забирается результат. Состав доступных нейросетей отдаёт отдельный вызов того же метода.
Как это работает
- 1 Берём модель из справочника — вызываем метод с
models=1. Видеомодели обновляются чаще остальных, а от выбранной модели зависят допустимая длительность и поддержка звука. - 2 Ставим задачу —
POSTс промптом и моделью. В ответ приходитreport_id. Лимиты списываются в момент создания задачи. - 3 Забираем результат — периодически (раз в 10–15 секунд) запрашиваем метод с
report_id, пока вместоIn progressне придёт ссылка на готовое видео.
key даже для POST-запросов. Одновременно у одного пользователя может выполняться не больше 5 задач инструмента.1Справочник моделей
/api/aivideo?models=1 — возвращает нейросети, доступные вашему ключу. Задача не создаётся, лимиты не списываются.
| Поле ответа | Тип | Описание |
|---|---|---|
| models[].name | string | Название модели для интерфейса, например Veo3 Fast. |
| models[].value | string | Идентификатор модели — значение параметра model при постановке задачи. |
| models[].promptLength | int | Максимальная длина prompt в символах. 0 — у модели нет своего ограничения, действует общее: 2 000 символов. |
| models[].isVideoEdit | bool | Модель работает в режиме редактирования готового видео (tab=edit), а не только в генерации с нуля. |
| default | string | value модели, предвыбранной в интерфейсе инструмента. |
Ответ
{
"models": [
{
"name": "Runway",
"value": "runway",
"promptLength": 1000,
"isVideoEdit": false
},
{
"name": "Sora 2",
"value": "sora-2",
"promptLength": 0,
"isVideoEdit": false
},
{
"name": "Runway Aleph",
"value": "runway-aleph",
"promptLength": 0,
"isVideoEdit": true
}
],
"default": "runway"
}
2Постановка задачи
POST /api/aivideo — параметры передаются телом запроса (multipart/form-data, если прикладываете файл).
Генерация видео
| Параметр | Тип | Обяз. | По умолчанию | Описание |
|---|---|---|---|---|
| prompt | string | да | — | Описание сцены. Максимальная длина — promptLength модели, по умолчанию 2 000 символов. |
| model | string | да | runway | value из справочника моделей. Отключённая или неизвестная модель — ошибка Выбранная модель недоступна.. |
| aspect_ratio | string | нет | 1:1 | Соотношение сторон: 1:1, 2:3, 3:2, 3:4, 4:3, 9:16, 16:9, а также portrait и landscape. Список общий для всех моделей. |
| quality | string | нет | 720p | Качество видео: 480p, 720p, 1080p или 4k. Влияет на стоимость. |
| duration | int | нет | зависит от модели | Длительность ролика в секундах. Допустимые значения зависят от модели: sora-2 — 10 или 15 (по умолчанию 10), grok-imagine — 6, 10, 15, 30 (по умолчанию 6), gemini-omni — 4, 6, 8, 10 (по умолчанию 10), runway — 5 или 8 (по умолчанию 5), остальные модели — 5, 10, 15 (по умолчанию 5). Влияет на стоимость. |
| image_url | string | нет | — | Ссылка на опорное изображение, с которого начинается ролик. Форматы .png, .jpg, .jpeg, .webp; ресурс должен отвечать 200, локальные адреса и localhost не принимаются. |
| upload_image | file | нет | — | Файл опорного изображения вместо ссылки: PNG, JPEG или WebP. |
| audio_description | string | нет | — | Описание звука или музыки — дописывается к промпту. Не может быть пустой строкой и не поддерживается моделью runway: для работы со звуком выбирайте Veo3 Fast или Veo3 Quality в соотношении 16:9. |
Редактирование готового видео
Режим включается параметром tab=edit и работает только с моделями, у которых isVideoEdit=true.
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| tab | edit | да | Переключает метод в режим редактирования. Без него запрос трактуется как генерация с нуля. |
| prompt | string | да | Что изменить в ролике. Промпт автоматически переводится на английский. |
| model | string | да | Модель с isVideoEdit=true из справочника. |
| video_url | string | да | Ссылка на исходное видео. Допустимые расширения: mp4, mov, mkv, webm, avi, wmv, mpeg, mpg. Обязателен, если не передан upload_video. |
| upload_video | file | да | Файл исходного видео вместо ссылки: MP4, MOV, MKV, WebM, AVI, WMV, MPEG, до 10 МБ. |
Ответ
{
"report_id": 18452301
}
duration не вызывает ошибку — оно молча заменяется на значение по умолчанию для выбранной модели. Итоговая длительность может отличаться от запрошенной, а списание считается уже по фактическим параметрам.3Получение результата
GET /api/aivideo?report_id={id} — вызывается, пока задача не завершится. Повторные запросы бесплатны.
Задача ещё выполняется
{
"error": "In progress",
"code": 50,
"progress": 10,
"time": "2026-02-11 14:32:07"
}
| Поле | Тип | Описание |
|---|---|---|
| request | object | Параметры, с которыми задача была поставлена. |
| response.success | bool | Успешно ли отработала нейросеть. |
| response.data | array | Ссылки на готовое видео. Пустой массив, если генерация не удалась. |
| response.error | string | null | Текст ошибки нейросети. |
| time | string | Время готовности результата. |
| cost | int | Сколько лимитов списано за задачу. При неуспешной генерации — 0, лимиты возвращаются на счёт. |
Пример результата
{
"request": {
"model": "sora-2",
"prompt": "Кот в наушниках диджеит на вечеринке",
"aspect_ratio": "16:9",
"quality": "720p",
"duration": 10
},
"response": {
"success": true,
"error": null,
"data": [
"https://tools.pixelplus.ru/storage/ai-video/vid_65f2c1a9.mp4"
]
},
"time": "2026-02-11 14:36:41",
"cost": 1200
}
Тарификация
Стоимость определяется комбинацией model, quality и duration: у моделей свои прайс-правила, более высокое качество и большая длительность дороже. Если генерация завершилась неудачей, списанные лимиты возвращаются на счёт, а в ответе приходит cost: 0. Фактическое списание всегда видно в поле cost вместе с результатом.
Если доступных лимитов не хватает, задача не создаётся: в ответе придут код ошибки и точные значения available / need.
Коды ошибок
| Код | Текст | Причина |
|---|---|---|
| -1 | Access denied | Параметр key не передан. |
| -2 | Access denied | Ключ не найден или недействителен. |
| -4 | Access denied | Запрошен report_id чужой задачи или задачи другого инструмента. |
| -51 | No requests data | Запрос без models и без report_id пришёл методом GET — ожидался POST. |
| -60 | MAX_PARALLEL_TASKS_FAIL | Больше 5 одновременно выполняющихся задач инструмента. |
| -100 | tools errors | Ошибки валидации, список причин — в поле details. |
| 50 | In progress | Задача ещё выполняется, повторите запрос позже. |
| -104 | Processing error | Ошибка при выполнении задачи. |
| -105 | Limits run out | Лимиты закончились в процессе выполнения. |
| -106 | The process was canceled by a user | Задача отменена пользователем. |
| -107 | The process took more than 6 hours and was canceled | Задача выполнялась дольше 6 часов и была снята. |
| -80 … -83, -68 | Not enough … limits | Исчерпан часовой, суточный, недельный, месячный или годовой лимит. В ответе — available и need. |
Основные сообщения валидации в details
Введите запрос, пожалуйста.иУменьшите размер запроса до {N} символов, пожалуйста.;Выберите модель нейросети, пожалуйста.иВыбранная модель недоступна.;Выберите соотношение сторон, пожалуйста.иВыберите качество видео, пожалуйста.;Модель Runway не поддерживает звук…—audio_descriptionс несовместимой моделью;Уберите из запроса параметры, пожалуйста…иУберите из запроса ссылки, пожалуйста.;Исправьте запрос — фильтр 18+.;Укажите ссылку на видео или загрузите файл.,Размер загруженного видео не должен превышать 10 МБ.,Недопустимый формат видео.— режимtab=edit;Данный метод доступен только платным тарифам!.
Примеры
cURL
# 1. Справочник моделей
curl 'https://tools.pixelplus.ru/api/aivideo?key={ключ-api}&models=1'
# 2. Постановка задачи
curl -X POST 'https://tools.pixelplus.ru/api/aivideo?key={ключ-api}' \
-d 'model=sora-2' \
-d 'aspect_ratio=16:9' \
-d 'quality=720p' \
-d 'duration=10' \
--data-urlencode 'prompt=Кот в наушниках диджеит на вечеринке'
# 3. Результат
curl 'https://tools.pixelplus.ru/api/aivideo?key={ключ-api}&report_id=18452301'
PHP
<?php
$key = '{ключ-api}';
$base = 'https://tools.pixelplus.ru/api';
function apiRequest(string $url, array $data = null): array
{
$curl = curl_init();
$options = [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 300,
];
if ($data !== null) {
$options[CURLOPT_POST] = true;
$options[CURLOPT_POSTFIELDS] = $data;
}
curl_setopt_array($curl, $options);
$response = curl_exec($curl);
curl_close($curl);
return json_decode($response, true) ?: [];
}
// 1. Берём модель из справочника
$catalog = apiRequest("{$base}/aivideo?key={$key}&models=1");
$model = $catalog['default'];
// 2. Ставим задачу
$task = apiRequest("{$base}/aivideo?key={$key}", [
'model' => $model,
'prompt' => 'Кот в наушниках диджеит на вечеринке',
'aspect_ratio' => '16:9',
'quality' => '720p',
]);
if (empty($task['report_id'])) {
exit('Ошибка: ' . json_encode($task, JSON_UNESCAPED_UNICODE));
}
// 3. Ждём результат — генерация видео идёт минутами
do {
sleep(15);
$result = apiRequest("{$base}/aivideo?key={$key}&report_id={$task['report_id']}");
} while (($result['code'] ?? null) === 50);
print_r($result['response']['data']);
Python
import time
import requests
KEY = '{ключ-api}'
BASE = 'https://tools.pixelplus.ru/api'
catalog = requests.get(f'{BASE}/aivideo', params={'key': KEY, 'models': 1}).json()
task = requests.post(
f'{BASE}/aivideo',
params={'key': KEY},
data={
'model': catalog['default'],
'prompt': 'Кот в наушниках диджеит на вечеринке',
'aspect_ratio': '16:9',
'quality': '720p',
},
).json()
while True:
result = requests.get(
f'{BASE}/aivideo',
params={'key': KEY, 'report_id': task['report_id']},
).json()
if result.get('code') != 50:
break
time.sleep(15)
print(result['response']['data'])
print('Списано лимитов:', result['cost'])
Редактирование готового ролика
<?php
// Модель должна иметь isVideoEdit=true в справочнике
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://tools.pixelplus.ru/api/aivideo?key={ключ-api}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => [
'tab' => 'edit',
'model' => 'runway-aleph',
'prompt' => 'Замени фон на зимний город',
'upload_video' => new CURLFile('/path/to/clip.mp4'),
// либо ссылкой:
// 'video_url' => 'https://example.com/clip.mp4',
],
]);
echo curl_exec($curl);
curl_close($curl);
Ограничения и рекомендации
- Модель берите из справочника
models=1: состав зависит от тарифа ключа и обновляется чаще, чем у остальных ИИ-инструментов. - Опрашивайте результат не чаще одного раза в 10 секунд — генерация видео занимает минуты.
- Не больше 5 одновременно выполняющихся задач на пользователя.
- Допустимые значения
durationзависят от модели, а неподходящее значение подменяется молча — сверяйтесь с таблицей выше. - Звук через
audio_descriptionподдерживают не все модели: сrunwayзапрос будет отклонён. - Ссылки и параметры вида
--paramв промпте запрещены, текст проходит фильтр 18+. - Готовый результат хранится в истории инструмента: один и тот же
report_idможно запрашивать сколько угодно раз бесплатно. Сам файл скачивайте сразу — ссылки не вечны.