Node.js 对接 FrameFlow 模型 API
最后更新:2026-10-24
本文介绍如何用 Node.js(18 及以上,自带 fetch)对接 FrameFlow 模型API中转站:生图生视频提交任务后轮询结果,对话用 openai npm 包,base_url 换成 https://yimiagent.cn/v1。
1. 准备 API Key
登录 FrameFlow →「API 接入」→ 创建 API Key(以 ffk_ 开头,只显示一次,请立即保存),建议放进环境变量 FRAMEFLOW_API_KEY。 API Key 只能放在服务器端,不要写进网页或 App 前端代码。
npm install openai
export FRAMEFLOW_API_KEY=ffk_xxxxxxxx2. 文生图:提交任务并轮询
const BASE = "https://yimiagent.cn/v1";
const H = { Authorization: `Bearer ${process.env.FRAMEFLOW_API_KEY}`, "Content-Type": "application/json" };
let task = await fetch(`${BASE}/images/generations`, {
method: "POST", headers: { ...H, "Idempotency-Key": crypto.randomUUID() },
body: JSON.stringify({ model: "Nano-Banana-2", prompt: "极简风格的咖啡店海报", aspect_ratio: "3:4" }),
}).then((r) => r.json());
while (["queued", "running"].includes(task.status)) {
await new Promise((r) => setTimeout(r, 5000));
task = await fetch(`${BASE}/tasks/${task.id}`, { headers: H }).then((r) => r.json());
}
console.log(task.status, task.outputs?.map((o) => o.url));3. 图生视频
const video = await fetch(`${BASE}/videos/generations`, {
method: "POST", headers: H,
body: JSON.stringify({ model: "seedance-2.0", prompt: "产品缓慢旋转,柔和棚拍灯光", first_frame_url: "https://example.com/cup.jpg", duration: 5, resolution: "720p" }),
}).then((r) => r.json());
// 轮询方式同上,视频一般 1–5 分钟4. 对话:openai npm 包
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://yimiagent.cn/v1", apiKey: process.env.FRAMEFLOW_API_KEY });
const r = await client.chat.completions.create({ model: "qwen3-vl-plus", messages: [{ role: "user", content: "写一句保温杯广告语" }] });
console.log(r.choices[0].message.content);模型 ID 见 模型API中转站。
5. 限流与错误
每个 Key 默认每分钟 60 次请求、同时 5 个任务;超出返回 HTTP 429,按响应头 Retry-After 等待后重试。错误统一为 {"error":{"code","message"}},完整错误码见 API 文档。