Skip to content

API 认证

DuckMans 使用 Bearer Token 认证。你在后台创建的 API Key 是访问凭证,不是兑换码。

模型占位符

后续请求示例中的 YOUR_MODEL_ID 必须替换为 DuckMans 后台中当前 Key 和分组实际可用的模型 ID。认证成功不代表该 Key 一定有权调用任意模型。

API Key 从创建、安全保存、验证到轮换删除的生命周期示意图

示意图:Key 应按客户端隔离,泄露后轮换并删除旧 Key;可复制的地址、命令和代码仍以正文为准。

Authorization 请求头

每次请求都要发送:

http
Authorization: Bearer YOUR_API_KEY

Bearer 与 Key 之间只有一个空格,不要添加引号、冒号或额外前缀。

Authorization Bearer 请求头和服务端认证要点示意图

示意图: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_KEY
powershell
$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 UnauthorizedKey 是否完整、是否已删除、Bearer 格式是否正确
403 ForbiddenKey 分组、模型权限、账户或分组状态
能获取模型但不能生成请求中的模型 ID 是否属于当前 Key 的可用列表;所选协议是否受支持

更多处理方法见 API 排错

DuckMans 用户指导手册