迁移指南

提前准备 Sora 2 之后的方案

使用供应商无关的请求协议、自有结果存储与经过验证的备用模型,保持产品稳定。

供应商无关的请求结构
type VideoGenerationRequest = {
  prompt: string;
  imageUrl?: string;
  aspectRatio: "16:9" | "9:16";
  durationSeconds: number;
  quality: "standard" | "high";
  callbackUrl?: string;
};

type VideoGenerationResult = {
  id: string;
  status: "queued" | "running" | "succeeded" | "failed";
  progress: number;
  outputUrl?: string;
  errorCode?: string;
};

interface VideoProvider {
  create(input: VideoGenerationRequest): Promise<{ id: string }>;
  retrieve(id: string): Promise<VideoGenerationResult>;
}

把产品逻辑与模型拆开

在供应商代码进入业务之前,先统一输入、状态、错误与结果地址。

Sora 2 + Stable + Pro

按质量与成本选择模型:sora-2, sora-2-stable 或 sora-2-pro。

透明可控的计费

sora-2 与 sora-2-stable 按时长计费:10s 100 积分、15s 150 积分;sora-2-pro 每次 150 积分,失败任务自动退款,便于统计成本。

可预期的轮询

创建任务后调用 check-result 轮询状态与进度,无需 SSE 长连。

推荐对接流程

迁移时间点

OpenAI 计划于 2026 年 9 月 24 日下线 Sora 2 模型与 Videos API,请在上线前验证备用方案。

创建任务

发送 Sora 2 接口,携带提示词,并保存返回的 taskId。

跟踪进度

调用查询接口,直到状态变为 succeeded 或 failed。

分发成片

使用 result_url / result_urls 中已经上传到存储的地址向用户交付视频。

常见问题

接口如何鉴权?

在控制台创建 API Key 后,以 Authorization: Bearer YOUR_API_KEY 发送请求,可随时在控制台轮换密钥。

如何轮询获取结果?

调用创建接口后保存 taskId,每 3-5 秒调用 /api/video-generations/check-result,直到状态为 succeeded 或 failed,再使用 result_url/result_urls。

失败任务的积分如何处理?

系统会自动返还积分,并在查询结果中返回 refund_trans_no 与 credits_refunded=true,便于对账。

让下一次模型切换变成常规操作

保持应用端点稳定,把供应商选择限制在可替换的适配层中。