搜尋文件...

開始輸入以搜尋文件

平台指南

平台 API

從程式中讀取目錄、價格、餘額與用量。

除了送出提示以外的一切都在這裡:有哪些模型、每家供應商如何收費、你已經花了多少、以及你手上有哪些金鑰。它們都在你送出補全請求的同一個 api 主機上回傳 JSON。

目錄與價格端點是公開的,完全不需要憑證。任何牽涉到你自己帳戶的內容都需要憑證,而憑證有兩種。

兩者不能互換。API 金鑰讀不到餘額,存取權杖也送不出補全請求。

憑證外觀可用於
API 金鑰sk-...推論、模型清單,以及該把金鑰自己的用量計數。
存取權杖29 到 32 個字元,沒有前綴你的帳戶:餘額、金鑰管理、用量紀錄。

兩者都放在同一個標頭中,Authorization: Bearer 後面接上值。除此之外不會讀取任何東西。較舊的範例會加上 New-Api-User 標頭,該標頭會被忽略,也沒有 cookie 備援。

即使端點在沒有憑證時也會回應,還是請帶上這個標頭。未帶憑證的帳戶路由請求可能在抵達我們之前就被攔下驗證,而驗證回傳的是 HTML 而不是 JSON。

開啟設定,在安全性底下找到 API 存取並產生一組。它只會顯示一次。只有在登入狀態下才能建立,因此指令碼無法自行產生。

同一時間只能持有一組存取權杖。產生新的會讓舊的無聲失效,仍在使用舊權杖的一切都會停止運作。

把它當成密碼看待。它能花錢、建立金鑰並讀取你的歷史紀錄。指令碼不再需要時,請在同一個畫面撤銷它。

一次公開請求就會回傳所有模型,價格已換算成每百萬 token 多少美元。不必金鑰,不必註冊。

bash
curl https://api.unorouter.com/api/pricing/catalog
json
{
  "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 端點回傳的是原始倍率而不是美元,體積大上好幾倍。

多數模型由數家供應商以不同費率提供。查詢單一模型就能看到全部。

bash
curl "https://api.unorouter.com/api/pricing/catalog/model?model=glm-5.3"
json
{
  "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 給出每家供應商的倍率,價格由此推得:

text
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 金鑰。

bash
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 解析錯誤。

一次呼叫回傳你的帳戶資料,包含還剩多少可花。

bash
curl https://api.unorouter.com/api/user/self \
  -H "Authorization: Bearer $UNOROUTER_ACCESS_TOKEN"
json
{
  "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 顯示其中一把的內容。

bash
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 在省略時會保留原值,其他任何省略的欄位都會被寫回為空。

你自己的請求紀錄可以分頁並篩選。

bash
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
參數意義
type1 儲值,2 消費,3 管理,5 錯誤,6 退款,7 登入。省略則涵蓋全部。
start_timestamp, end_timestampUnix 秒。兩者相隔不得超過十年。
model_name, token_name, group縮小到單一模型、單一金鑰或單一供應商群組。
request_id, upstream_request_id以我們的 id 或供應商的 id 查出單筆請求。

加上 p 與 page_size 進行分頁,每頁上限為 100。同類的端點 /api/log/self/stat 針對相同篩選條件只回傳總計:花費、每分鐘請求數與每分鐘 token 數。

若要在沒有存取權杖的情況下讀取某把金鑰的剩餘餘額,請直接用該把金鑰驗證:

bash
curl https://api.unorouter.com/api/usage/token/ \
  -H "Authorization: Bearer $UNOROUTER_API_KEY"
json
{
  "object": "token_usage",
  "name": "SillyTavern",
  "total_granted": 500000,
  "total_used": 231900,
  "total_available": 268100,
  "unlimited_quota": false,
  "model_limits_enabled": false,
  "expires_at": 0
}

帳戶類端點會把內容包一層。分頁的端點包兩層。

json
{ "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。