OlithmRouter API 文档
OpenAI 相容的统一 API 入口。把 SDK 的 Base URL 指向 OlithmRouter,即可用同一组金钥呼叫已启用的模型。
https://api.olithm.eu.cc/v1
认证Authorization: Bearer sk-...(或 x-api-key)
协议OpenAI 相容(Chat Completions / Completions / Embeddings;Responses 依上游支援)
串流支援 SSE(stream: true,以 data: [DONE] 结束)
sk-你的金钥 换成你在控制台 → API 金钥建立的字串。1. 认证
每次请求在标头带上你的 API 金钥:
Authorization: Bearer sk-你的金钥
也接受 x-api-key: sk-你的金钥。金钥绑定你的账号与分组,会影响可用模型与计费倍率。
2. 可用模型
即时模型清单(含价格与分组):
curl https://olithm.eu.cc/api/relay/models
目前启用的模型:
载入中…模型 ID 以清单中的 key 为准;价格为各分组的最低价(USD / 1M tokens)。
3. 快速开始
curl
curl {{BASE}}/chat/completions \
-H "Authorization: Bearer sk-你的金钥" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4.1-flash",
"messages": [{"role": "user", "content": "你好,请自我介绍"}]
}'
Python(OpenAI SDK)
from openai import OpenAI
client = OpenAI(
base_url="https://api.olithm.eu.cc/v1",
api_key="sk-你的金钥",
)
resp = client.chat.completions.create(
model="deepseek-v4.1-flash",
messages=[{"role": "user", "content": "你好"}],
)
print(resp.choices[0].message.content)
Node.js(openai)
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.olithm.eu.cc/v1",
apiKey: "sk-你的金钥",
});
const resp = await client.chat.completions.create({
model: "deepseek-v4.1-flash",
messages: [{ role: "user", content: "你好" }],
});
console.log(resp.choices[0].message.content);
注意:OpenAI SDK 的 base_url 需含 /v1。
4. Chat Completions
POST /v1/chat/completions
| 参数 | 类型 | 说明 |
|---|---|---|
model | string | 模型 ID(见上方清单) |
messages | array | 对话讯息(role/content) |
stream | bool | 是否以 SSE 串流回传 |
max_tokens | int | 最大输出 token(可选) |
temperature | float | 取样温度(可选) |
回应为标准 OpenAI chat.completion 结构,并包含 usage(prompt/completion tokens)供计费。
{
"id": "chatcmpl-...",
"object": "chat.completion",
"model": "deepseek-v4.1-flash",
"choices": [
{"index": 0, "message": {"role": "assistant", "content": "你好!"}, "finish_reason": "stop"}
],
"usage": {"prompt_tokens": 12, "completion_tokens": 20, "total_tokens": 32}
}
5. 串流输出
加上 "stream": true,回应为 text/event-stream:
curl {{BASE}}/chat/completions \
-H "Authorization: Bearer sk-你的金钥" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4.1-flash",
"stream": true,
"messages": [{"role": "user", "content": "写一首短诗"}]
}'
事件格式:多个 data: {...} chunk,最后以 data: [DONE] 结束。串流请求同样会计费。
6. Embeddings
POST /v1/embeddings(需上游模型支援)
curl {{BASE}}/embeddings \
-H "Authorization: Bearer sk-你的金钥" \
-H "Content-Type: application/json" \
-d '{"model": "你的模型", "input": "hello world"}'
7. 模型列表
公开的模型与价格清单(无需金钥):
GET https://olithm.eu.cc/api/relay/models
GET /v1/models 会转发至上游;若上游支援 OpenAI 模型列表即可使用。
8. 错误码
| 状态码 | type | 说明 |
|---|---|---|
| 401 | auth_error | 金钥无效或不存在 |
| 402 | billing_error | 余额不足 / 金钥额度用尽 |
| 403 | auth_error | 金钥停用/撤销/过期、IP 不符、模型或分组不允许 |
| 429 | rate_limit | 超过 5h/1d/7d 消费上限或并发上限 |
| 502 | upstream_error | 所有上游失败 |
| 503 | gateway_error | 闸道停用或无可用上游 |
{"error": {"message": "invalid api key", "type": "auth_error"}}
9. 速率限制与额度
每个 API 金钥可设定:
| 项目 | 说明 |
|---|---|
| 额度上限 | 金钥累计消费上限(USD,0 = 无限) |
| 5 小时 / 1 天 / 7 天 | 各时间窗的消费上限(USD,0 = 不限) |
| 并发上限 | 同时进行中的请求数(0 = 不限) |
| IP 白/黑名单 | 支援单一 IP 与 CIDR |
超限回 429 rate_limit;额度用尽回 402 billing_error。
10. 计费
费用 =(输入 tokens × 输入单价 + 输出 tokens × 输出单价 + 快取 tokens × 快取单价)/ 1,000,000 × 分组倍率。
单价以模型设定为准;分组倍率依你的金钥所属分组。每次呼叫的 token、费用、首字/总耗时都会记录在控制台 → 用量日志,可查看详情与汇出 CSV。
11. 客户端接入
OlithmRouter Connect(一键配置,推荐)
Windows 客户端,登入后选好分组与模型,按「一键配置」即自动写入 Codex / Claude Code / Gemini CLI / OpenCode 的设置文件。既有配置会先备份再合并,不会覆盖你其他的供应商。
所有 OpenAI 相容的客户端也都可用更换 Base URL + API Key 的方式接入。
OpenAI SDK / 一般工具
export OPENAI_BASE_URL="https://api.olithm.eu.cc/v1"
export OPENAI_API_KEY="sk-你的金钥"
Gemini CLI
GOOGLE_GEMINI_BASE_URL="https://api.olithm.eu.cc/v1beta"
GEMINI_API_KEY="sk-你的金钥"
OpenCode
{
"provider": {
"olapi": {
"npm": "@ai-sdk/openai-compatible",
"options": { "baseURL": "https://api.olithm.eu.cc/v1", "apiKey": "sk-你的金钥" },
"models": { "deepseek-v4.1-flash": {} }
}
}
}
CC-Switch
新增 OpenAI 相容供应商:Base URL 填 https://api.olithm.eu.cc/v1,API Key 填你的金钥。
三种原生协议都支援:OpenAI(/v1/chat/completions)、Anthropic(/v1/messages)、Gemini(/v1beta/models/{model}:generateContent,串流加 ?alt=sse)。网关会把三种形状互转,上游只需是 OpenAI 相容即可。
12. 常见问题
「福利分组中数据将被记录,谨慎使用」是什么意思?
0.01 倍率分组(以及所有标注为福利分组者)的生成内容与输入内容会提供给我们的合作方用于模型训练。数据不会直接对外泄露,但很可能被记录在合作方模型的数据库中,未来也存在经由供应商 AI 模型泄露您数据的可能。请勿在该类分组中提交任何敏感信息、密钥、个人信息或商业机密;需要保密的内容请使用低价通道或稳定通道。
「企业用体验分组」是什么?
企业分组是我们独家提供给与我们洽谈企业级 LLM 方案客户的测试通道,不建议一般使用。普通用户或团队若估算当周用量超过 1 Billion tokens,即可联系我们洽谈。后续我们也会为洽谈过企业级 LLM 方案的客户提供更好的服务支持(专属报价、接入评估与容量规划、1 对 1 技术支持通道)。
充值后可以退款吗?
充值后不支持退款,请按实际用量充值。余额不会过期,也没有订阅或月费。若对账目有疑问(扣费异常、重复扣款),请至客服核对,人工客服会在 72 小时内处理。
401 invalid api key?
确认金钥完整(sk- 开头、无多余空白)、未被停用/撤销,且 Base URL 对 OpenAI SDK 需含 /v1。
402 insufficient balance?
账号余额不足或金钥额度用尽。前往控制台 → 钱包查看,并至发卡站储值。
403 model not allowed?
金钥的模型白名单或所属分组不包含此模型。请在控制台调整金钥分组/模型限制。
429 rate limit?
超过金钥的 5h/1d/7d 消费上限或并发上限;可调高限制或稍后再试。
串流很慢/首字很久?
推理型模型首字可能较久;建议使用 stream: true 并提高客户端读取逾时。服务器支援长达 600 秒的回应。不会因为首字慢就切换上游——慢但可用的上游会一直等到它回应,只有上游真的返回错误(断线、报错、总超时)才自动切换到下一个供应商。
DeepSeek 工具调用一直失败或被截断?
DeepSeek 系模型做 agent 工具调用时有四种常见坏法:参数 JSON 截断、把调用写成代码块而非 tool-call 通道、字段与 schema 不符、失败后原样重发形成死循环。在 agent 的 system prompt 最前面加上这段即可大幅减少:
工具调用只能通过 tool-call 通道发起,绝不写成正文或代码块。
参数必须是完整合法的 JSON:无注释、无尾逗号、括号全部闭合;
严格按 schema 的字段名与类型填写,不发明字段,必填字段不可省略。
调用失败时:先逐字读错误信息,修正后重发,禁止原样重发同一份参数;
同一工具连续失败 2 次后必须换方法(改用别的工具 / 拆小参数 / 说明无法完成)。
单个参数超过 8000 字符前必须先精简,避免输出被截断。
独立的调用可并行;有依赖时必须等前一个结果。
外层建议:同一工具+同一参数最多自动重试 1 次;连续 3 次失败就中止本轮并回报原因,不要让循环烧 token。
金钥安全
请存放于环境变数或密钥管理服务,勿写入前端或提交到 Git。若外泄请立即在控制台撤销并重建。