Appearance
API 认证
DuckMans 使用 Bearer Token 认证。你在后台创建的 API Key 是访问凭证,不是兑换码。
模型占位符
后续请求示例中的 YOUR_MODEL_ID 必须替换为 DuckMans 后台中当前 Key 和分组实际可用的模型 ID。认证成功不代表该 Key 一定有权调用任意模型。
示意图:Key 应按客户端隔离,泄露后轮换并删除旧 Key;可复制的地址、命令和代码仍以正文为准。
Authorization 请求头
每次请求都要发送:
http
Authorization: Bearer YOUR_API_KEYBearer 与 Key 之间只有一个空格,不要添加引号、冒号或额外前缀。
示意图:YOUR_API_KEY 仅为占位符,真实 Key 不进入文档、日志或截图;可复制的地址、命令和代码仍以正文为准。
使用环境变量
开发和测试时,不要把真实 Key 直接写进代码或命令。下面的输入方式不会回显 Key,并且只为当前终端进程及其子进程设置环境变量:
bash
old_stty=$(stty -g)
trap 'stty "$old_stty"' EXIT INT TERM
printf "DuckMans API Key: "
stty -echo
IFS= read -r DUCKMANS_API_KEY
stty "$old_stty"
trap - EXIT INT TERM
printf '\n'
export DUCKMANS_API_KEYpowershell
$secureKey = Read-Host "DuckMans API Key" -AsSecureString
$env:DUCKMANS_API_KEY = [System.Net.NetworkCredential]::new("", $secureKey).Password
Remove-Variable secureKey然后按当前终端选择对应的可复制请求:
bash
curl -sS https://duckmans.com/v1/models \
-H "Authorization: Bearer $DUCKMANS_API_KEY"powershell
curl.exe -sS https://duckmans.com/v1/models `
-H "Authorization: Bearer $env:DUCKMANS_API_KEY"这里使用的是完整请求地址 https://duckmans.com/v1/models。如果在客户端或 SDK 的 Base URL 字段中配置,则填写 https://duckmans.com/v1。
Python 和 Node.js
Python 与 Node.js 示例只从环境变量读取 Key:
python
import os
api_key = os.environ["DUCKMANS_API_KEY"]js
const apiKey = process.env.DUCKMANS_API_KEY;
if (!apiKey) {
throw new Error("DUCKMANS_API_KEY is not set");
}完整 SDK 示例见 Python / Node.js SDK。
Key 安全建议
- 一个客户端或项目使用一个独立 Key,便于撤销和定位异常用量。
- 不要把 Key 提交到 Git、写入前端代码、浏览器脚本或公开配置文件。
- 日志、截图和工单中只展示打码形式,例如
sk-xxxx••••xxxx。 - 服务端读取环境变量或密钥管理服务,不要让 Key 下发到浏览器。
- 怀疑泄露时,立即在 DuckMans 后台删除旧 Key 并创建新 Key。
- 给 Key 选择正确分组;分组不支持目标模型时,即使 Key 格式正确也会调用失败。
常见认证失败
| 状态或现象 | 优先检查 |
|---|---|
401 Unauthorized | Key 是否完整、是否已删除、Bearer 格式是否正确 |
403 Forbidden | Key 分组、模型权限、账户或分组状态 |
| 能获取模型但不能生成 | 请求中的模型 ID 是否属于当前 Key 的可用列表;所选协议是否受支持 |
更多处理方法见 API 排错。
