你想把 AI 接进自己的小工具,第一步其实很小:发出一个请求,拿到一段回复。
这篇先走通 OpenRouter 的直接调用。等接口能用了,再考虑客户端和自建中转。先把一个请求弄明白,后面排错会容易很多。
开始前准备什么
- 一个 OpenRouter 账户和你自己的 API Key
- Node.js 22 或更新版本
- 模型列表里当前可调用的完整模型 ID
- 一个本地文件夹,用来保存示例
本文依据官方接口文档整理,未使用读者账户执行计费调用。实际可用模型、费用和额度以你的账户与模型页面为准。
免费模型怎样选
打开 OpenRouter 模型列表↗,查看当前价格和可用性。选中模型后,复制完整 ID;不要只复制展示名称。
标为免费不代表无限调用。请求频率、每日额度和上游容量都可能限制使用。需要长期稳定运行的应用,应单独核算预算,不把免费层当作服务保证。核对 额度与限流说明↗。
写一个最小请求
创建 .env,填入自己的值。把它加入 .gitignore,不要上传到 GitHub:
OPENROUTER_API_KEY=你的密钥OPENROUTER_MODEL=从模型页复制的完整模型ID再创建 call-api.mjs:
const key = process.env.OPENROUTER_API_KEY;const model = process.env.OPENROUTER_MODEL;
if (!key || !model) { throw new Error("请填写 .env 中的密钥和模型 ID");}
const response = await fetch( "https://openrouter.ai/api/v1/chat/completions", { method: "POST", headers: { Authorization: `Bearer ${key}`, "Content-Type": "application/json", }, body: JSON.stringify({ model, messages: [ { role: "user", content: "用一句话解释什么是 API。" }, ], }), signal: AbortSignal.timeout(60000), },);
if (!response.ok) { console.error("调用失败,HTTP 状态码:", response.status); process.exit(1);}
const data = await response.json();console.log(data.choices?.[0]?.message?.content ?? "未返回文本");在终端运行:
node --env-file=.env call-api.mjs怎样判断跑通了
终端出现模型回复,且没有认证或额度错误,就完成了第一步。再到服务提供方的调用记录里核对模型、时间和费用。
不要仅凭“HTTP 200”判断完整成功:还要看是否拿到了所需文本。有些模型返回的内容形态不同,需要按对应文档处理。
卡住时先看哪里
| 现象 | 先检查 |
|---|---|
| 401 | 密钥是否正确、是否已撤销 |
| 402 | 账户余额与模型价格 |
| 429 | 请求频率、账户额度与上游容量 |
| 模型不存在 | ID 是否完整、模型是否仍开放 |
| 请求超时 | 网络、上游状态和超时时间 |
重试时先减少并发。限流后应等待再试,不要用高频循环反复请求。
接下来做什么
把这次成功调用的模型 ID、日期和错误处理记下来,再将接口接到自己的应用。前端页面不应暴露服务端密钥。
想开始创作,可以继续读 ComfyUI 第一张图;想部署自己的内容站,接着看 Cloudflare Pages 博客入门。
Thanks for reading!
