Skip to Content
API 参考鉴权

鉴权

ttttt.ai 的所有 /v1/* 网关接口都需要带上 API Key。本页讲请求头怎么写、错误怎么读。

Base URL

https://api.ttttt.ai

所有协议都挂在这一个域名下。不要在路径里加版本前缀以外的东西(例如不要写 /anthropic/v1/messages——直接用 /v1/messages)。

双别名 Header

下面两种 Header 完全等价,按你 SDK 的默认行为选一种即可:

Authorization: Bearer owo-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
x-api-key: owo-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
协议族习惯用法
OpenAI Chat / Responses / Embeddings / ImagesAuthorization: Bearer ...
Anthropic Messagesx-api-key: ...

同时带两个 Header 也允许;网关取任一个有效值即可。

请求示例

curl https://api.ttttt.ai/v1/chat/completions \ -H "Authorization: Bearer owo-..." \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-5.5", "messages": [{"role": "user", "content": "ping"}] }'
curl https://api.ttttt.ai/v1/messages \ -H "x-api-key: owo-..." \ -H "anthropic-version: 2023-06-01" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-4-6", "max_tokens": 64, "messages": [{"role": "user", "content": "ping"}] }'

鉴权错误

所有鉴权失败都返回 401 Unauthorized,body 用统一的错误信封:

{ "error": { "message": "Invalid API key", "type": "unauthorized", "code": 401 } }

常见 message 与排查方向:

message含义处理
Invalid API key密钥不存在 / 已停用 / 已轮换控制台核对密钥状态,或重新创建一把
Key expired密钥过了 expiresAt重新创建 / 不要再设过期时间
Model not allowed for this keymodelScope 拒绝改请求体的 model,或在控制台放开 scope
Organization deactivated组织被冻结(欠费、违规、或主动注销冷冻期)联系工单
Missing API key没带 Header检查 Authorization / x-api-key 是否真的发出去了

防泄漏

  • 密钥只在服务端使用。任何 owo-... 出现在浏览器、APP 客户端、CDN 缓存里都视为泄露。
  • CI 环境用专门的短期密钥(expiresAt 设几周),不要复用人工密钥。
  • 怀疑泄露:立即停用,不要先尝试”轮换”再观察——停用后再补一把新密钥发新值。

详细的密钥生命周期与 scope 见 API 密钥

CORS / 浏览器直连

ttttt.ai 网关不开放 CORS——这是有意的设计,避免密钥从前端泄露。

如果你确实需要在浏览器里调用模型,在你自己的服务端做一层 Proxy:

浏览器 → 你的后端 (校验登录 / 限流 / 日志) → api.ttttt.ai

Request ID

每个响应都带 X-Request-ID: req-<uuid> 头部,对应的 request_id 同时写进 usage 记录。 排障时把这个 ID 提供给工单,运营可以一秒定位上游链路。

< HTTP/1.1 200 OK < X-Request-ID: req-018ff3a2-9bca-7f29-bd0a-1c4b3d8e0c8e < Content-Type: application/json

时区

服务器统一使用 UTC 入库。控制台显示与告警邮件按 Asia/Shanghai (UTC+8) 渲染日期/时间——例如赠金有效期、用量按”上海当日”聚合都以此切日。

Last updated on