curl --request POST \
--url https://api.apiyi.com/v1/videos \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "veo-3.1-fast-generate-preview",
"prompt": "A coastal lighthouse at dusk, slow push-in, waves lapping the rocks, distant seabirds, cinematic lighting, steady camera"
}
'import requests
url = "https://api.apiyi.com/v1/videos"
payload = {
"model": "veo-3.1-fast-generate-preview",
"prompt": "A coastal lighthouse at dusk, slow push-in, waves lapping the rocks, distant seabirds, cinematic lighting, steady camera"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'veo-3.1-fast-generate-preview',
prompt: 'A coastal lighthouse at dusk, slow push-in, waves lapping the rocks, distant seabirds, cinematic lighting, steady camera'
})
};
fetch('https://api.apiyi.com/v1/videos', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.apiyi.com/v1/videos",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'veo-3.1-fast-generate-preview',
'prompt' => 'A coastal lighthouse at dusk, slow push-in, waves lapping the rocks, distant seabirds, cinematic lighting, steady camera'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.apiyi.com/v1/videos"
payload := strings.NewReader("{\n \"model\": \"veo-3.1-fast-generate-preview\",\n \"prompt\": \"A coastal lighthouse at dusk, slow push-in, waves lapping the rocks, distant seabirds, cinematic lighting, steady camera\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.apiyi.com/v1/videos")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"veo-3.1-fast-generate-preview\",\n \"prompt\": \"A coastal lighthouse at dusk, slow push-in, waves lapping the rocks, distant seabirds, cinematic lighting, steady camera\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.apiyi.com/v1/videos")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"veo-3.1-fast-generate-preview\",\n \"prompt\": \"A coastal lighthouse at dusk, slow push-in, waves lapping the rocks, distant seabirds, cinematic lighting, steady camera\"\n}"
response = http.request(request)
puts response.read_body{
"id": "task_xxxxxxxxxxxxxxxx",
"task_id": "task_xxxxxxxxxxxxxxxx",
"object": "video",
"model": "veo-3.1-fast-generate-preview",
"status": "queued",
"progress": 0,
"created_at": 1775025000,
"completed_at": 1775025090
}Официальный API VEO 3.1 для преобразования текста в видео
Справочник по официальному API VEO 3.1 для преобразования текста в видео и интерактивный Playground — тело JSON-запроса, трёхэтапный асинхронный поток, гибкая длительность 4 / 6 / 8 секунд, тарификация по каждому запросу.
curl --request POST \
--url https://api.apiyi.com/v1/videos \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "veo-3.1-fast-generate-preview",
"prompt": "A coastal lighthouse at dusk, slow push-in, waves lapping the rocks, distant seabirds, cinematic lighting, steady camera"
}
'import requests
url = "https://api.apiyi.com/v1/videos"
payload = {
"model": "veo-3.1-fast-generate-preview",
"prompt": "A coastal lighthouse at dusk, slow push-in, waves lapping the rocks, distant seabirds, cinematic lighting, steady camera"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'veo-3.1-fast-generate-preview',
prompt: 'A coastal lighthouse at dusk, slow push-in, waves lapping the rocks, distant seabirds, cinematic lighting, steady camera'
})
};
fetch('https://api.apiyi.com/v1/videos', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.apiyi.com/v1/videos",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'veo-3.1-fast-generate-preview',
'prompt' => 'A coastal lighthouse at dusk, slow push-in, waves lapping the rocks, distant seabirds, cinematic lighting, steady camera'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.apiyi.com/v1/videos"
payload := strings.NewReader("{\n \"model\": \"veo-3.1-fast-generate-preview\",\n \"prompt\": \"A coastal lighthouse at dusk, slow push-in, waves lapping the rocks, distant seabirds, cinematic lighting, steady camera\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.apiyi.com/v1/videos")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"veo-3.1-fast-generate-preview\",\n \"prompt\": \"A coastal lighthouse at dusk, slow push-in, waves lapping the rocks, distant seabirds, cinematic lighting, steady camera\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.apiyi.com/v1/videos")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"veo-3.1-fast-generate-preview\",\n \"prompt\": \"A coastal lighthouse at dusk, slow push-in, waves lapping the rocks, distant seabirds, cinematic lighting, steady camera\"\n}"
response = http.request(request)
puts response.read_body{
"id": "task_xxxxxxxxxxxxxxxx",
"task_id": "task_xxxxxxxxxxxxxxxx",
"object": "video",
"model": "veo-3.1-fast-generate-preview",
"status": "queued",
"progress": 0,
"created_at": 1775025000,
"completed_at": 1775025090
}Bearer sk-xxx), введите prompt, выберите модель / секунды / metadata.resolution, затем отправьте. Default группа работает — отдельный переключатель группы не нужен.input_reference, application/json. Для генерации по референсному изображению используйте эндпоинт Image-to-Video (тот же эндпоинт + загрузка input_reference).- Поле длины называется
seconds(а неduration) и должно быть строкой"4"/"6"/"8". Если назвать егоduration, это будет молча проигнорировано → length откатится к значению по умолчанию 4 сек. (ловушка «отправили 8s, получили 4s»); передача числа завершаетсяparse_request_failed: cannot unmarshal number into Go struct field ... duration of type string - Не передавайте
generateAudio— upstream возвращаетINVALID_ARGUMENT. Описывайте аудиосценарий (ambient, dialogue, BGM) в prompt вместо этого - При 1080p / 4k
secondsдолжно быть"8"—"4"/"6"будут отклонены upstream
- Шаг 1 (эта страница):
POST /v1/videos→ возвращаетtask_id+status: "queued" - Шаг 2:
GET /v1/videos/{task_id}опрашивайте доstatus: "completed" - Шаг 3:
GET /v1/videos/{task_id}/contentдля скачивания MP4
Примеры кода
Python (OpenAI SDK · низкоуровневый client.post)
{/* OpenAI SDK has no videos.create method; /v1/videos is a custom path, use low-level client.post() */}
from openai import OpenAI
import time
client = OpenAI(
api_key="sk-your-api-key",
base_url="https://api.apiyi.com/v1"
)
# Step 1: submit
resp = client.post(
"/videos",
body={
"model": "veo-3.1-fast-generate-preview",
"prompt": "A coastal lighthouse at dusk, slow push-in, waves lapping the rocks, distant seabirds, cinematic lighting, steady camera",
"seconds": "8", # string, not number
"size": "1280x720",
"metadata": {
"resolution": "720p",
"aspectRatio": "16:9",
"seed": 20260521,
"negativePrompt": "blurry, watermark, distorted, low quality"
}
},
cast_to=dict
)
task_id = resp["task_id"]
print(f"Task ID: {task_id}, status: {resp['status']}")
# Step 2: poll (up to 3 minutes for 720p/1080p)
deadline = time.time() + 180
while time.time() < deadline:
s = client.get(f"/videos/{task_id}", cast_to=dict)
print(f"Status: {s['status']}, progress: {s.get('progress', 0)}%")
if s["status"] == "completed":
break
if s["status"] == "failed":
raise RuntimeError(f"Generation failed: {s}")
time.sleep(8)
# Step 3: download (retry to handle CDN sync delay right after completed)
import urllib.request, urllib.error
time.sleep(4)
for i in range(5):
try:
req = urllib.request.Request(
f"https://api.apiyi.com/v1/videos/{task_id}/content",
headers={"Authorization": "Bearer sk-your-api-key"}
)
with urllib.request.urlopen(req, timeout=180) as r, open("output.mp4", "wb") as f:
while chunk := r.read(1 << 16):
f.write(chunk)
break
except urllib.error.HTTPError:
if i == 4:
raise
time.sleep(4)
print("Saved: output.mp4")
Python (requests)
import requests
import time
API_KEY = "sk-your-api-key"
BASE_URL = "https://api.apiyi.com/v1"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}
# Step 1: submit (JSON body)
resp = requests.post(
f"{BASE_URL}/videos",
headers={**HEADERS, "Content-Type": "application/json"},
json={
"model": "veo-3.1-fast-generate-preview",
"prompt": "A coastal lighthouse at dusk, slow push-in, steady camera, ocean ambience and distant seabirds",
"seconds": "8", # must be a string
"size": "1280x720",
"metadata": {
"resolution": "720p",
"aspectRatio": "16:9"
}
},
timeout=30 # POST is just an enqueue; 30 sec is enough
).json()
task_id = resp["task_id"]
print(f"Task ID: {task_id}, status: {resp['status']}")
# Step 2: poll (3 min for 720p/1080p, 10 min for 4K)
deadline = time.time() + 180
while time.time() < deadline:
s = requests.get(f"{BASE_URL}/videos/{task_id}", headers=HEADERS).json()
print(f"Status: {s['status']}, progress: {s.get('progress', 0)}%")
if s["status"] == "completed":
break
if s["status"] == "failed":
raise RuntimeError(f"Generation failed: {s}")
time.sleep(8)
# Step 3: download with retry
time.sleep(4)
for i in range(5):
try:
with requests.get(
f"{BASE_URL}/videos/{task_id}/content",
headers=HEADERS, stream=True, timeout=180
) as r:
r.raise_for_status()
with open("output.mp4", "wb") as f:
for chunk in r.iter_content(chunk_size=8192):
f.write(chunk)
break
except requests.HTTPError:
if i == 4:
raise
time.sleep(4)
print("Saved: output.mp4")
cURL
{/* Just want to check/download with an existing task_id? See the "Already have a task_id?" section below */}
{/* Step 1: submit (the length field is seconds, the string "8", not number 8, and not duration) */}
RESP=$(curl -sS -X POST "https://api.apiyi.com/v1/videos" \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "veo-3.1-fast-generate-preview",
"prompt": "A coastal lighthouse at dusk, slow push-in, ocean ambience, cinematic lighting",
"seconds": "8",
"size": "1280x720",
"metadata": {"resolution": "720p", "aspectRatio": "16:9"}
}')
TASK_ID=$(echo "$RESP" | python3 -c 'import sys,json;print(json.load(sys.stdin)["task_id"])')
echo "task_id=$TASK_ID"
{/* Step 2: poll every 8 sec */}
while :; do
S=$(curl -sS -H "Authorization: Bearer sk-your-api-key" "https://api.apiyi.com/v1/videos/$TASK_ID")
ST=$(echo "$S" | python3 -c 'import sys,json;print(json.load(sys.stdin)["status"])')
echo "status=$ST"
[ "$ST" = "completed" ] && break
[ "$ST" = "failed" ] && { echo "$S"; exit 1; }
sleep 8
done
{/* Step 3: download (--retry covers occasional 400 right after status=completed) */}
sleep 4
curl -sSL --retry 3 --retry-delay 4 \
-H "Authorization: Bearer sk-your-api-key" \
"https://api.apiyi.com/v1/videos/$TASK_ID/content" \
-o output.mp4
ls -lh output.mp4
Node.js (встроенный fetch)
import fs from 'node:fs';
const API_KEY = 'sk-your-api-key';
const BASE_URL = 'https://api.apiyi.com/v1';
// Step 1: submit
const submitResp = await fetch(`${BASE_URL}/videos`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${API_KEY}`
},
body: JSON.stringify({
model: 'veo-3.1-fast-generate-preview',
prompt: 'A golden retriever running on a sandy beach, slow motion, golden hour, cinematic quality',
seconds: '8', // must be string
size: '1280x720',
metadata: { resolution: '720p', aspectRatio: '16:9' }
})
});
const { task_id } = await submitResp.json();
console.log(`Task ID: ${task_id}`);
// Step 2: poll
let status = 'queued';
while (status !== 'completed' && status !== 'failed') {
await new Promise(r => setTimeout(r, 8000));
const s = await (await fetch(`${BASE_URL}/videos/${task_id}`, {
headers: { 'Authorization': `Bearer ${API_KEY}` }
})).json();
status = s.status;
console.log(`Status: ${status}, progress: ${s.progress ?? 0}%`);
}
if (status === 'failed') throw new Error('Generation failed');
// Step 3: download (retry up to 3 times, 4-second gaps)
await new Promise(r => setTimeout(r, 4000));
let buffer;
for (let i = 0; i < 4; i++) {
try {
const resp = await fetch(`${BASE_URL}/videos/${task_id}/content`, {
headers: { 'Authorization': `Bearer ${API_KEY}` }
});
if (!resp.ok) throw new Error(`HTTP ${resp.status}`);
buffer = Buffer.from(await resp.arrayBuffer());
break;
} catch (e) {
if (i === 3) throw e;
await new Promise(r => setTimeout(r, 4000));
}
}
fs.writeFileSync('output.mp4', buffer);
console.log('Saved: output.mp4');
JavaScript в браузере
{/* Demo only; route through a backend proxy in production to avoid Key leakage; large video downloads are also unsuitable for direct browser handling */}
const submitResp = await fetch('https://api.apiyi.com/v1/videos', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer sk-your-api-key'
},
body: JSON.stringify({
model: 'veo-3.1-fast-generate-preview',
prompt: 'Watercolor northern lights over snowy mountains, gentle motion',
seconds: '4',
size: '720x1280',
metadata: { resolution: '720p', aspectRatio: '9:16' }
})
});
const { task_id } = await submitResp.json();
console.log('Task ID:', task_id);
{/* After polling completes, route the /content endpoint through your backend proxy for download */}
Уже есть task_id? Два cURL-команды для копирования и вставки
Если у вас уже естьtask_id (возвращается при отправке задачи или отображается в логах консоли), просто замените два заполнителя ниже и запустите:
sk-your-api-key→ ваш APIYI keytask_xxxxxxxxxxxxxxxx→ ваш task ID
1. Проверить статус задачи
curl "https://api.apiyi.com/v1/videos/task_xxxxxxxxxxxxxxxx" \
-H "Authorization: Bearer sk-your-api-key"
status: "completed", можно скачивать; если отображается in_progress, подождите несколько секунд и проверьте еще раз.
2. Скачать video (сохранится как output.mp4)
curl -L --retry 3 --retry-delay 4 \
"https://api.apiyi.com/v1/videos/task_xxxxxxxxxxxxxxxx/content" \
-H "Authorization: Bearer sk-your-api-key" \
-o output.mp4
/content требует заголовок Authorization — при прямом открытии URL в адресной строке браузера возвращается 401. --retry 3 описывает редкий 400 сразу после того, как status переключается на completed (задержка синхронизации CDN).Справка по параметрам
| Параметр | Тип | Обязательно | Значение по умолчанию | Описание |
|---|---|---|---|---|
model | string | Да | — | veo-3.1-fast-generate-preview ($0.3/req) или veo-3.1-generate-preview ($1.2/req) |
prompt | string | Да | — | Описание видео; опишите сцену, действие, камеру, освещение, намерение аудио (не передавайте generateAudio) |
seconds | string | Нет | "8" | Длительность видео, строковое перечисление: "4" / "6" / "8". Поле — seconds, а не duration (если указать duration, это будет тихо проигнорировано и значение вернется к 4 сек). 1080p/4k должны быть "8" |
size | string | Нет | 1280x720 | Пиксели вывода, например 1280x720 / 1920x1080 / 3840x2160; более низкий приоритет, чем у metadata.resolution |
metadata.resolution | string | Нет | 720p | 720p / 1080p / 4k; более высокий приоритет, чем у size |
metadata.aspectRatio | string | Нет | 16:9 | 16:9 (альбомная ориентация) или 9:16 (портретная ориентация) |
metadata.seed | int | Нет | — | Случайный seed. Фиксированный seed группирует результаты по стилю (но невозможно побайтно воспроизвести) |
metadata.negativePrompt | string | Нет | — | Негативный prompt; рекомендуется "blurry, watermark, distorted, low quality" |
generateAudio! Veo 3.1 изначально поддерживает аудио; передача этого параметра возвращает INVALID_ARGUMENT. Чтобы управлять аудио, впишите намерение в prompt: "waves, distant seabirds, low wind sounds".- Длительность:
metadata.durationSeconds > seconds > 8(отправляйтеseconds;durationне распознается) - Разрешение:
metadata.resolution > size > 720p - Соотношение сторон: явное
metadata.aspectRatio> определяемое по размеру >16:9
Формат ответа
Шаг 1 - сразу после отправки
{
"id": "task_xxxxxxxxxxxxxxxx",
"task_id": "task_xxxxxxxxxxxxxxxx",
"object": "video",
"model": "veo-3.1-fast-generate-preview",
"status": "queued",
"progress": 0,
"created_at": 1775025000
}
Шаг 2 - ответ опроса (в процессе)
{
"id": "task_xxxxxxxxxxxxxxxx",
"task_id": "task_xxxxxxxxxxxxxxxx",
"object": "video",
"model": "veo-3.1-fast-generate-preview",
"status": "in_progress",
"progress": 50,
"created_at": 1775025000
}
Шаг 2 - ответ опроса (завершено)
{
"id": "task_xxxxxxxxxxxxxxxx",
"task_id": "task_xxxxxxxxxxxxxxxx",
"object": "video",
"model": "veo-3.1-fast-generate-preview",
"status": "completed",
"progress": 100,
"created_at": 1775025000,
"completed_at": 1775025090
}
idиtask_idвозвращаются со значением одинаково; downstream должен стандартизировать наtask_id(совместимо с существующим обратным каналом)- CDN / публичный URL не возвращается — в ответе нет
video_url/data.url; видео можно получить только как MP4 binary stream черезGET /v1/videos/{task_id}/content(требуется auth header). Frontend не может вызывать этот эндпоинт напрямую — загружайте на стороне сервера и размещайте у себя в OSS / CDN progressявляется грубым показателем — перескакивает только между 0 / 50 / 100, не используйте его для индикаторов прогрессаstatus: "failed"может не содержать подробное полеerror; обычно это связано с проверкой контента или ошибками параметров. Просто повторите попытку или скорректируйте prompt/contentиногда возвращает 400 сразу после того, какstatusпереключается наcompleted; повторите попытку через 4 секунды (во всех примерах кода выше это уже учтено)
completed, и взимается за каждый запрос по имени модели (fast $0.3 / standard $1.2, см. Pricing). Само POST-отправление, опрос и загрузка не тарифицируются; неудачные задачи тоже не тарифицируются.Авторизации
API Key from APIYI console (Default group + Pay-per-request or Pay-as-you-go Priority Token; pure Pay-as-you-go not supported)
Тело
Model ID (per-request billing, duration / resolution do not affect price):
veo-3.1-fast-generate-preview— $0.3/request, top pick for iteration / batch generationveo-3.1-generate-preview— $1.2/request, for final delivery / 4K scenarios
veo-3.1-fast-generate-preview, veo-3.1-generate-preview Video generation prompt; describe in detail: scene + subject + action + camera + lighting + style.
Audio intent also goes in the prompt (e.g. "waves, distant seabirds, low wind sounds"). Do not pass generateAudio — upstream rejects with INVALID_ARGUMENT.
"A coastal lighthouse at dusk, slow push-in, waves lapping the rocks, distant seabirds, cinematic lighting, steady camera"
Video length. The field name is seconds (not duration), a string enum (not number):
"4"— 4 sec, 720p only"6"— 6 sec, 720p only"8"— 8 sec (default), required at 1080p / 4k
Sending duration instead is silently ignored → length falls back to the default 4 sec (720p returns no error but only outputs 4 sec; 1080p/4k errors with ... but got 4). Passing a number (8) returns parse_request_failed: cannot unmarshal number into Go struct field ... duration of type string.
4, 6, 8 Output pixel dimensions; lower precedence than metadata.resolution:
1280x720/720x1280— 720p (default)1920x1080/1080x1920— 1080p (seconds must be"8")3840x2160/2160x3840— 4k (seconds must be"8", 4–6× slower render)
1280x720, 720x1280, 1920x1080, 1080x1920, 3840x2160, 2160x3840 Wrapper for fine-grained generation parameters. Higher precedence than the top-level size etc.:
- Duration resolution order:
metadata.durationSeconds > seconds > 8(sendseconds;durationis not recognized) - Resolution resolution order:
metadata.resolution > size > 720p
Show child attributes
Show child attributes
Ответ
Task submitted; returns task_id and queued status
Task ID (matches task_id; downstream should standardize on task_id)
"task_xxxxxxxxxxxxxxxx"
Task ID for subsequent polling and download
"task_xxxxxxxxxxxxxxxx"
Object type, fixed to video
"video"
Model ID used for this task
"veo-3.1-fast-generate-preview"
Task status:
queued— submitted, awaiting processingin_progress— generatingcompleted— done, downloadable (/v1/videos/{task_id}/content)failed— failed (not billed), retry possible
queued, in_progress, completed, failed "queued"
Generation progress (coarse-grained, jumps only between 0 / 50 / 100, do not use for percentage bars)
0
Task creation Unix timestamp (seconds)
1775025000
Task completion Unix timestamp (seconds); only present for completed status
1775025090
Была ли эта страница полезной?