Вео Видео 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-8s | Veo 3.1 Fast, исправлено 8 секунд | Приоритет скорости, ежедневная генерация |
veo-3.1-fast-1080p-8s | Veo 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.