Aioga
AI资讯 / 行业动态
返回 AI资讯

OpenRouter 视频生成 API:一份代码优先的接入指南

OpenRouter:Announcements(RSS)Aioga 编辑团队2026-08-25T00:00:00.000Z热度 66

OpenRouter 推出统一的异步视频生成 API,通过 POST /api/v1/videos 提交任务、轮询状态并下载 MP4,支持 Seedance、Veo、Wan 等...

技巧观点OpenRouter:Announcements(RSS)

今日 AI 情报摘要

OpenRouter 推出统一的异步视频生成 API,通过 POST /api/v1/videos 提交任务、轮询状态并下载 MP4,支持 Seedance、Veo、Wan 等模型,切换模型只需更改 model 标识符。

中文正文 · AI 翻译

当你只测试一个模型时,将视频生成功能添加到应用中是很简单的。但当你想尝试另一个模型时,复杂性就出现了。每个提供商可能都有自己的端点、请求参数、作业状态、轮询逻辑和输出格式。这会将一个简单的模型更换变成需要构建和维护的另一个集成。

OpenRouter Video Generation API: A Code-First Guide

我们将该工作流程整合到一个异步视频 API 中:https://openrouter.ai/docs/guides/overview/multimodal/video-generation。你只需向 POST /api/v1/videos 提交提示,接收作业 ID,轮询直到生成完成,然后下载完成的视频。

在本指南中,我们将从头到尾构建这一流程。我们将用 Seedance 提交作业,安全地轮询,保存 MP4 文件,然后用 Veo 和 Wan 运行相同的集成。

视频生成比典型的 API 响应需要更长时间。模型必须生成和协调多个帧,保持它们之间的视觉一致性,有时还要生成匹配的音频。根据模型和请求的设置,这一过程可能需要几秒到几分钟不等。

在整个过程中保持原始 HTTP 请求开启是脆弱的。浏览器会话可能关闭,无服务器函数可能达到执行限制,或者代理可能在视频准备就绪之前超时。

异步 API 将提交与完成分离:

当模型在后台工作时,你的应用可以继续运行。它还可以在重启后恢复作业,因为生成任务绑定到持久的作业 ID,而不是长时间保持的连接。

当你已经知道要使用哪个模型,并且不希望改变时,直接的提供商集成效果很好。你可以使用提供商的认证、请求格式、作业状态、轮询端点以及输出响应。

当你想比较另一个模型时,额外的工作就显现出来。新的提供商可能对时长和分辨率使用不同的字段名,或者返回带有不同终端状态的不同作业对象。它还可能需要另一种方法来下载完成的资源。你的应用因此需要第二个客户端、另一组环境变量,以及更多针对提供商的错误处理。

这种方法本身没有问题。它只是意味着切换模型是一个集成上的变化,而不是配置上的变化,这会让实验变慢,并随着模型列表的增长增加维护成本。

本地生成能让你获得最大的控制权。你可以选择模型权重、自定义工作流程、将资源保存在自己的环境中,并避免为每次生成向托管提供商付费。

这种控制权伴随着基础设施的责任。你需要合适的 GPU 容量以及正确的 Python 和 CUDA 依赖。你还需要为每个模型家族提供足够的存储和可用环境。更高的分辨率和更长的视频会增加内存和处理需求,而增加另一个模型可能意味着需要下载更多权重或维护另一个工作流程。

对于已经运营 GPU 基础设施或需要本地处理的团队来说,这是值得的。如果你的目标是快速添加视频生成并测试多个模型,这是一种更重的起点。托管的 OpenRouter 路径则省去了大部分设置,这也是本指南其余部分所涵盖的内容。

我们在支持的视频模型间保持生成生命周期的一致性。无论选择的模型是 Seedance、Veo、Wan 还是目录中的其他模型,应用程序都使用相同的 API 密钥、POST /api/v1/videos 端点、任务状态流程和输出获取流程。

