平台 API
從程式中讀取目錄、價格、餘額與用量。
除了送出提示以外的一切都在這裡:有哪些模型、每家供應商如何收費、你已經花了多少、以及你手上有哪些金鑰。它們都在你送出補全請求的同一個 api 主機上回傳 JSON。
目錄與價格端點是公開的,完全不需要憑證。任何牽涉到你自己帳戶的內容都需要憑證,而憑證有兩種。
兩者不能互換。API 金鑰讀不到餘額,存取權杖也送不出補全請求。
| 憑證 | 外觀 | 可用於 |
|---|---|---|
| API 金鑰 | sk-... | 推論、模型清單,以及該把金鑰自己的用量計數。 |
| 存取權杖 | 29 到 32 個字元,沒有前綴 | 你的帳戶:餘額、金鑰管理、用量紀錄。 |
兩者都放在同一個標頭中,Authorization: Bearer 後面接上值。除此之外不會讀取任何東西。較舊的範例會加上 New-Api-User 標頭,該標頭會被忽略,也沒有 cookie 備援。
即使端點在沒有憑證時也會回應,還是請帶上這個標頭。未帶憑證的帳戶路由請求可能在抵達我們之前就被攔下驗證,而驗證回傳的是 HTML 而不是 JSON。
開啟設定,在安全性底下找到 API 存取並產生一組。它只會顯示一次。只有在登入狀態下才能建立,因此指令碼無法自行產生。
同一時間只能持有一組存取權杖。產生新的會讓舊的無聲失效,仍在使用舊權杖的一切都會停止運作。
把它當成密碼看待。它能花錢、建立金鑰並讀取你的歷史紀錄。指令碼不再需要時,請在同一個畫面撤銷它。
一次公開請求就會回傳所有模型,價格已換算成每百萬 token 多少美元。不必金鑰,不必註冊。
curl https://api.unorouter.com/api/pricing/catalog{
"counts": { "models": 239, "free": 134, "paid": 105, "vendors": 50 },
"first_free_model": "glm-5.3:free",
"vendors": [{ "vendor_id": 4, "vendor_name": "Zhipu", "icon": "Zhipu.Color" }],
"models": [
{
"model_name": "glm-5.3",
"vendor": "Zhipu",
"type": "text",
"is_free": false,
"online": true,
"input_price": 0.05103,
"output_price": 0.160382187,
"original_input_price": 1.26,
"original_output_price": 3.960054,
"tags": "Text,Reasoning,Tools,Cache",
"supported_endpoint_types": ["openai", "anthropic"],
"uptime_24h": 99.965,
"success_rate": 95,
"avg_latency_ms": 11062
}
]
}input_price 與 output_price 是你今天實際會付的價格,以目前提供該模型的最便宜供應商計算。original_input_price 與 original_output_price 是原廠自己的標價,兩者的差距就是折扣。is_free 標示永遠不收費的模型,online 標示此刻有供應商正在提供的模型。
另有兩個較小的端點:/api/pricing/counts 只回傳各項總數,輕量到可以輪詢;/api/pricing/vendors 回傳廠商清單。較舊的 /api/pricing 端點回傳的是原始倍率而不是美元,體積大上好幾倍。
多數模型由數家供應商以不同費率提供。查詢單一模型就能看到全部。
curl "https://api.unorouter.com/api/pricing/catalog/model?model=glm-5.3"{
"model_name": "glm-5.3",
"model_ratio": 0.63,
"completion_ratio": 3.1429,
"cache_ratio": 0.1857,
"input_price": 0.05103,
"output_price": 0.160382187,
"grid_min_ratio": 0.0405,
"auto_chain": ["a7-bbgt-2846-glm-5.3", "a7-kkl-3731-glm-5.3", "a7-4069-glm-5.3"],
"group_ratio": {
"a7-bbgt-2846-glm-5.3": 0.0405,
"a7-kkl-3731-glm-5.3": 0.0911,
"a7-4069-glm-5.3": 0.1214
},
"enable_groups": ["a7-bbgt-2846-glm-5.3", "a7-kkl-3731-glm-5.3"]
}auto_chain 是路由嘗試它們的順序,最便宜的排在前面。group_ratio 給出每家供應商的倍率,價格由此推得:
input $/1M = model_ratio * 2 * group_ratio
output $/1M = input * completion_ratio
cached $/1M = input * cache_ratio
glm-5.3 on a7-bbgt-2846: 0.63 * 2 * 0.0405 = $0.05103 / 1M in
0.05103 * 3.1429 = $0.16038 / 1M out這些群組名稱和你綁定金鑰時使用的是同一組,請參閱 群組釘選
OpenAI 相容的清單端點,是多數用戶端在你按下連線時呼叫的端點。它需要 API 金鑰。
curl https://api.unorouter.com/v1/models \
-H "Authorization: Bearer $UNOROUTER_API_KEY"它只回傳該把金鑰實際可用的模型,因此免費方案的金鑰看到的模型會比已儲值的少。每一筆還帶有 context_length 與 max_output_tokens,這是原本的 OpenAI 沒有提供的。
路徑是 /v1/models。少了 /v1 會連到網頁而不是 API,用戶端會回報成關於非預期 doctype 的 JSON 解析錯誤。
一次呼叫回傳你的帳戶資料,包含還剩多少可花。
curl https://api.unorouter.com/api/user/self \
-H "Authorization: Bearer $UNOROUTER_ACCESS_TOKEN"{
"success": true,
"message": "",
"data": {
"id": 12345,
"username": "you",
"group": "default",
"quota": 265000,
"used_quota": 4231900,
"request_count": 1884,
"aff_code": "ABC123"
}
}金額以額度為單位,不是美元。500,000 額度等於 1 美元,因此上面的餘額是 0.53 美元。要顯示金額時除以 500,000。
quota 是你還能花的額度。used_quota 與 request_count 是只增不減的累計值,所以 used_quota 並不是任何數字與餘額之間的差額。
先列出你的金鑰,再依 id 顯示其中一把的內容。
curl "https://api.unorouter.com/api/token/?p=1&page_size=20" \
-H "Authorization: Bearer $UNOROUTER_ACCESS_TOKEN"
curl -X POST https://api.unorouter.com/api/token/42/key \
-H "Authorization: Bearer $UNOROUTER_ACCESS_TOKEN"清單會遮蔽每把金鑰的值,所以顯示內容是另一次呼叫。該呼叫有速率限制,而且會記錄在你的稽核紀錄中。
建立金鑰會回傳 success,但不會回傳金鑰本身。先建立,列出以找到它的 id,再顯示明文。更新金鑰會回傳更新後的物件,但請送出完整物件:只有 cross_group_retry、group_mapping 和 auto_groups 在省略時會保留原值,其他任何省略的欄位都會被寫回為空。
你自己的請求紀錄可以分頁並篩選。
curl -G https://api.unorouter.com/api/log/self \
-H "Authorization: Bearer $UNOROUTER_ACCESS_TOKEN" \
-d p=1 \
-d page_size=100 \
-d type=2 \
-d start_timestamp=1789344000 \
-d model_name=glm-5.3| 參數 | 意義 |
|---|---|
type | 1 儲值,2 消費,3 管理,5 錯誤,6 退款,7 登入。省略則涵蓋全部。 |
start_timestamp, end_timestamp | Unix 秒。兩者相隔不得超過十年。 |
model_name, token_name, group | 縮小到單一模型、單一金鑰或單一供應商群組。 |
request_id, upstream_request_id | 以我們的 id 或供應商的 id 查出單筆請求。 |
加上 p 與 page_size 進行分頁,每頁上限為 100。同類的端點 /api/log/self/stat 針對相同篩選條件只回傳總計:花費、每分鐘請求數與每分鐘 token 數。
若要在沒有存取權杖的情況下讀取某把金鑰的剩餘餘額,請直接用該把金鑰驗證:
curl https://api.unorouter.com/api/usage/token/ \
-H "Authorization: Bearer $UNOROUTER_API_KEY"{
"object": "token_usage",
"name": "SillyTavern",
"total_granted": 500000,
"total_used": 231900,
"total_available": 268100,
"unlimited_quota": false,
"model_limits_enabled": false,
"expires_at": 0
}帳戶類端點會把內容包一層。分頁的端點包兩層。
{ "success": true, "message": "", "data": { ... } }
{ "success": true, "message": "", "data": {
"page": 1, "page_size": 20, "total": 137, "items": [ ... ]
} }公開的目錄端點是例外,會直接回傳物件,沒有外層包裝。
多數失敗仍然回應 HTTP 200,並把 success 設為 false,附上說明原因的訊息。請檢查該欄位,而不是狀態碼。
驗證是例外,會回應真正的狀態碼:憑證錯誤回應 401 與 AUTH_UNAUTHORIZED,憑證過期回應 AUTH_TOKEN_EXPIRED,登出之後回應 AUTH_SESSION_REVOKED;當帳戶無權呼叫該路由時回應 403 與 AUTH_INSUFFICIENT_PRIVILEGE。