OpenRouter API 文档
使用标准的 OpenAI 兼容接口将您的应用连接到我们的无审查 LLM。本指南涵盖认证、请求格式和流式传输,以实现快速集成。
快速入门:使用 Python 连接
首先安装官方 SDK 并将其指向我们的基础 URL。
我们的 API 行为类似于标准的 OpenAI 接口,但路由到单个 uncensored 模型。这种方法消除了代理复杂性,同时保持代码的可移植性。
- 通过 pip 安装库。
- 在环境变量中设置您的 API 密钥。
- 定义我们端点的基础 URL。
from openai import OpenAI
client = OpenAI(base_url="https://api.apiopenrouter.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)将占位符密钥替换为您自己的凭据。您可以发送简单提示或复杂的结构化数据。
认证与密钥
在仪表板生成密钥,并将其作为 Authorization 请求头传递。
每个账户同时支持一个活跃密钥。当您创建新密钥时,旧密钥立即停止工作。这简化了安全管理,无需复杂的轮换逻辑。
curl https://api.apiopenrouter.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "List the top 5 dependencies for a Go web server"}]
}'上述请求使用 Bearer 方案。请确保你的密钥以 sk- 且不含多余空白。
聊天完成端点
发送至 /v1/chat/completions 使用标准 JSON 的端点。
模型接受 user 和 assistant 角色。您可以配置 temperature、top-p 和 stop sequences 来控制输出风格。如果启用流式传输,响应将在最后一个 chunk 中返回 token 使用情况。
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.apiopenrouter.com/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);设置 max_tokens 用于控制输出长度。如果省略,默认值为 2,048 个 token。该模型每个请求最多支持 16,000 个 token。
流式响应
通过将 stream: true 在您的请求正文中。
Token 用量详情仅出现在流的最后一个 chunk 中。这允许实时 UI 更新,同时保留准确的计费数据。流式传输期间的错误仍会报告已计费 token 的用量。
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)优雅地处理部分响应。当模型完成生成或达到上下文限制时,流会正常关闭。
函数调用 & JSON 模式
使用 response_format: {type: "json_object"} 以确保严格的 JSON 输出。
在 tools 数组并设置 tool_choice 用于强制执行函数调用。模型返回适合程序化处理的结构化数据。这与我们无审查的权重配合良好。
curl https://api.apiopenrouter.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "List the top 5 dependencies for a Go web server"}]
}'将函数调用与流式传输结合使用以提供交互体验。在将 JSON 输出传递给您的应用程序逻辑之前进行验证。
限制和配额
根据每密钥限制监控使用情况以避免中断。
每个密钥允许每分钟 300 次请求和 8 个并发请求。请求正文大小限制为 8 MB。如果超出这些限制,API 将返回 429 状态码。身份验证错误返回 401,余额不足返回 402。
curl https://api.apiopenrouter.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "List the top 5 dependencies for a Go web server"}]
}'上下文窗口总计 100,000 个 token。错误不会消耗额度。轻微内容违规的拒绝也保持免费。
常见问题
openrouter API 与标准 OpenAI 有何不同?
我们的 API 使用单一无限制模型,针对合法的成人内容和创意内容进行了优化,无拒绝。它保持与 OpenAI 相同的请求和响应结构,允许您在不更改代码的情况下交换端点。
如果信用积分耗尽怎么办?
当您的预付费余额为零时,请求将返回 402 错误。余额永不过期,您可以随时通过加密货币充值。错误和拒绝不消耗您的余额。
可以为不同的项目使用多个密钥吗?
每个账户支持一个活跃密钥。创建新密钥会自动使前一个密钥失效。您可以从仪表板即时生成新密钥,而不会丢失计费历史记录。