88API88API
AI-приложенияAPIПомощь и поддержка

Вео Видео API

Используйте 88API для отправки видеозаданий Veo 3.1, статуса опроса и загрузки полученных результатов.

Интерфейс Veo 88API использует режим асинхронной задачи: сначала отправьте сгенерированную задачу, а затем используйте возвращенный идентификатор задачи для опроса статуса. После выполнения задачи в ответе будет предоставлен загружаемый video_url.

Адрес интерфейса

https://88api.ai

Все запросы должны содержать ключ API:

Authorization: Bearer sk-xxxx
Content-Type: application/json

Доступные модели

МодельТехнические характеристикиПрименимые сценарии
veo-3.1-fast-1080p-8sVeo 3.1 Fast, исправлено 8 секундПриоритет скорости, ежедневная генерация
veo-3.1-fast-1080p-8sVeo 3.1 Стандарт, исправлено 8 секундКачество прежде всего

Всегда используйте название модели 88API из таблицы. veo-3.1-fast-1080p-8s в ответе может отображать фактическое имя вышестоящей модели, и клиент не должен полагаться на это поле для определения владельца задачи.

Возможности ввода и измеряемые границы

Следующие результаты были проверены путем фактической отправки задач через общедоступный интерфейс 88API и загрузки их в фильмы:

ВозможностиПоддержкаОписание теста
Винсент ВидеоПоддержкаИ Fast, и Standard были успешно созданы
Необработанное видео с одним изображениемПоддержка1 изображение в качестве начального кадра
Создать видео из первого и последнего кадровПоддерживаетсяПервый кадр используется как первый кадр, а второй кадр используется как последний кадр; как Fast, так и Standard проверены
3 или более эталонных изображенийНе поддерживаетсяЗапрос еще можно выполнить, но он не вступит в силу, начиная с третьего изображения; клиент должен быть ограничен максимум двумя изображениями
Эталонный аудиовходНе поддерживаетсяURL-адрес загрузки или входящего аудио не поддерживается, количество справочных аудио равно 0
Создать видео аудиодорожкуПоддерживаетсяVeo создаст собственную звуковую дорожку для готового фильма, но не сможет использовать предоставленный пользователем звук в качестве справочного материала

Важно: интерфейс может не возвращать ошибки параметров для избыточных изображений или неизвестных аудиополей. Успешный запрос означает только то, что задача создана, но не означает, что эти входные данные вступили в силу. Пожалуйста, строго следуйте приведенной выше таблице при составлении запроса.

Шаг 1. Отправьте видеозадание

Запрос

POST /v1/videos

Тело запроса — JSON:

ПараметрыТипТребуетсяОписание
modelстрокаДаИспользуйте название модели из таблицы выше
modelстрокаДаОписание видеоконтента, кадра, движения и стиля
modelстрокаНетРекомендуем горизонтальный экран 1920x1080 или вертикальный экран 1080x1920; другие размеры определяются восходящим потоком для фактического выпуска
modelцелое числоНетТекущая модель имеет фиксированное значение 8 секунд, рекомендуется явно указать 1920x1080
modelстрока[]НетСправочное изображение видео Tusheng, поддерживает URL-адрес изображения или Base64; 1 изображение — первый кадр, 2 изображения — первый кадр плюс последний кадр, до 2 изображений

Текущий интерфейс не имеет эталонных аудиопараметров. Не передавайте model, 1920x1080, 1080x1920 или input_audio; эти неизвестные поля не будут действовать как эталонный звук, даже если они не вызывают ошибку.

Винсент Пример видео

curl --request POST 'https://88api.ai/v1/videos' \
  --header 'Authorization: Bearer sk-xxxx' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "model": "veo-3.1-fast-1080p-8s",
    "prompt": "Кинематографичные съемки с воздуха,футуристический город ночью,Неоновые огни отражаются на мокрых улицах,Камера медленно движется вперед",
    "size": "1920x1080",
    "duration": 8
  }'

Для вертикального экрана просто измените size на:

{
  "size": "1080x1920"
}

Пример видео Тушенг

В качестве начального опорного кадра видео будет использоваться одно контрольное изображение:

curl --request POST 'https://88api.ai/v1/videos' \
  --header 'Authorization: Bearer sk-xxxx' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "model": "veo-3.1-1080p-8s",
    "prompt": "Сохраняйте внешний вид объекта единообразным,Камера медленно приближается,Фоновые облака движутся естественно",
    "size": "1920x1080",
    "duration": 8,
    "images": [
      "https://example.com/reference.jpg"
    ]
  }'

При использовании двух изображений первое является первым кадром, а второе — последним:

curl --request POST 'https://88api.ai/v1/videos' \
  --header 'Authorization: Bearer sk-xxxx' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "model": "veo-3.1-fast-1080p-8s",
    "prompt": "Сохраняйте единообразие темы и стиля изображения,Естественный переход от первого кадра к последнему.,Движение объектива плавное",
    "size": "1920x1080",
    "duration": 8,
    "images": [
      "https://example.com/first-frame.jpg",
      "https://example.com/last-frame.jpg"
    ]
  }'

