Поиск

Документация на метод "aivideo"

Асинхронный метод

ИИ-генератор видео: генерация и редактирование роликов

Метод запускает генерацию видео в инструменте ИИ-генератор видео — по текстовому описанию, по опорному изображению или на основе готового ролика. Работает асинхронно: сначала ставится задача, потом по report_id забирается результат. Состав доступных нейросетей отдаёт отдельный вызов того же метода.

GET /api/aivideo?key={ключ-api}&models=1 справочник моделей
POST /api/aivideo?key={ключ-api} постановка задачи
GET /api/aivideo?key={ключ-api}&report_id={id} результат

Как это работает

  • 1 Берём модель из справочника — вызываем метод с models=1. Видеомодели обновляются чаще остальных, а от выбранной модели зависят допустимая длительность и поддержка звука.
  • 2 Ставим задачуPOST с промптом и моделью. В ответ приходит report_id. Лимиты списываются в момент создания задачи.
  • 3 Забираем результат — периодически (раз в 10–15 секунд) запрашиваем метод с report_id, пока вместо In progress не придёт ссылка на готовое видео.
Ключ доступа к API создаётся в настройках аккаунта. Метод доступен только платным тарифам; ключ передаётся в query-строке параметром 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 можно запрашивать сколько угодно раз бесплатно. Сам файл скачивайте сразу — ссылки не вечны.