LogoNanoPhoto.AI文檔
LogoNanoPhoto.AI文檔
網站首頁文檔首頁

入門指南

入門指南

使用者指南

使用者指南

API

API 概覽Sora 浮水印去除 API影片反推提示詞 APISora 2 提示詞生成器 APISora 2 影片生成 APISora 2 TVC 廣告 APINano Banana Pro 圖片生成 APINano Banana 2 圖片生成 APIVeo 3.1 影片生成 API

場景

Sora 2 TVC 廣告製作

帳單

帳單與發票

常見問題

常見問題
X (Twitter)

Veo 3.1 影片生成 API

使用 Google Veo 3.1 模型生成影片的 API,支援文字生成影片、參考圖片和首尾幀模式。支援多鏡頭長影片,最長 168 秒。

線上體驗: https://nanophoto.ai/veo-3

端點

方法路徑說明
POST/api/veo-3/generate生成影片
POST/api/veo-3/check-status查詢任務狀態

認證

Authorization: Bearer YOUR_API_KEY

點數

解析度鏡頭數點數
720p每個鏡頭10
1080p僅限 1 個鏡頭14
4K僅限 1 個鏡頭30

每個鏡頭生成 8 秒影片片段,多鏡頭影片自動拼接。

每次請求最多 21 個鏡頭(總計 168 秒)。1080p 和 4K 僅支援單鏡頭生成。

生成影片

POST /api/veo-3/generate

請求標頭

Header值
Content-Typeapplication/json
AuthorizationBearer YOUR_API_KEY

請求參數

參數類型必填說明
shotsobject[]是鏡頭物件陣列(最多 21 個)
shots[].idstring是鏡頭唯一識別碼
shots[].promptstring是影片生成提示詞
shots[].generationTypestring是TEXT_2_VIDEO、FIRST_AND_LAST_FRAMES_2_VIDEO 或 REFERENCE_2_VIDEO
shots[].aspectRatiostring是16:9 或 9:16
shots[].imageUrlsstring[]條件必填公開圖片 URL(按生成類型要求)
resolutionstring否720p(預設)、1080p 或 4k(僅單鏡頭)

生成類型

類型說明圖片要求
TEXT_2_VIDEO文字生成影片無(不可傳圖片)
FIRST_AND_LAST_FRAMES_2_VIDEO首尾幀生成影片1-2 張圖片
REFERENCE_2_VIDEO參考圖片生成影片1-3 張圖片

API 呼叫僅接受 imageUrls(公開 URL),不支援 Base64 圖片上傳。

請求範例

文字生成影片(單鏡頭)

curl -X POST "https://nanophoto.ai/api/veo-3/generate" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-raw '{
    "shots": [
      {
        "id": "shot-1",
        "prompt": "一隻金毛犬在日落時分的海灘上奔跑,電影級光影",
        "generationType": "TEXT_2_VIDEO",
        "aspectRatio": "16:9"
      }
    ],
    "resolution": "720p"
  }'

參考圖片生成影片

curl -X POST "https://nanophoto.ai/api/veo-3/generate" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-raw '{
    "shots": [
      {
        "id": "shot-1",
        "prompt": "畫中的人物動起來,穿越魔法森林",
        "generationType": "REFERENCE_2_VIDEO",
        "aspectRatio": "16:9",
        "imageUrls": ["https://static.nanophoto.ai/demo/nano-banana-pro.webp"]
      }
    ],
    "resolution": "720p"
  }'

多鏡頭影片

curl -X POST "https://nanophoto.ai/api/veo-3/generate" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-raw '{
    "shots": [
      {
        "id": "shot-1",
        "prompt": "城市天際線的黎明全景,金色的陽光",
        "generationType": "TEXT_2_VIDEO",
        "aspectRatio": "16:9"
      },
      {
        "id": "shot-2",
        "prompt": "窗台上的咖啡杯特寫,蒸氣升騰",
        "generationType": "TEXT_2_VIDEO",
        "aspectRatio": "16:9"
      },
      {
        "id": "shot-3",
        "prompt": "一個人穿過公園,秋葉飄落",
        "generationType": "TEXT_2_VIDEO",
        "aspectRatio": "16:9"
      }
    ],
    "resolution": "720p"
  }'

TypeScript

