关于 video-generation-gateways
用于选择和运营 fal.ai、Replicate、WaveSpeed 等托管视频生成网关的技能。重点涵盖接入决策、异步任务、架构发现、版本管理、费用控制、故障切换及输出授权。
主要功能
- 01网关选择与请求路由
- 02异步任务和 Webhook 处理
- 03模型参数架构发现
- 04版本固定与弃用管理
- 05费用上限与故障切换
- 06输出授权考量
适用场景
- 01在多个视频模型间路由请求
- 02构建基于 Webhook 的生成流程
- 03提交前验证模型输入
- 04规划网关故障切换与费用控制
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ calesthio/ generative-media-skills --skill video-generation-gateways安装后在 Claude Code 中输入/video-generation-gateways确认已加载。
附带文件EVAL.md
详细介绍
视频生成网关
视频生成网关是一种托管式推理聚合服务,通过单一账户、单一 API 规范和单一账单转售许多第三方视频模型(Veo、Kling、Seedance、Hailuo/MiniMax、Luma、Wan、LTX-Video、Pika 等)。你向网关拥有的端点发送提示词和参数;网关在自己的基础设施上运行底层模型,并返回托管结果 URL。本技能涵盖 fal.ai、Replicate 和 WaveSpeed 这几个代表性网关,以及这类服务共通的生产决策。
本技能关注的是路由与运行,而非艺术指导。针对特定模型的提示词设计、镜头设计和动作指导,属于模型或创作类技能。这里要讨论的问题是:选择哪个网关、是否要通过网关、异步任务契约如何运作、如何发现模型的 Schema、如何固定版本、如何限制支出、如何故障切换,以及输出内容受谁的许可协议约束。
何时适合使用网关(何时不适合)
在以下情况下使用网关(生产实践经验):
- 你需要通过一次集成使用多种视频模型,例如,用 Veo 制作高品质镜头、用 Kling/Seedance 档位满足大批量需求,并在同一工作流中使用音频或升频模型,而无需为每个供应商分别签约、维护独立的密钥、计费关系和 SDK。
- 你希望使用统一的异步任务契约(提交 → 轮询/ webhook → 获取),而非逐一了解各供应商各自的长任务协议。
- 你正在挑选模型或进行 A/B 测试,希望能更换模型 ID,而无需重新配置身份验证、存储和结果处理。
- 你希望网关通过 CDN 托管输入上传内容和输出媒体,从而无需自行搭建相关服务。
- 你的用量尚不足以支撑直接签订企业合同,或者该模型没有第一方公开 API,只能通过转售商访问。
在以下情况下直接使用供应商,或重新考虑是否使用网关:
- 你需要网关未开放的第一方功能,例如转售商尚未提供的参数、分辨率、区域、私有模型托管或 SLA。网关只开放每个模型部分经过筛选的功能。
- 你需要合同约定的数据处理条款、HIPAA/区域数据驻留或已签署的 DPA,而网关无法转接底层供应商提供的相应条款。
- 你的用量非常大且稳定,直接签订承诺用量合同比按次付费的转售商加价更划算。
- 你需要遵循供应商自身的内容审核策略,而非网关额外增加的审核层(见下文“内容安全”)。
- 延迟主要受制于你无法调整的网关排队/冷启动开销,而直接 API 可提供预置吞吐量。
本技能不涵盖:模型供应商的直接 API(Google Vertex/Gemini Veo、Kling 自有 API、Runway 等)、本地/自托管推理、训练或微调,以及仅使用图像网关的场景。
三个参考网关一览
以下时效性信息已于 2026-07-10 核实;发布前请重新核实模型 ID、价格和 限制——目录和价目表经常变动。
| 维度 | fal.ai | Replicate | WaveSpeed |
|---|---|---|---|
| 定位 | 以生成媒体为先(图像/视频/音频/3D),注重延迟 | 通用模型市场(社区模型 + 精选的“官方”模型),目录最广 | 针对媒体优化速度/延迟的推理服务 |
| 目录规模(自报) | 1,000+ 个模型 | 100+ 个官方模型,加上大型社区目录 | 700–1,000+ 个模型 |
| 提交端点 | https://queue.fal.run/{model-id} | https://api.replicate.com/v1/predictions(社区模型)或 .../v1/models/{owner}/{name}/predictions(官方模型) | https://api.wavespeed.ai/api/v3/{model-id} |
| 异步任务状态 | IN_QUEUE → IN_PROGRESS → COMPLETED | starting → processing → succeeded/failed/canceled | created → processing → completed/failed |
| 同步选项 | 队列是主要方式;短时模型也提供运行端点 | 使用 Prefer: wait 标头(默认 60s)实现同步调用 | 轮询或 Webhook;结果端点 |
| 计费依据 | 按输出计费(视频按秒或按条计费);也可按 GPU 使用秒数计费 | 官方模型按输出计费;社区模型按 GPU 使用秒数计费 | 按模型逐次运行计费,并随分辨率/时长/数量变化 |
| 余额模式 | 预付费额度 | 预付费额度(新账户余额硬上限为 $0) | 预付费额度(永不过期) |
| 失败时收费? | 不收费——仅对成功输出收费 | 社区模型即使模型出错,也会按 GPU 使用时间收费;官方模型按输出收费 | 按使用量收费;请查看各模型的具体规则 |
| Schema 发现方式 | 使用 expand=openapi-3.0 的模型端点 API | 模型版本对象上的 openapi_schema | 各模型的 Playground/API 示例 |
来源:fal 队列和定价文档;Replicate HTTP API 和定价文档; WaveSpeed 预测和定价文档(见 Sources)。
表格解读: 三者在可调用的内容上高度重叠——Veo、Kling、Seedance 等热门模型都出现在三者中——因此差异主要体现在运行约定上:计费粒度、失败是否收费、Schema 的发现方式,以及版本如何固定。目录是必要条件,但并非充分条件;集成的成败取决于运行约定。
异步任务约定(所有网关的核心)
视频生成耗时较长(从数秒到数分钟),因此所有网关本质上都是异步任务队列。不要依赖会一直阻塞到视频完成的同步请求——你会遇到超时并丢失任务。通用流程如下:
- 提交任务 → 立即收到任务/请求 ID。
- 通过 Webhook(首选)或轮询(备用)等待完成。
- 获取结果(托管媒体 URL),并在过期前下载/持久化。
fal.ai 队列
- 提交: 使用标头
Authorization: Key $FAL_KEY向POST https://queue.fal.run/{model-id}发送请求。返回request_id、response_url、status_url、cancel_url、queue_position。 - 状态:
GET https://queue.fal.run/{model-id}/requests/{request_id}/status(附加?logs=1可查看运行器日志)。状态:IN_QUEUE、IN_PROGRESS、COMPLETED。 - 结果:
GET https://queue.fal.run/{model-id}/requests/{request_id}。 - 取消:
PUT .../requests/{request_id}/cancel——立即移除排队中的任务;对于正在处理的任务,则尽力发送取消信号。 - 文档中的保证:“队列中的请求绝不会被丢弃。”
- 已于 2026-07-10 根据 fal 队列文档核实。
Replicate 预测
- 提交(社区版):
POST https://api.replicate.com/v1/predictions并包含version字段。提交(官方版):POST https://api.replicate.com/v1/models/{owner}/{name}/predictions(无需版本)。 - 同步快捷方式: 添加
Prefer: wait(或Prefer: wait=5),让 HTTP 连接最多保持 60s,并为速度快的模型直接返回输出——不适用于耗时数分钟的视频任务。 - 截止时间:
Cancel-After请求头(5s–24h)会自动取消预测任务本身(不同于Prefer: wait,后者只限制 HTTP 等待时间)。 - 状态/结果: 轮询
urls.get中的 URL,直到状态变为succeeded或failed; 完成前output为 null。可在urls.web中查看网页调试页面。 - 根据 Replicate HTTP/创建预测文档于 2026-07-10 核实。
WaveSpeed 预测
- 提交:
POST https://api.wavespeed.ai/api/v3/{model-id}→ 返回任务/预测 ID。 - 结果:
GET https://api.wavespeed.ai/api/v3/predictions/{id}/result。 状态包括:created、processing、completed、failed。outputs保存 结果 URL;timings.inference给出耗时(毫秒)。 - 数据保留:预测结果可用 7 天(于 2026-07-10 核实); 请及时持久化输出。
- 根据 WaveSpeed 获取结果文档于 2026-07-10 核实。
Webhook 与轮询(生产环境经验法则)
视频任务优先使用 Webhook:持续数分钟的轮询循环会浪费请求并增加触发速率限制的风险,而且保持连接打开并不可靠。只有在无法提供公开 HTTPS 端点时(本地开发、受限网络),才退而使用轮询。如果使用轮询,请增加间隔——图像任务约 2s,视频任务约 5s,然后逐步延长间隔(这是 WaveSpeed 文档中的建议,也是适用于所有场景的稳妥默认值)。切勿每秒多次轮询同一个任务。
每个 Webhook 处理程序都应设计为幂等:网关会重试投递,且同一任务 ID 的通知可能会重复送达。
Webhook 安全性与可靠性
Webhook 负载来自公共互联网——请验证其有效性。
fal.ai 使用 ED25519 对 Webhook 签名。验证步骤(于 2026-07-10 核实):
- 读取请求头
X-Fal-Webhook-Request-Id、X-Fal-Webhook-User-Id、X-Fal-Webhook-Timestamp、X-Fal-Webhook-Signature(十六进制)。 - 从
https://rest.fal.ai/.well-known/jwks.json获取 JWKS,并缓存 最多 24h。 - 如果时间戳与当前时间相差超过 ±300s(5 分钟),则拒绝请求。
- 重建签名消息(请求 ID + 用户 ID + 时间戳 + 原始正文的 SHA-256 哈希值,以换行符连接),并使用 JWKS 中的 ED25519 公钥验证签名。
- 也可使用
https://api.fal.ai/v1/meta中的webhook_ip_ranges设置 IP 允许列表。
fal 投递/重试机制(于 2026-07-10 核实):首次投递超时时间为 15s;
失败时会在 2 小时内重试 10 次。成功负载包含
status: "OK"、结果和 seed;请求错误包含
status: "ERROR";序列化失败时,payload 会设为 null,并附带
payload_error。重试期间 request_id 保持不变;gateway_request_id
反映最近一次尝试。
Replicate 允许通过 webhook_events_filter 筛选触发的事件
(例如 ["completed"]);start 和 completed 始终会发送。Replicate
支持使用签名密钥验证 Webhook 签名——在信任负载前请先验证。(上线前请在 Replicate 的 Webhook 文档中确认当前机制;已于 2026-07-10 从概念层面核实。)
WaveSpeed 会发送包含 id、model、input、outputs(状态为
completed 时)、urls.get、status 和 error(失败时)的 POST 请求。在依赖相关机制前,请先在 WaveSpeed 的 Webhook 文档中确认当前签名详情。
按模型发现 Schema
每个模型提供的输入各不相同(分辨率枚举值、时长上限、图像/视频参考槽位、音频开关、种子、负面提示词)。切勿硬编码假设——发现 Schema,这样集成才能验证输入,并在模型更新时进行适配。
- **fal.ai:**模型端点 API 接受
expand=openapi-3.0,并在openapi字段中返回端点的完整 OpenAPI 3.0 Schema。按endpoint_id查询(例如fal-ai/veo3),即可获取每个输入参数的 JSON Schema。使用列表/搜索模式枚举目录。(已于 2026-07-10 验证。) - **Replicate:**获取
/v1/models/{owner}/{name}/versions/{version_id}处的模型版本对象,并读取openapi_schema.components.schemas中的Input和OutputSchema。(已于 2026-07-10 验证。) - **WaveSpeed:**每个模型的页面/操作台都会展示参数集,并自动生成 Python/JS/cURL 示例;截至 2026-07-10,没有单一且有文档说明的跨目录 OpenAPI 导出——应以各模型的文档为准。
**经验法则:**按 (model-id, version) 缓存发现的 Schema,并在版本变更或首次出现 422/验证错误时重新获取。在网关前增加一个小型 Schema 验证层,可在你为失败的任务付费之前捕获参数结构变更。
版本固定与弃用
版本之所以重要,是因为它关系到可复现性:对于悄然更新的模型,相同提示词可能产生不同的运动效果、构图或质量。
- Replicate 提供最明确的模型:社区模型通过
{owner}/{model}:{64-char-version-hash}指定。固定哈希可保证行为长期一致;省略哈希(或使用不带哈希、以{owner}/{model}指定的官方模型)则意味着 Replicate 会让你使用最新维护版本。**权衡:**固定哈希可确保可复现性并避免行为意外变化;若希望自动升级并减少维护工作,则使用不固定版本的官方模型格式。Replicate 将固定版本列为可复现性的最佳实践。(已于 2026-07-10 验证。) - fal.ai 和 WaveSpeed 通过稳定的字符串 ID 指定模型(例如
fal-ai/veo3,或fal-ai/kling-video/v2/...这类带版本的 ID)。版本粒度编码在供应商发布的 ID 中;请留意更新日志,关注新 ID 和旧 ID 的弃用情况。
弃用是网关中真实存在的运维风险,并非假设。 底层模型会退役或被替代(例如推出新版 Kling/Veo/Seedance,旧端点则停止服务)。缓解措施(经验法则):
- 跟踪各网关的更新日志,并在可用时固定到明确标注版本的 ID。
- 维护一份由配置驱动的模型映射(使用环境变量/配置,而非内联字符串),这样弃用 ID 时只需改一行,而不必在代码中搜索。
- 在 CI 中添加目录/健康探测,解析你依赖的每个模型 ID,并在某个 ID 无法解析或其 Schema 发生变化时发出提醒。
- 为每个能力等级维护一个具名备用模型,这样端点停止服务时可降级到替代模型,而非导致流水线失败。
支出控制
视频是单次调用成本最高的生成模态,重试或循环异常都可能导致网关支出迅速失控。各平台的控制方式差异很大:
- fal.ai:主要通过预付额度设定上限——支出不会超过余额。你只需为成功生成的结果付费;服务器错误(HTTP 500+)和排队时间均不收费。截至 2026-07-10,fal 的官方文档未提及按项目设置预算提醒——请通过账单/平台 API 自行构建支出核算。
- Replicate:****月度支出限额已弃用(2025 年 7 月 1 日);现在由预付额度作为硬性上限——余额为 $0 时任务会停止(自 2025 年 7 月 16 日起,新账户使用预付额度)。弃用后不再提供原生预算提醒;低余额提醒需自行处理或使用第三方工具。请注意失败计费上的差异:社区模型即使运行出错,也会按 GPU 秒数收费,因此反复崩溃的社区模型仍会产生费用;官方模型按输出计费。(已于 2026-07-10 核实。)
- **WaveSpeed:**预付额度永不过期;按模型用量计费,费用随分辨率、时长和输出数量变化。运行前会显示费用估算,也可以通过定价 API 查询。经批准的账户/企业账户可使用月度额度。(已于 2026-07-10 核实。)
生产环境的成本安全经验:
- 保持较小的可用余额,并有计划地充值——在这三个平台上,预付余额都是实际的断路器。
- 提交前先估算费用:视频成本随**时长 × 分辨率 × 输出数量(部分模型还要乘以音频因素)**变化。带音频的 8s 1080p Veo 视频片段,价格远高于 5s 720p Kling 视频片段——请了解单位价格。示例(fal,已于 2026-07-10 核实):Veo 3.1 在 720p/1080p 下,不带音频约为 $0.20/s,带音频约为 $0.40/s;Kling 2.5 Turbo Pro 约为 $0.07/s。价格会变化,请重新核实。
- 在自己的代码中限制并发和重试次数;在任何预付费网关上,对失败模型进行无限重试都是典型的支出失控诱因。
- 实验时优先选择失败不收费的网关/模型;如果任务延迟难以预测,优先选择按输出而非按 GPU 秒数计费的模型。
- 记录每项任务的费用(任务 ID → 模型 → 参数 → 费用),以便追踪归因和触发提醒;不要依赖网关主动警告你。
重试与跨网关故障转移
重试。 预期会出现暂时性故障(429 速率限制、5xx、容量不足或冷启动超时)。重试时使用指数退避和抖动、由你控制的幂等键,以及上限(包括尝试次数和总支出)。由于已提交但处理缓慢的任务并不等同于失败任务,应区分“提交失败”(可以安全重试)和“任务运行缓慢”(轮询/等待,不要重新提交——重新提交会导致重复扣费)。如果存在 Retry-After,请遵守该值。
跨网关故障转移。 由于多个网关提供相同的热门模型,网关是一条可替换的路由,这是采用聚合器模式最有力的运维理由。要实现故障转移:
- 在能力接口(
generateVideo(prompt, tier, constraints))后进行抽象,而不是调用特定网关的接口,这样路由器就能选择提供商和模型。 - 为每个能力层级维护覆盖 ≥2 个网关的模型映射(例如“高端电影级” → fal 或 Replicate 上的 Veo;“批量” → WaveSpeed 上的 Seedance 或 fal 上的 Kling)。
- 在接口边界进行规范化:每个网关都有各自的身份验证方式、提交格式、状态词汇、参数名称和结果 JSON。只有将输入/输出转换为规范形式,故障转移才能奏效。
- 留意输出差异: 同一模型在两个网关上的参数、默认分辨率、审核方式,甚至细微的处理流程都可能不同。故障转移保障的是可用性,不一定是输出完全相同——应将故障转移结果视为近似替代,而非逐位相同的结果;对质量要求关键的镜头要重新验证。
- 确保每个网关都有单独的预付余额和密钥,以免备用网关因余额为零而无法接管。
各网关的内容安全行为有所不同
两层审核会叠加:底层模型自身的安全行为,以及网关额外实施的审核。不同网关的审核并不相同,因此,同一模型上的同一提示词可能在一个网关上通过,却在另一个网关上被拦截。
- fal.ai 集成了用于实时过滤的 OpenAI Omni 审核 API,制定了 NSFW 内容政策,并与 NCMEC/Thorn(CSAM)和 StopNCII(NCII)合作。部分图像模型提供
enable_safety_checker开关(默认开启);视频模型的审核策略取决于具体模型。用户仍须遵守 fal 的《可接受使用政策》。 (已于 2026-07-10 核实。) - Replicate 执行其条款以及底层模型的限制;审核严格程度主要取决于具体模型。
- WaveSpeed 在各模型自身的条款之上,另行执行其可接受使用条款。
经验法则:(1)按网关测试审核行为,而不是只测试一次——主用网关放行的提示词可能会被故障转移路由拒绝,从而破坏可用性预期。(2)将审核拒绝与暂时性错误区别处理——审核拒绝是确定性的,因此对同一提示词进行重试或故障转移往往只会失败或重复扣费;应改为向用户说明情况、调整提示词,或路由到采用不同政策的模型。(3)不要假定网关会像直连 API 一样移除或添加水印、C2PA/来源信号或安全过滤器——请进行验证。
数据治理与商业权利传递
**两个独立的问题:**你的数据存储在哪里,以及谁可以将输出用于商业用途。
数据保留/驻留:
- **fal.ai:**输入上传内容和输出媒体会存储在 fal 的 CDN
(
v3.fal.media/...)中。可通过X-Fal-Object-Lifecycle-Preference标头控制保留时间(expiration_duration_seconds,或 使用null表示永不过期)。请求/响应 JSON 默认存储 30 天。 请在输出过期前下载——过期文件无法恢复。 (已于 2026-07-10 验证。) - **Replicate:**对于通过 API 创建的预测,输入参数、输出和日志默认会在 约 1 小时后自动删除——你必须自行保存输出。 (已于 2026-07-10 验证。)
- **WaveSpeed:**预测保留 7 天。(已于 2026-07-10 验证。)
由于输出是临时的,请务必下载并自行托管所有需要的内容;切勿将网关 CDN URL 直接提供给终端用户,用作持久内容链接。 对于受监管的数据,请确认网关是否能提供 DPA 或区域化处理服务——大多数转售流程都会将你的输入发送到第三方模型基础设施。
**商业权利传递(关键的治理要点):**网关授予你对其服务输出的权利,并不意味着可以凌驾于底层模型的许可证之上。权利取决于模型,而不是网关。
- Replicate 的条款授予你对输出的“全部权利、所有权和权益”,包括商业使用权——**但明确规定这受你所用模型所确定的第三方条款约束。**某些模型(例如 Stable Diffusion 这类宽松许可的模型)不主张所有权;其他模型则会限制商业使用。 (已于 2026-07-10 验证。)
- 同样的逻辑也适用于 fal 和 WaveSpeed:模型卡/底层供应商许可证决定你是否可以将视频片段用于商业用途、是否需要署名,以及供应商是否主张对你的输入享有训练或使用权。
经验法则:将网关生成的视频用于商业用途前,请先确认底层模型的许可证和模型提供方的条款,而不只是网关的服务条款。高级模型(Veo、Kling)通常附带提供方特定的商业条款和单个视频片段的使用限制;网关转售这些模型并不会放宽相关条款。请记录你所部署的每个模型用于商业用途的许可依据,以便日后发生争议或更换模型时进行审计。
故障排查
| 症状 | 可能原因 | 处理方法 |
|---|---|---|
| 提交很快返回,但没有视频 | 这是预期行为——该流程是异步的;你拿到的是作业 ID,而不是结果 | 轮询 status/result,或等待 webhook;不要把提交响应当作输出 |
| webhook 始终未到达 | 端点不是公开的 HTTPS 地址、处理程序运行缓慢(在 fal 上超过 15 秒),或签名检查拒绝了有效负载 | 确认端点可访问,快速响应后再异步处理,并检查签名逻辑;必要时改用轮询 |
| 重复处理结果 | 网关重试了交付 | 让处理程序基于作业 ID/请求 ID 实现幂等 |
422/验证错误 | 此模型/版本的参数格式错误 | 重新获取模型架构(fal 的 openapi-3.0、Replicate 的 openapi_schema);提交前验证输入 |
| 已扣费,但没有可用输出 | 社区模型在出错时仍按 GPU 使用时间计费(Replicate),或输出在下载前已过期 | 对不稳定的作业优先选择按输出付费的模型;立即下载输出;检查保留期限 |
| 模型 ID 不再解析 | 版本已弃用/停止服务 | 将由配置驱动的模型映射更新为新的带版本 ID,或切换到该层级的备用方案 |
| 提示词在一个网关上被拦截,在另一个网关上却可以通过 | 各网关叠加的审核层不同 | 将此视为确定性行为;调整提示词,或路由到策略不同的模型——不要盲目重试 |
| 费用失控 | 重试次数不受限制,或预付余额上的循环异常 | 限制重试次数/并发数,保持较小的余额,并记录每个作业的费用 |
| 一次“无操作”更改后输出看起来不同 | 未固定的版本已在后台更新 | 固定明确的版本哈希/ID;在 CI 中添加架构/行为探测 |
| 结果 URL 后来返回 404 | 网关 CDN 的保留期限已过 | 将需要长期保留的内容重新托管;绝不要向最终用户提供原始网关 URL |
完整示例(仅供说明——使用前请核实 ID/价格)
示例 A — 为一批简短社交短视频选择路由
目标: 每天生成 500 个五秒的 720p 竖屏短视频,注重成本, 部分提示词接近内容政策边界,且不得超过固定的每日预算。
分析: 处理量和成本敏感性意味着应选择按秒/按次计费的模型, 并使用满足以下条件的网关:(a) 失败时不收费,(b) 支持严格的预付额度上限。 选择中端模型(例如 Kling/Seedance 的 turbo 层级),而不是 Veo。 在相同能力层级后配置一个备用网关用于故障切换,因为在每天 500 个作业的情况下, 无法保证单个网关上的单个模型始终可用。
方案: 主路由 = fal queue.fal.run 提交 + 经 ED25519 验证的 webhook,
预付余额按每日预算设置,作为断路器;备用路由 =
WaveSpeed 上相同层级的模型,并为其单独充值。路由器根据
健康状态和队列深度进行选择。记录每个作业的费用(作业 ID → 模型 → 参数 → 费用)。
审核拒绝结果会转交至审核队列,不会重试。
预期结果: 短视频通过异步方式交付,预算受预付余额限制, 某条路由停止服务或发生故障时,会切换到另一条路由。故障模式: 忘记为备用余额充值(故障切换会静默失败);盲目重试审核拒绝结果(浪费费用); 提供原始 CDN URL,导致其后来返回 404。
示例 B — 在 Replicate 上固定一个可复现的电影级模型
**意图:**营销工作流中的主视觉镜头必须数月如一地渲染;并且必须支持商业用途。
计划:
- 确认确切版本:调用
GET /v1/models/{owner}/{name}/versions并选择哈希;在配置中存储{owner}/{name}:{version_hash}。 - 调用
POST /v1/predictions提交请求,并指定固定的version、webhook和webhook_events_filter: ["completed"];设置Cancel-After截止时间以控制支出。 - 提交前,根据
openapi_schema.components.schemas.Input发现并验证输入。 - 完成后,在约 1 小时的保留时限内下载并重新托管视频。
- **版权检查:**确认底层模型的第三方条款允许商业用途,并在发布前记录许可依据。
**这样设计的原因:**固定哈希可锁定可复现性;架构检查可防止参数变化悄然改变输出;考虑保留时限并及时下载可避免结果丢失;版权检查可避免发布许可证禁止商业用途的片段。**失败模式:**使用未固定版本的官方模型形式(自动升级会破坏可复现性);误以为 Replicate 的所有权授予会凌驾于模型的限制性许可证之上。
示例 C — 在集成模型前发现其架构(fal)
**意图:**集成一个你尚未使用过的视频模型;你不知道它的时长上限、分辨率枚举值,也不知道它是否接受图像参考。
**计划:**调用 fal 模型端点 API,将 endpoint_id 设为该模型(例如 fal-ai/veo3),并设置 expand=openapi-3.0;读取返回的 openapi 字段中的输入对象 JSON Schema。根据该架构生成请求类型和验证层;以模型 ID 为键缓存架构;首次收到 422 或变更日志公告版本更新时重新获取。
**原因:**这样可以让集成具备自描述能力,并能适应模型新增或重命名参数,而不是硬编码猜测的请求体,导致下一次模型更新时集成出错。**失败模式:**跳过发现步骤,硬编码从博客文章复制的参数,而文章中的信息已落后于当前架构。
来源
所有 URL 均于 2026-07-10 核实。
- fal.ai 队列 API — https://fal.ai/docs/model-apis/model-endpoints/queue
- fal.ai Webhook(ED25519、重试、JWKS)— https://fal.ai/docs/model-apis/model-endpoints/webhooks
- fal.ai 定价 / 预付额度 / 按成功计费 — https://fal.ai/docs/documentation/model-apis/pricing and https://fal.ai/pricing
- fal.ai 模型搜索 / OpenAPI Schema 发现 — https://fal.ai/docs/platform-apis/v1/models and https://docs.fal.ai/model-apis/model-endpoints
- fal.ai 数据保留 / 媒体过期标头 — https://fal.ai/docs/documentation/model-apis/media-expiration
- fal.ai 信任与安全(OpenAI Omni 内容审核、NCMEC/Thorn/StopNCII)— https://fal.ai/legal/trust-and-safety
- fal.ai 可接受使用政策 — https://fal.ai/legal/acceptable-use-policy
- Replicate 创建预测(同步/异步、Prefer、Cancel-After、webhook_events_filter)— https://replicate.com/docs/topics/predictions/create-a-prediction
- Replicate HTTP API 参考(版本格式、openapi_schema、速率限制、约 1 小时保留期)— https://replicate.com/docs/reference/http
- Replicate 模型版本(固定版本、可复现性)— https://replicate.com/docs/topics/models/versions
- Replicate 官方模型 — https://replicate.com/docs/topics/models/official-models
- Replicate 定价(按秒计费的 GPU 硬件、官方模型按输出计费)— https://replicate.com/pricing
- Replicate 账单(支出限额弃用、预付额度)— https://replicate.com/docs/topics/billing
- Replicate 速率限制 — https://replicate.com/docs/topics/predictions/rate-limits
- Replicate 服务条款(输出所有权、第三方条款)— https://replicate.com/terms
- WaveSpeed 预测 / 获取结果(端点、状态、7 天保留期)— https://wavespeed.ai/docs/get-result and https://wavespeed.ai/docs/what-are-predictions
- WaveSpeed 定价(按模型计费、额度)— https://wavespeed.ai/docs/how-pricing-works and https://wavespeed.ai/pricing
- WaveSpeed Webhook — https://wavespeed.ai/docs/docs-api/webhooks(上线前确认当前的签名和重试详情)
模型特定价格(Veo 3.1 约 $0.20–0.60/秒,具体取决于分辨率和音频;Kling 2.5 Turbo Pro 约 $0.07/秒)来自 fal 的定价页面,于 2026-07-10 核实,且可能变动——请务必对照实时费率表再次核实。