这些模型仍然有不同的能力。有的可能支持更长的时长,而有的可能提供额外的宽高比、更高分辨率、音频生成或特定提供商的控制。我们通过 video-model 端点暴露这些差异,而不是强制每个模型拥有相同的功能集。

这让你在保持稳定集成的同时,不隐藏每个模型的差异。你的应用程序可以查询当前能力,构建有效请求,并在不替换周围任务基础设施的情况下更换模型。

你只需要一个 OpenRouter API 密钥和一个可以发送 HTTP 请求的工具。这里的示例使用 Python 的 requests 和 TypeScript 的内置 fetch API,但该工作流程适用于任何能够发出 HTTP 请求的语言。

首先从你的 OpenRouter 账户创建一个 API 密钥,然后将其存储在环境变量中,而不是直接添加到源代码中:

对于 Python 示例,如果你还没有安装 requests,请先安装:

OpenRouter 使用 Bearer 令牌对 API 请求进行身份验证。在 Python 中,我们将一次性定义共享值,并在整个指南中重复使用:

在提交任务之前,你还可以查询 video-model 端点:https://openrouter.ai/docs/guides/overview/multimodal/video-generation#via-the-video-models-api,以查看当前可用的模型及每个模型支持的内容:

响应包括每个模型支持的时长、分辨率、宽高比、帧图像支持、音频功能、价格 SKU 以及特定提供商的参数。这比假设一个视频模型接受的设置也适用于另一个模型更可靠。

发送 POST 请求到 /api/v1/videos 并使用视频模型。包括描述你希望生成的内容的提示(prompt)。

每个请求都必须包含 model 参数,而文本到视频请求必须包含 prompt。仅支持从图像输入生成视频的模型可以省略 prompt。当所选模型支持时,你还可以提供可选设置,例如时长、分辨率、宽高比、音频生成、参考图像和种子(seed)。

在整个指南中,我们将使用相同的提示:

以下函数使用 Seedance 2.0 提交作业:

成功请求将返回 HTTP 202 Accepted。响应表示后台任务,而不是完成的视频:

在继续之前存储返回的任务 ID。如果你的进程重启,你应该能够继续跟踪现有任务,而不必重新提交并支付另一次生成费用。

步骤 1 返回的 polling_url 指向与 GET /api/v1/videos/{id} 相同的任务资源,它们是同一个端点。视频任务可以经历以下状态:

你的轮询循环在 completed 状态时应返回,在 failed、cancelled 或 expired 状态时应停止并报错。否则,应用程序可能会一直检查永远不会生成视频的任务。

文档化的响应会将 polling_url 返回为完整的 URL。下面的 urljoin 调用是一种防御性编码,也可以处理相对路径,因此循环在任何情况下都能工作:

这个循环包含两个快速示例中经常省略的安全措施。首先,它处理每一个文档化的终止状态,而不是只等待完成的状态。第二,它设置了一个一小时的超时,因此作业不会无限期地运行进程。值得注意的一个边缘情况是:因为在每次 sleep 之前检查截止时间而不是之后,作业在最坏情况下可能会超过名义超时一个轮询间隔才被循环发现。对于后台作业来说,这是一个可以接受的权衡。如果你需要严格的上限,可以在从 sleep 唤醒后立即再次检查截止时间。

我们目前的指导使用 30 秒的轮询间隔:https://openrouter.ai/docs/guides/overview/multimodal/video-generation。视频作业通常从大约 30 秒到几分钟不等,每秒检查一次不会让提供者更快完成。上述间隔和超时上限都是操作性指导,并非端点本身的文档化约定,因此可根据自己的工作负载进行调整。

TypeScript 中相同的轮询流程:

将请求状态失败与视频作业失败区分处理。轮询期间的临时超时并不表示生成本身失败。应重试相同作业 ID 的状态请求,而不是提交新作业。

当状态变为 completed 时,作业响应会包括填充的 unsigned_urls 数组。每个条目都指向作业的认证内容端点:

