认证
安全使用 AnyPath API Key。
API Key
每个网关请求都需要 AnyPath API Key。请在 控制台 → API 接入 创建 Key。
对于 OpenAI 兼容端点,按以下方式发送:
Authorization: Bearer sk-your-api-key
对于 Anthropic 兼容的 /v1/messages 请求,也可以使用:
x-api-key: sk-your-api-key
对于 Gemini /v1beta 请求,Google 风格的客户端也可以使用
x-goog-api-key 或 ?key=... 传递同一个 AnyPath Key。
Key 生命周期
- 在 API 接入 创建 Key。
- 立即复制完整密钥——只显示这一次。
- 放入服务端的密钥管理系统或环境变量。
- 不再使用时,在控制台中轮换或吊销。
- 不要在客户端代码中暴露 API Key
- 不要把 API Key 提交到代码仓库
- 不要把 API Key 写入日志或截图
- 定期轮换 Key
- 删除不再使用的 Key
使用 API Key
curl https://api.anypath.dev/v1/responses \
-H "Authorization: Bearer $ANYPATH_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-mini",
"input": "Hello!"
}'
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ.get("ANYPATH_API_KEY"),
base_url="https://api.anypath.dev/v1"
)
import OpenAI from 'openai';
const client = new OpenAI({
apiKey: process.env.ANYPATH_API_KEY,
baseURL: 'https://api.anypath.dev/v1'
});
Key 控制项
路由策略
每个 API Key 使用智能路由或指定供应商。指定供应商是供应商边界,不等于锁定某一个具体 key。使用同一个 Key 调用 GET /v1/models 即可看到当前可用模型。
RPM 与 TPM 限额
账号 Tier 通过用户策略设置账号级 RPM / TPM。API Key 限额只能针对某个工作负载进一步收紧账号策略。最终有效值还会受所选模型、可用凭证路由和上游供应商 key 影响。请通过控制台、GET /v1/models 和限流响应头查看当前有效限额。
使用上限
可以为每个 API Key 设置使用上限:
| 设置 | 说明 |
|---|---|
| 无限制 | Key 可以使用可用的共享资源 |
| 固定上限 | Key 消费达到指定金额后停止使用 |
Key 前缀
所有 AnyPath API Key 都以 sk- 开头。
Anthropic 兼容性
对于 /v1/messages 端点,Anthropic 风格的请求头可以正常使用:
curl https://api.anypath.dev/v1/messages \
-H "x-api-key: sk-your-api-key" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Hello!"}]
}'
对于支持的端点,如
/v1/responses、/v1/chat/completions、/v1/messages、/v1/images/generations和 Gemini/v1beta,请使用Authorization: Bearer ...。
错误响应
| 状态码 | Code | 说明 |
|---|---|---|
| 401 | auth_required | 缺少认证头 |
| 401 | auth_invalid | API Key 无效 |
| 401 | auth_expired | API Key 已过期 |
| 403 | spending_limit_exceeded | API Key 已达到使用上限 |
运行时 JSON 中的 type 始终与 code 相同。示例:
{
"error": {
"message": "Invalid API key.",
"type": "auth_invalid",
"code": "auth_invalid"
}
}