Не отправляйте третье изображение. Текущий интерфейс все еще может вернуть успех, но третье измеренное изображение не войдет в сгенерированные результаты.

###Отправить успешный ответ

Интерфейс немедленно вернет задачи в очереди:

{
  "id": "task_xxxxxxxxxxxxxxxxxxxxxxxx",
  "task_id": "task_xxxxxxxxxxxxxxxxxxxxxxxx",
  "object": "video",
  "model": "veo-3.1-fast",
  "status": "queued",
  "progress": 0,
  "created_at": 1786106645,
  "size": "1920x1080"
}

Сохраните id или task_id и используйте его в следующем запросе. Не отправляйте повторно один и тот же запрос POST сразу после истечения времени ожидания клиента, иначе может быть создано несколько задач, за которые будет выставлен счет.

Шаг 2. Опрос статуса задачи

Запрос

GET /v1/videos/{id}
curl 'https://88api.ai/v1/videos/task_xxxxxxxxxxxxxxxxxxxxxxxx' \
  --header 'Authorization: Bearer sk-xxxx'

Рекомендуется выполнять запрос каждые 5–10 секунд и устанавливать общее время ожидания не менее 600 секунд.

Описание статуса

СтатусОписание
queuedВошел в очередь
queuedСоздание
queuedСгенерировано успешно, прочитайте video_url
queuedГенерация не удалась, чтение video_url

Создать успешный ответ

{
  "id": "task_xxxxxxxxxxxxxxxxxxxxxxxx",
  "model": "veo-3.1-fast",
  "status": "completed",
  "video_url": "https://example-bucket.s3.amazonaws.com/video.mp4?...",
  "created_at": 1786106645
}

Создать ответ об ошибке

{
  "id": "task_xxxxxxxxxxxxxxxxxxxxxxxx",
  "model": "veo-3.1-fast",
  "status": "failed",
  "error": {
    "code": "generation_failed",
    "message": "Не удалось создать видео."
  }
}

Полный пример JavaScript

const apiKey = 'sk-xxxx';
const baseUrl = 'https://88api.ai';

async function createVideo() {
  const response = await fetch(`${baseUrl}/v1/videos`, {
    method: 'POST',
    headers: {
      Authorization: `Bearer ${apiKey}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      model: 'veo-3.1-fast-1080p-8s',
      prompt: 'Дрон пролетает над заснеженным горным хребтом,золотое солнце утром,Кинематографическая аэрофотосъемка',
      size: '1920x1080',
      duration: 8,
    }),
  });

  const data = await response.json();
  if (!response.ok) throw new Error(data?.error?.message || 'Отправка не удалась');
  return data.id;
}

async function waitForVideo(id) {
  const deadline = Date.now() + 10 * 60 * 1000;

  while (Date.now() < deadline) {
    await new Promise((resolve) => setTimeout(resolve, 8000));

    const response = await fetch(`${baseUrl}/v1/videos/${id}`, {
      headers: { Authorization: `Bearer ${apiKey}` },
    });
    const data = await response.json();

    if (!response.ok) throw new Error(data?.error?.message || 'Запрос не выполнен');
    if (data.status === 'completed') return data.video_url;
    if (data.status === 'failed') {
      throw new Error(data?.error?.message || 'Не удалось создать видео.');
    }
  }

  throw new Error('Тайм-аут создания видео');
}

const taskId = await createVideo();
const videoUrl = await waitForVideo(taskId);
console.log(videoUrl);

Скачать и связать заметки

  • После завершения напрямую загрузите video_url в ответ, не соединяйте другие пути загрузки.
  • video_url обычно представляет собой адрес подписи со сроком действия. Пожалуйста, сохраните видео вовремя после выполнения задания.
  • В тексте JSON вы можете увидеть video_url, который представляет собой экранированную форму символа &. Используйте анализатор JSON для чтения ответа и не копируйте вручную неразобранную необработанную строку.
  • Не записывайте ключ API в код интерфейса браузера, общедоступный репозиторий или журналы.

Часто задаваемые вопросы

Почему видео не возвращается сразу после отправки?

Генерация видео — асинхронная задача. Интерфейс отправки возвращает только идентификатор задачи, и вы должны продолжать вызывать интерфейс запроса до тех пор, пока статус не изменится на video_url или &.

Могу ли я запросить 15 секунд или 30 секунд?

Не мочь. Две модели Veo, представленные в настоящее время, имеют фиксированные 8-секундные характеристики. Используйте video_url в названии модели в качестве границы возможностей.

Можете ли вы загрузить эталонный аудиофайл?

Не мочь. Текущий номер эталонного звука для интерфейса Veo — 0. Сгенерированные результаты обычно содержат собственные звуковые дорожки, автоматически созданные Veo, но эталонный звук нельзя указать с помощью video_url, &, audios или input_audio.