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
响应
处理中
错误
查询任务状态
请求头
请求参数
请求示例
响应
处理中
已完成
失败
轮询策略
错误码