LogoNanoPhoto.AI文档
LogoNanoPhoto.AI文档
网站首页文档首页

入门指南

入门指南

用户指南

用户指南

API

API 概览Sora 水印去除 API视频反推提示词 APISora 2 提示词生成器 APISora 2 视频生成 APISora 2 TVC 广告 APINano Banana Pro 图片生成 APINano Banana 2 图片生成 API

场景

Sora 2 TVC 广告制作

常见问题

常见问题
X (Twitter)

Sora 2 视频生成 API

使用 OpenAI Sora 2 模型生成视频的 API,支持文生视频和图生视频模式。

在线体验: https://nanophoto.ai/sora-2

接口

方法路径说明
POST/api/sora-2/generate生成视频
POST/api/sora-2/check-status查询任务状态

认证

Authorization: Bearer YOUR_API_KEY

积分

模型时长积分
sora210s4
sora215s8
sora2-pro-standard (720p)10s60
sora2-pro-standard (720p)15s100
sora2-pro-high (1080p)10s120
sora2-pro-high (1080p)15s240

生成视频

POST /api/sora-2/generate

请求头

Header值
Content-Typeapplication/json
AuthorizationBearer YOUR_API_KEY

请求参数

参数类型必填说明
promptstring是视频生成提示词
modestring是textToVideo(文生视频)或 imageToVideo(图生视频)
modelTierstring否sora2(默认)、sora2-pro-standard 或 sora2-pro-high
aspectRatiostring否portrait(竖屏,默认)或 landscape(横屏)
videoDurationstring否10 或 15(秒)
imageUrlsstring[]条件必填图生视频模式的图片公开 URL

API 调用图生视频模式仅接受 imageUrls(公开 URL),不支持 Base64 图片上传。

请求示例

文生视频

curl -X POST "https://nanophoto.ai/api/sora-2/generate" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-raw '{
    "prompt": "一只金毛犬在日落时分的海滩上奔跑,电影级光影",
    "mode": "textToVideo",
    "modelTier": "sora2",
    "aspectRatio": "landscape",
    "videoDuration": "10"
  }'

图生视频

curl -X POST "https://nanophoto.ai/api/sora-2/generate" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-raw '{
    "prompt": "画中的人物动起来,并朗读诗词",
    "mode": "imageToVideo",
    "modelTier": "sora2",
    "aspectRatio": "landscape",
    "videoDuration": "10",
    "imageUrls": ["https://static.nanophoto.ai/demo/nano-banana-pro.webp"]
  }'

TypeScript

sora-2-api-example.ts
async function generateVideo() {
  // 第一步:提交生成任务
  const response = await fetch("https://nanophoto.ai/api/sora-2/generate", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      Authorization: "Bearer YOUR_API_KEY",
    },
    body: JSON.stringify({
      prompt: "一只金毛犬在日落时分的海滩上奔跑",
      mode: "textToVideo",
      modelTier: "sora2",
      aspectRatio: "landscape",
      videoDuration: "10",
    }),
  });

  const data = await response.json();

  if (!data.success) {
    console.error("生成失败:", data.error);
    return;
  }

  // 第二步:轮询任务状态
  const taskId = data.taskId;
  while (true) {
    await new Promise((resolve) => setTimeout(resolve, 5000)); // 等待 5 秒

    const statusRes = await fetch(
      "https://nanophoto.ai/api/sora-2/check-status",
      {
        method: "POST",
        headers: {
          "Content-Type": "application/json",
          Authorization: "Bearer YOUR_API_KEY",
        },
        body: JSON.stringify({ taskId }),
      }
    );

    const status = await statusRes.json();

    if (status.status === "completed") {
      console.log("视频地址:", status.videoUrl);
      return;
    }

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

    console.log("处理中...", status.progress);
  }
}

generateVideo();

响应

处理中

{
  "success": true,
  "status": "processing",
  "taskId": "task_abc123",
  "message": "Video generation in progress"
}

收到 status: "processing" 时,请每隔 5-10 秒轮询 check-status 接口。

错误

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

查询任务状态

POST /api/sora-2/check-status

请求头

Header值
Content-Typeapplication/json
AuthorizationBearer YOUR_API_KEY

请求参数

参数类型必填说明
taskIdstring是生成接口返回的任务 ID

请求示例

curl -X POST "https://nanophoto.ai/api/sora-2/check-status" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-raw '{"taskId": "task_abc123"}'

响应

处理中

{
  "success": true,
  "status": "processing",
  "progress": "generating",
  "message": "Video generation generating",
  "taskId": "task_abc123"
}

已完成

{
  "success": true,
  "status": "completed",
  "videoUrl": "https://video.nanophoto.ai/sora/...",
  "taskId": "task_abc123",
  "generationTime": 120,
  "creditsUsed": 4
}

失败

{
  "success": false,
  "status": "failed",
  "error": "Video generation failed",
  "errorCode": "GENERATION_FAILED",
  "taskId": "task_abc123"
}

轮询策略

  • 每 5-10 秒 轮询一次 /api/sora-2/check-status
  • 典型生成时间:sora2 约 1-3 分钟,Pro 模型约 3-8 分钟
  • 生成失败时积分会自动退还

错误码

errorCodeHTTP 状态码说明
LOGIN_REQUIRED401需要认证
API_KEY_RATE_LIMIT_EXCEEDED429超出频率限制(100 次/小时)
INSUFFICIENT_CREDITS402积分不足
PROMPT_REQUIRED400缺少提示词
IMAGE_REQUIRED400图生视频模式需要图片
IMAGE_URLS_REQUIRED400API 调用需要 imageUrls(不支持 base64)
GENERATION_FAILED500视频生成失败
TASK_ID_REQUIRED400缺少任务 ID
TASK_NOT_FOUND404任务不存在或无权访问
INTERNAL_ERROR500内部服务器错误

Sora 2 提示词生成器 API

根据主题生成专业 Sora 2 视频提示词的 API,支持多种视频手法和多语言输出。

Sora 2 TVC 广告 API

使用 AI 驱动的分镜图生成和 Sora 2 视频合成来制作 TVC(电视广告)视频的 API。

目录

接口
认证
积分
生成视频
请求头
请求参数
请求示例
文生视频
图生视频
TypeScript
响应
处理中
错误
查询任务状态
请求头
请求参数
请求示例
响应
处理中
已完成
失败
轮询策略
错误码