veo-3-api-example.ts
async function generateVideo() {
  // 第一步:提交生成任務
  const response = await fetch("https://nanophoto.ai/api/veo-3/generate", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      Authorization: "Bearer YOUR_API_KEY",
    },
    body: JSON.stringify({
      shots: [
        {
          id: "shot-1",
          prompt: "一隻金毛犬在日落時分的海灘上奔跑",
          generationType: "TEXT_2_VIDEO",
          aspectRatio: "16:9",
        },
      ],
      resolution: "720p",
    }),
  });

  const data = await response.json();

  if (data.status === "failed") {
    console.error("生成失敗:", data.error);
    return;
  }

  // 第二步:輪詢任務狀態
  const taskIds = data.shots.map((shot: any) => ({
    shotId: shot.shotId,
    taskId: shot.taskId,
  }));

  while (true) {
    await new Promise((resolve) => setTimeout(resolve, 5000)); // 等待 5 秒

    const statusRes = await fetch(
      "https://nanophoto.ai/api/veo-3/check-status",
      {
        method: "POST",
        headers: {
          "Content-Type": "application/json",
          Authorization: "Bearer YOUR_API_KEY",
        },
        body: JSON.stringify({ taskIds, resolution: "720p" }),
      }
    );

    const status = await statusRes.json();

    if (status.status === "completed") {
      for (const shot of status.shots) {
        console.log(`鏡頭 ${shot.shotId} 影片網址:`, shot.videoUrl);
      }
      return;
    }

    if (status.status === "failed") {
      console.error("生成失敗:", status.shots);
      return;
    }

    console.log("處理中...");
  }
}

generateVideo();

回應

處理中

{
  "status": "processing",
  "shots": [
    {
      "shotId": "shot-1",
      "taskId": "task_abc123",
      "status": "processing"
    }
  ],
  "creditsUsed": 10
}

收到 status: "processing" 時,請每隔 5-10 秒輪詢 check-status 端點。

錯誤

{
  "error": "Insufficient credits",
  "errorCode": "INSUFFICIENT_CREDITS",
  "requiredCredits": 10
}

查詢任務狀態

POST /api/veo-3/check-status

請求標頭

Header值
Content-Typeapplication/json
AuthorizationBearer YOUR_API_KEY

請求參數

參數類型必填說明
taskIdsobject[]是生成端點返回的任務 ID 陣列
taskIds[].shotIdstring是鏡頭 ID
taskIds[].taskIdstring是生成端點返回的任務 ID
resolutionstring否720p(預設)、1080p 或 4k

請求範例

curl -X POST "https://nanophoto.ai/api/veo-3/check-status" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-raw '{
    "taskIds": [
      {"shotId": "shot-1", "taskId": "task_abc123"}
    ],
    "resolution": "720p"
  }'

回應

處理中

{
  "status": "processing",
  "shots": [
    {
      "shotId": "shot-1",
      "taskId": "task_abc123",
      "status": "processing"
    }
  ]
}

已完成

{
  "status": "completed",
  "shots": [
    {
      "shotId": "shot-1",
      "taskId": "task_abc123",
      "status": "completed",
      "videoUrl": "https://video.nanophoto.ai/veo/...",
      "generationTime": 90
    }
  ]
}

失敗

{
  "status": "failed",
  "shots": [
    {
      "shotId": "shot-1",
      "taskId": "task_abc123",
      "status": "failed",
      "error": "Video generation failed"
    }
  ]
}

輪詢策略

  • 每 5-10 秒 輪詢一次 /api/veo-3/check-status
  • 典型生成時間:每個鏡頭約 2-5 分鐘
  • 多鏡頭影片因順序生成需要更長時間
  • 生成失敗時點數會自動退還

錯誤碼

errorCodeHTTP 狀態碼說明
LOGIN_REQUIRED401需要認證
API_KEY_RATE_LIMIT_EXCEEDED429超出頻率限制(100 次/小時)
INSUFFICIENT_CREDITS402點數不足
SHOTS_REQUIRED400缺少鏡頭陣列
PROMPT_REQUIRED400鏡頭缺少提示詞
INVALID_IMAGE_COUNT400圖片數量不符合生成類型要求
IMAGE_URLS_REQUIRED400API 呼叫需要 imageUrls(不支援 base64)
GENERATION_FAILED500影片生成失敗
TASK_IDS_REQUIRED400缺少任務 ID
TASK_NOT_FOUND404任務不存在或無權存取
INTERNAL_ERROR500內部伺服器錯誤

Nano Banana 2 圖片生成 API

使用 Nano Banana 2 進行 AI 圖片生成的 API,支援文生圖、圖生圖模式和 Google 搜尋增強提示詞。

Sora 2 TVC 廣告製作

使用 AI 三步建立專業 TVC 風格影片廣告。從創意主題到成片,幾分鐘即可完成。

目錄

端點
認證
點數
生成影片
請求標頭
請求參數
生成類型
請求範例
文字生成影片(單鏡頭)
參考圖片生成影片
多鏡頭影片
TypeScript
回應
處理中
錯誤
查詢任務狀態
請求標頭
請求參數
請求範例
回應
處理中
已完成
失敗
輪詢策略
錯誤碼