索引默认值为 0。只有在模型返回多个视频输出时才需更改。尽管字段名为 unsigned_urls,这些 URL 并不是预签名的,因此在轮询时同样在 Authorization 头中发送你的 API 密钥。

下面的助手在存在第一个 unsigned URL 时使用它,在极少数情况下,如果不存在,则从作业 ID 重建内容 URL。

分块流式传输响应可以避免在写入磁盘前将整个 MP4 加载到内存中。

这是 TypeScript 的等效版本。请注意,此版本将下载缓冲到内存中,而不是直接流式写入磁盘,对于短视频片段来说没问题,但如果你经常下载长时间或高分辨率视频,值得改为管道流式写入:

到此为止,您已经在磁盘上生成了 MP4。请将完成的视频移动到您控制的存储中,而不是将生成端点视为永久文件托管。完成的作业也可能包含一个 usage 对象,记录最终成本,无论使用哪种语言,这都是响应体的一部分:

将该值与您的内部作业记录一起存储,以便跟踪每次生成的实际成本。

提交、轮询和下载功能并不限于 Seedance。若要使用其他支持的视频模型,请更改模型标识符:

端点、身份验证、响应格式、状态处理和下载逻辑在三个模型中保持一致。无法自动继承的是每个可选设置。切换模型在代码中只需一行,但不能保证任何给定的时长、分辨率或纵横比组合在新模型上也能验证通过。本指南涵盖的配置恰好可以在所有三个模型间移植:

在撰写本文时,实时模型端点显示 Seedance 2.0、Veo 3.1 和 Wan 2.7 都支持该特定组合:四秒,720p,16:9。这个配置在这三个示例中是共享的,而不是说每个设置在每个模型上都能完全相同。超出这个范围,差异会很快显现:

五秒的请求可以在 Seedance 和 Wan 上验证成功,但在 Veo 上会失败。这就是为什么您的应用应在提交请求前查询 /api/v1/videos/models,而不是假设一个模型接受的设置在另一个模型上也有效。上述数字在依赖之前,值得再次在实时端点上检查,因为模型能力确实会变化。

同一个端点还会暴露 model-specific 功能的 allowed_passthrough_parameters。这些是你允许在请求的 provider.options 对象内发送的键,该对象以提供商的 slug 为键,例如 provider.options["google-vertex"].parameters。只有为你的请求提供服务的提供商的选项会被转发,未识别的键会被丢弃。例如,Veo 目前列出了如 negativePrompt 和 enhancePrompt 这样的控制,而 Wan 则暴露了包括 negative_prompt 和 prompt_extend 在内的选项。

上述代码足以生成并下载一个视频。一旦在生产环境中运行,问题就会发生变化:你需要控制成本,将作业失败与网络失败区分开,避免重复处理,并在提交进程退出后继续跟踪作业。

视频生成价格因模型和配置而异。时长、分辨率、音频生成以及提供商的计费方式都可能影响最终成本。本地生成会完全改变成本结构,没有每个剪辑的费用,但需要预先支付硬件和维护成本。托管的 API 则将成本变量化并绑定到使用量上,根据你的使用量以及是否已有硬件,可能更便宜或更昂贵。

不要在你的应用中构建一个通用的成本公式。在显示估算或提交大量批次之前,查询 /api/v1/videos/models 并读取所选模型的 pricing_skus。当作业完成时,响应可能包含一个 usage 对象,显示该生成的实际成本:

在运行大批量作业之前,使用当前模型数据估算成本,然后将估算值与已完成作业返回的实际 usage.cost 值进行比较。这也有助于你发现因更高分辨率、更长时长、生成音频或使用不同模型而导致的意外变化。

轮询请求失败并不等同于视频生成作业失败。当检查状态时,你的应用可能会丢失连接,而提供商仍在生成视频。如果你立即重新提交提示,两个作业都有可能完成,导致你得到两个视频并为一次用户请求支付两次费用。

