接入文件
渡口API 提供 OpenAI 相容的 HTTP 介面,現有程式碼通常只需替換 Base URL 與 API Key 即可接入。
Base URL
https://dukouapi.com
完整端點:
| 用途 | 方法 | 路徑 |
|---|---|---|
| 對話補全 | POST | /v1/chat/completions |
| 模型列表 | GET | /v1/models |
| 用量查詢 | GET | /api/user/self |
如果你用的是官方 OpenAI SDK,直接設
base_url = "https://dukouapi.com/v1" 即可,不要再手動拼 /v1。鑑權
在控制檯「API 金鑰」頁建立金鑰,然後放進請求頭:
Authorization: Bearer sk-xxxxxxxxxxxxxxxx
- 金鑰繫結分組,不同分組可用的模型和單價不同
- 金鑰可以設定額度上限、過期時間與模型白名單
- 不要把金鑰寫進前端程式碼或公開倉庫
第一次呼叫
建立金鑰後,用下面任意一種方式發出第一個請求。新註冊賬戶自帶體驗額度,可以直接開始測試。
cURL
curl https://dukouapi.com/v1/chat/completions \
-H "Authorization: Bearer sk-xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4.1-flash",
"messages": [{"role": "user", "content": "你好"}],
"max_tokens": 300
}'
Python(openai SDK)
from openai import OpenAI
client = OpenAI(
api_key="sk-xxxxxxxxxxxxxxxx",
base_url="https://dukouapi.com/v1",
)
resp = client.chat.completions.create(
model="deepseek-v4.1-flash",
messages=[{"role": "user", "content": "你好"}],
max_tokens=300,
)
print(resp.choices[0].message.content)
已經裝了 openai 的話只需要改兩個引數:base_url 和 api_key。
Node.js
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "sk-xxxxxxxxxxxxxxxx",
baseURL: "https://dukouapi.com/v1",
});
const resp = await client.chat.completions.create({
model: "deepseek-v4.1-flash",
messages: [{ role: "user", content: "你好" }],
max_tokens: 300,
});
console.log(resp.choices[0].message.content);
流式輸出
加上 "stream": true 即返回 SSE:
stream = client.chat.completions.create(
model="deepseek-v4.1-flash",
messages=[{"role": "user", "content": "講個短故事"}],
stream=True,
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
注意 max_tokens:部分模型(如 deepseek-v4.1-flash)會先進行內部推理。若
max_tokens 設得過小(例如 50),推理可能就把額度用光,導致返回內容為空。建議至少設為 256,長回答設 1000 以上。Anthropic 協議
除 OpenAI 協議外,本站同時相容 Anthropic 的 Messages API,Claude 官方 SDK 可直接接入:
import anthropic
client = anthropic.Anthropic(
api_key="sk-xxxxxxxxxxxxxxxx",
base_url="https://dukouapi.com",
)
msg = client.messages.create(
model="claude-fable-5",
max_tokens=300,
messages=[{"role": "user", "content": "你好"}],
)
print(msg.content[0].text)
端點:POST /v1/messages,鑑權頭同時接受 x-api-key 與 Authorization: Bearer。
模型與價格
可用模型取決於你金鑰所屬的分組。完整清單、各分組的倍率與實時單價見:
呼叫 GET /v1/models 也可以列出當前金鑰可用的全部模型。
計費說明
- 計費方式
- 按 token 實際用量扣費,無月費、無最低消費
- 價格單位
- 元 / 百萬 token(輸入與輸出分別計價)
- 餘額
- 預付制。餘額不足時請求會被拒絕(錯誤碼 403)
- 用量明細
- 控制檯「日誌」頁可檢視每次請求的模型、token 數與扣費額
部分模型有分時定價:在非高峰時段單價會自動下調,此時按低價結算,頁面上顯示的是區間價。
實際扣費公式:
你可以在日誌裡核對每一筆的明細。
扣費 = (輸入token × 輸入單價 + 輸出token × 輸出單價) ÷ 1,000,000 × 分組倍率你可以在日誌裡核對每一筆的明細。
錯誤碼
| 狀態碼 | 含義 | 處理方式 |
|---|---|---|
| 401 | 金鑰無效或已刪除 | 檢查金鑰是否複製完整 |
| 403 | 餘額不足 / 模型不在該分組 | 充值,或換用分組內的模型 |
| 429 | 請求過於頻繁 | 降低併發,或稍後重試 |
| 500 / 502 | 上游異常 | 稍後重試;持續出現請反饋 |
| 503 | 當前分組無可用渠道 | 換用其他模型,或聯絡支援 |
常見問題
返回內容為空,但呼叫是 200?
多數情況是 max_tokens 太小。部分模型會先做內部推理,推理 token 也計入 max_tokens。把它調到 256 以上通常即可解決。
提示「No available channel for model X under group Y」?
你金鑰所在的分組裡沒有支援該模型的渠道。在控制檯檢視該分組支援的模型,或另建一個其他分組的金鑰。
可以同時用 OpenAI 和 Anthropic 的 SDK 嗎?
可以。同一把金鑰既能調 /v1/chat/completions,也能調 /v1/messages,計費一致。
餘額怎麼查?
控制檯首頁顯示當前餘額與已用量;GET /api/user/self 也能讀取(需要同一把金鑰)。
怎麼充值?
控制檯「錢包」頁。支援銀行卡支付,按實時匯率折算。
響應慢或超時?
不同分組的通道穩定性和速度不同(價格也不同)。如果對延遲敏感,可以換用穩定通道對應的分組。
渡口API