88API88API
使用指南AI 應用API 文件幫助支援
影片(Video)

Veo 影片 API

使用 88API 提交 Veo 3.1 影片任務、輪詢狀態並下載生成結果

88API 的 Veo 介面採用非同步任務模式:先提交生成任務,再使用返回的任務 ID 輪詢狀態。任務完成後,響應中會提供可下載的 video_url

介面地址

https://88api.ai

所有請求都需要攜帶 API Key:

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

可用模型

模型規格適用場景
veo-3.1-fast-1080p-8sVeo 3.1 Fast、固定 8 秒速度優先、日常生成
veo-3.1-1080p-8sVeo 3.1 Standard、固定 8 秒質量優先

請始終使用表中的 88API 模型名。響應中的 model 可能顯示實際的上游模型名,客戶端不應依賴該欄位判斷任務歸屬。

輸入能力與實測邊界

以下結果已透過 88API 公開介面實際提交任務並下載成片驗證:

能力支援情況實測說明
文生影片支援Fast 與 Standard 均已生成成功
單圖生影片支援1 張圖片作為起始參考幀
首尾幀生影片支援第 1 張作為首幀,第 2 張作為尾幀;Fast 與 Standard 均已驗證
3 張及以上參考圖不支援請求可能仍會完成,但第 3 張開始不會生效;客戶端必須限制為最多 2 張
參考音訊輸入不支援不支援上傳或傳入音訊 URL,參考音訊數量為 0
生成影片音軌支援Veo 會為成片生成原生音軌,但不能使用使用者提供的音訊作為參考

重要:介面可能不會對多餘圖片或未知音訊欄位返回引數錯誤。請求成功只表示任務已建立,不代表這些輸入已經生效。請嚴格按照上表構造請求。

第一步:提交影片任務

請求

POST /v1/videos

請求體為 JSON:

引數型別必填說明
modelstring使用上表中的模型名
promptstring影片內容、鏡頭、運動和風格描述
sizestring推薦橫屏 1920x1080 或豎屏 1080x1920;其他尺寸由上游決定實際輸出
durationinteger當前模型固定為 8 秒,建議明確傳入 8
imagesstring[]圖生影片參考圖,支援圖片 URL 或 Base64;1 張為首幀,2 張為首幀加尾幀,最多 2 張

當前介面沒有參考音訊引數。不要傳入 audioaudio_urlaudiosinput_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"
    ]
  }'

使用兩張圖片時,第 1 張是首幀,第 2 張是尾幀:

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"
    ]
  }'

不要提交第 3 張圖片。當前介面可能仍返回成功,但實測第 3 張圖片不會進入生成結果。

提交成功響應

介面會立即返回排隊中的任務:

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

儲存 idtask_id,下一步查詢時使用。不要在客戶端超時後直接重複提交相同的 POST 請求,否則可能建立並計費多個任務。

第二步:輪詢任務狀態

請求

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

推薦每隔 5~10 秒查詢一次,總超時時間設定為至少 600 秒。

狀態說明

狀態說明
queued已進入佇列
processing正在生成
completed生成成功,讀取 video_url
failed生成失敗,讀取 error

生成成功響應

{
  "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 文字中可能看到 \u0026,這是字元 & 的轉義形式。請使用 JSON 解析器讀取響應,不要手工複製未解析的原始字串。
  • 不要把 API Key 寫入瀏覽器前端程式碼、公開倉庫或日誌。

常見問題

為什麼提交後沒有立即返回影片?

影片生成是非同步任務。提交介面只返回任務 ID,必須繼續呼叫查詢介面,直到狀態變為 completedfailed

可以請求 15 秒或 30 秒嗎?

不可以。當前公開的兩個 Veo 模型均為固定 8 秒規格,請使用模型名中帶有的 8s 作為能力邊界。

可以上傳參考音訊嗎?

不可以。當前 Veo 介面的參考音訊數量為 0。生成結果通常會包含 Veo 自動生成的原生音軌,但不能透過 audioaudio_urlaudiosinput_audio 指定參考音訊。