一旦提交成功,就要持久化 OpenRouter 作业 ID。一个有用的作业记录可能包含如下字段:

当状态请求因超时、连接错误或临时服务器响应失败时,请使用现有的作业 ID 重试状态请求。只有在作业本身达到失败、已取消或已过期状态时,且您的应用程序的重试策略允许再次尝试时,才创建新的生成。

将作业重试与轮询重试分开。轮询重试会再次检查相同的作业,而生成重试会创建一个新的付费作业。限制生成重试次数,并保留为同一内部请求创建的每个作业 ID,以便在需要调查重复输出、提供方故障或意外费用时拥有完整记录。

轮询:https://openrouter.ai/docs/guides/overview/multimodal/video-generation#poll-response 是脚本、原型和少量作业的良好默认选项。当您的应用程序可能同时运行数百个生成时,它的效率会下降。

要自动接收结果,请在提交作业时包含 HTTPS callback_url:https://openrouter.ai/docs/guides/overview/multimodal/video-generation#webhooks

您可以为单个请求设置回调,也可以为工作区配置默认回调。请求级别的值优先于工作区默认值。

当作业达到终态时,我们会发送 webhook。每次传递都包含 X-OpenRouter-Idempotency-Key,如下所示:

在处理事件之前存储该值。如果 webhook 再次传递,您的处理程序可以识别该作业已被处理,而不是重复下载视频或启动下一工作流程。

情报判断

Aioga 编辑摘要

OpenRouter 发布统一的异步视频生成 API,应用可提交生成任务、获取任务 ID、轮询状态并下载 MP4。指南以 Seedance 为示例,并说明同一套接入流程可用于 Veo 与 Wan,切换模型主要通过更改 model 标识符完成。

背景分析

视频生成通常需要数秒至数分钟,长时间保持原始 HTTP 请求可能受到浏览器关闭、无服务器函数执行限制或代理超时影响。OpenRouter 将任务提交与生成完成分离,并以持久化任务 ID 支持应用在重启后恢复任务。

Aioga 观点

Aioga 判断,这套设计的核心价值在于统一不同模型的任务状态、轮询逻辑和输出处理,可能减少多供应商接入时的重复开发。不过,材料未说明具体性能、费用、可用性或模型间输出质量差异,不能据此判断其综合优势。

影响与后续

值得关注的是,异步任务机制更适合需要排队、重试和后台处理的视频应用;统一接口也可能降低尝试不同模型的接入门槛。但实际工程收益仍取决于任务状态处理、失败恢复以及各模型请求参数的适配程度。 建议开发者先依据指南完成一次从任务提交、状态轮询到 MP4 下载的完整验证,再分别测试 Seedance、Veo 和 Wan 的请求参数与结果处理。上线前应重点核对长任务超时、应用重启后的任务恢复及异常状态处理。

来源与版权说明

本页正文由公开来源页面提取并按原有信息整理,同时保留来源、发布时间和原文入口。版权归原作者及来源网站所有,请通过原文链接核验和阅读来源版本。

抓取通道: RSS · 原始域名: openrouter.ai

来源: OpenRouter:Announcements(RSS)

原文链接: 打开原始来源

Aioga 归档: 查看情报页

Content record: source-page · Updated: 2026-08-25T00:00:00.000Z

API 中转站
API RELAY · DEVELOPER INFRASTRUCTURE

API 中转站

统一接入主流 AI 模型 API,为开发、测试与生产环境提供稳定调用入口。

立即访问 api.w173.com
AIOGA SHARE POSTER

分享这篇 AI 情报

OpenRouter 推出统一的异步视频生成 API,通过 POST /api/v1/videos 提交任务、轮询状态并下载 MP4,支持 Seedance、Veo、Wan 等...

OpenRouter:Announcements(RSS)2026-08-25T00:00:00.000Z
扫码打开文章详情扫码直达文章详情

Aioga 自动聚合全球 AI 动态,并保留来源信息用于核验与引用。