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
}VEO 3.1 公式テキストから動画への API
VEO 3.1 の公式テキストから動画への API リファレンスとインタラクティブなプレイグラウンド — JSON リクエストボディ、3段階の非同期フロー、柔軟な 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 を入力して、model / seconds / metadata.resolution を選び、送信してください。Default グループが使えます — 専用のグループ切り替えは不要です。input_reference も application/json body もありません。参照画像から生成するには、Image-to-Video エンドポイント を使用してください(同じエンドポイント + input_reference アップロード)。- length フィールドの名前は
secondsです(durationではありません)かつ string である必要があります"4"/"6"/"8"。これをdurationと名付けると静かに無視されるため、length はデフォルトの 4 秒にフォールバックします(「8 秒を送ったのに 4 秒になった」罠です);数値を渡すとparse_request_failed: cannot unmarshal number into Go struct field ... duration of type stringで失敗します generateAudioは渡さないでください — 上流はINVALID_ARGUMENTを返します。音声の意図(ambient、dialogue、BGM)は prompt に埋め込んでください- 1080p / 4k では、
secondsは"8"にする必要があります —"4"/"6"は上流側で拒否されます
- Step 1(このページ):
POST /v1/videos→task_id+status: "queued"を返します - Step 2:
GET /v1/videos/{task_id}をstatus: "completed"までポーリングします - Step 3: MP4 をダウンロードするために
GET /v1/videos/{task_id}/contentします
コードサンプル
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 コマンド 2 つ
すでにtask_id をお持ちの場合(タスク送信時に返されたもの、またはコンソールログに表示されたもの)、下の 2 つのプレースホルダーを置き換えるだけで実行できます:
sk-your-api-key→ あなたの APIYI キーtask_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. 動画をダウンロードする(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 は、status が completed に切り替わった直後にまれに発生する 400 をカバーしています(CDN の同期遅延)。パラメータ参照
| Param | Type | Required | Default | 説明 |
|---|---|---|---|---|
model | string | はい | — | veo-3.1-fast-generate-preview ($0.3/req) または veo-3.1-generate-preview ($1.2/req) |
prompt | string | はい | — | 動画の説明。シーン、アクション、カメラ、ライティング、audio intent を記述してください(generateAudio は渡さないでください) |
seconds | string | いいえ | "8" | 動画の長さ、string enum: "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 | いいえ | — | ランダムシード。固定シードにすると、出力のスタイルがまとまります(ただし バイト単位では再現できません) |
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はどちらも同じ値で返されます; 下流ではtask_idに標準化してください(既存の Reverse チャンネルと互換性があります)- CDN / 公開 URL は返されません — レスポンスに
video_url/data.urlはありません; 動画はGET /v1/videos/{task_id}/content経由の MP4 バイナリストリーム としてのみ取得できます(認証ヘッダーが必要です)。フロントエンドからこのエンドポイントを直接叩くことはできません — サーバー側でダウンロードし、自前の OSS / CDN に再ホストしてください progressは粗い粒度です — 0 / 50 / 100 の間でのみジャンプ するため、進捗バーには使用しないでくださいstatus: "failed"には詳細なerrorフィールドが含まれない場合があります; 通常はコンテンツレビューまたはパラメータエラーです。再試行するか、プロンプトを調整してください/contentは、statusがcompletedに切り替わった直後に 400 を返すことがあります; 4 秒後に再試行してください(上記のすべてのコードサンプルにはこれが組み込まれています)
completed に到達した時点で発生し、モデル名ごとにリクエスト単位で課金されます(fast $0.3 / standard $1.2、料金 を参照してください)。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
このページは役に立ちましたか?