API 接入文档
连接模型,管理用量,把时间留给你的想法。
从第一次请求开始。
用一个 API 地址和你自己的密钥,连接常用的 AI 模型。这里提供可以直接修改使用的请求示例,以及用量、额度与错误排查说明。
https://toteamlinks.com/v1- 创建你的 API 密钥
打开控制台 → API 密钥,创建用于调用接口的密钥。这里需要的是 API 密钥,不是登录密码。
- 查看可用模型
查询
GET /v1/models,将示例中的YOUR_MODEL_ID替换为列表中可用的模型 ID。 - 发送第一个请求
选择工具支持的协议:Messages、Chat Completions 或 Responses。支持范围取决于模型和渠道。
终端示例使用 Bash、curl 与 jq。macOS 默认使用 zsh 时,可以先输入 bash。
地址与认证
SDK 的 Base URL 包含 /v1。直接调用 HTTP 接口时,避免重复拼接成 /v1/v1。
| 配置项 | 填写内容 |
|---|---|
| API Base URL | https://toteamlinks.com/v1 |
| OpenAI 兼容认证 | Authorization: Bearer YOUR_API_KEY |
| Messages 认证 | x-api-key: YOUR_API_KEYanthropic-version: 2023-06-01 |
先设置环境变量
set -o pipefail
export TOTEAMLINKS_BASE_URL='https://toteamlinks.com/v1'
read -r -s -p '请输入你的 API 密钥(不回显): ' TOTEAMLINKS_API_KEY
printf '\n'
export TOTEAMLINKS_API_KEY
# 查询模型后,替换为列表里的真实模型 ID。
export TOTEAMLINKS_MODEL='YOUR_MODEL_ID'密钥应保存在后端或本机环境中,不要写进公开网页、仓库、截图或 URL。操作结束后,可以执行 unset TOTEAMLINKS_API_KEY。
查看可用模型
模型授权以当前密钥的查询结果为准。模型可用性还受账户余额、渠道状态和调度容量影响。
curl -fsS --connect-timeout 10 --max-time 30 \
"$TOTEAMLINKS_BASE_URL/models" \
-H "Authorization: Bearer $TOTEAMLINKS_API_KEY" |
jq -r '.data[].id'价格请查看模型广场,不要仅凭模型名称或模型目录推断每次调用的费用。
Anthropic Messages
适用于使用 Anthropic 消息格式的客户端。生成内容通常位于 content 数组,本次请求用量位于 usage。
curl -fsS --connect-timeout 10 --max-time 180 \
"$TOTEAMLINKS_BASE_URL/messages" \
-H "x-api-key: $TOTEAMLINKS_API_KEY" \
-H 'anthropic-version: 2023-06-01' \
-H 'Content-Type: application/json' \
--data "$(jq -n --arg model "$TOTEAMLINKS_MODEL" '{
model: $model,
max_tokens: 256,
messages: [{role: "user", content: "请用一句话介绍你能做什么。"}]
}')"max_tokens 是输出长度上限,不是金额额度。输入 Token 预估接口 /v1/messages/count_tokens 当前未开放。
OpenAI Chat Completions
适用于支持 OpenAI 兼容接口的聊天工具和 SDK。普通文本响应通常读取 choices[0].message.content。
curl -fsS --connect-timeout 10 --max-time 180 \
"$TOTEAMLINKS_BASE_URL/chat/completions" \
-H "Authorization: Bearer $TOTEAMLINKS_API_KEY" \
-H 'Content-Type: application/json' \
--data "$(jq -n --arg model "$TOTEAMLINKS_MODEL" '{
model: $model,
max_tokens: 256,
messages: [{role: "user", content: "请用一句话介绍你能做什么。"}]
}')"Messages、Chat 和 Responses 的消息结构、思考参数并不相同。兼容接口可能进行格式转换,不保证任意参数均原样透传。
OpenAI Responses
使用 input 提交输入,结果按 Responses 的 output 结构返回。使用前确认模型和渠道支持该协议。
curl -fsS --connect-timeout 10 --max-time 180 \
"$TOTEAMLINKS_BASE_URL/responses" \
-H "Authorization: Bearer $TOTEAMLINKS_API_KEY" \
-H 'Content-Type: application/json' \
--data "$(jq -n --arg model "$TOTEAMLINKS_MODEL" '{
model: $model,
max_output_tokens: 256,
input: "请用一句话介绍你能做什么。"
}')"不要使用 Chat 的 choices 路径解析 Responses 响应。
流式与图片输入
接收流式响应
请求增加 stream: true,使用 curl -N 接收 SSE 事件。HTTP 200 表示响应已开始;客户端还应处理正常结束、错误事件和连接中断。
curl -fsS -N --connect-timeout 10 --max-time 600 \
"$TOTEAMLINKS_BASE_URL/messages" \
-H "x-api-key: $TOTEAMLINKS_API_KEY" \
-H 'anthropic-version: 2023-06-01' \
-H 'Content-Type: application/json' \
--data "$(jq -n --arg model "$TOTEAMLINKS_MODEL" '{
model: $model, max_tokens: 1024, stream: true,
messages: [{role: "user", content: "用三点解释缓存的作用。"}]
}')"收到部分输出后的重试可能产生重复生成与费用。长输出请设置合理超时,不要对中断请求无限重试。
文字与图片放在同一条消息中
以下为 Chat 格式的请求体。图片地址是占位符,请换成实际可读取的地址,并选择支持视觉输入的模型。
{
"model": "YOUR_VISION_MODEL_ID",
"max_tokens": 512,
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "这张图片中有什么?"},
{"type": "image_url", "image_url": {
"url": "https://your-domain.example/image.png"
}}
]
}]
}每条消息需要 role,文本块和图片块属于该消息的 content,不能直接作为两条消息。
SDK 接入
沿用前面设置的环境变量。SDK 的 Base URL 填写 https://toteamlinks.com/v1。
Python
python -m pip install openaiimport os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["TOTEAMLINKS_API_KEY"],
base_url="https://toteamlinks.com/v1",
)
response = client.chat.completions.create(
model=os.environ["TOTEAMLINKS_MODEL"],
max_tokens=256,
messages=[{"role": "user", "content": "你好,请介绍一下自己。"}],
)
print(response.choices[0].message.content)JavaScript
npm install openaiimport OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.TOTEAMLINKS_API_KEY,
baseURL: "https://toteamlinks.com/v1",
});
const response = await client.chat.completions.create({
model: process.env.TOTEAMLINKS_MODEL,
max_tokens: 256,
messages: [{ role: "user", content: "你好,请介绍一下自己。" }],
});
console.log(response.choices[0].message.content);用量与余额
在钱包查看账户余额,在使用日志查看请求消耗。API 密钥还可以设置独立的额度、有效期和权限限制。
查询当前密钥
此接口使用网站根地址,路径中没有 /v1。
curl -fsS --connect-timeout 10 --max-time 30 \
'https://toteamlinks.com/api/usage/token/' \
-H "Authorization: Bearer $TOTEAMLINKS_API_KEY" |
jq '.data | {
name, total_granted, total_used, total_available,
unlimited_quota, expires_at, user_quota
}'| 字段 | 含义 |
|---|---|
total_granted | 当前密钥的剩余额度与已用额度之和。 |
total_used | 当前密钥的已用额度。 |
total_available | 当前密钥的剩余额度。 |
unlimited_quota | 密钥是否未设额度上限。为 true 时,不能把剩余数值 0 理解为额度耗尽;账户余额和其他限制仍生效。 |
expires_at | 过期时间,Unix 秒;0 表示没有设置过期时间。 |
user_quota | 可选账户额度对象。仅在密钥开启“允许查询用户额度”时返回,缺失不表示账户余额为 0。 |
以上三个额度字段返回内部额度单位。转换为美元计价单位时,应除以 /api/status 返回的 quota_per_unit;钱包展示还可能受币种设置影响。不要把额度数值直接当作美元或 Token 数。
接口适用范围
本站当前公开查询入口为 /api/usage/token/。/me/usage、四个时间统计桶与 budget.* 等其他平台的查询格式不适用于本站密钥。
缓存与费用
响应中的 usage 描述本次请求报告的用量,字段随协议和模型变化。缓存读取、缓存写入与输出可能采用不同的计价规则。
| 关注项 | 如何理解 |
|---|---|
| Token 单位 | 1M = 1,000,000 Token,1B = 1,000,000,000 Token。 |
| 缓存细分 | Messages 可能返回 cache_read_input_tokens 和 cache_creation_input_tokens;Chat 可能返回 prompt_tokens_details.cached_tokens。具体取决于模型和渠道。 |
| 字段缺失 | 没有可用的细分报告,不能直接解释为 0 或免费。 |
| 缓存命中率 | 在读取 Token 与总输入 Token 的口径明确、一致且分母大于 0 时计算;跨请求应先汇总再计算。 |
| 请求费用 | 以新站使用日志的结算结果为准。不能用混合模型的总费用除以总 Token 推断某个模型的单价。 |
通用公式为 缓存读取输入 Token ÷ 同口径总输入 Token × 100%。若输入 Token 已包含缓存,不要重复叠加;Token 命中率也不等于节费比例。
某个时间窗口内的费用不能当作全部历史累计账本。账户统计请在控制台查看。
错误排查
先查看响应的错误类型与消息,再结合 HTTP 状态排查。
| 情况 | 检查与处理 |
|---|---|
400 参数错误 | 检查 JSON、role/content、数字类型、模型参数与请求协议。 |
401 认证失败 | 检查密钥是否完整,是否使用了新站生成的 API 密钥,以及状态、有效期。 |
403 权限限制 | 检查 IP 白名单、模型权限、分组与账户权限,以具体错误消息为准。 |
| 额度不足 | 核对账户余额、密钥额度和有效期。网关与上游可能返回不同状态码,以错误消息为准。 |
429 请求受限 | 降低并发与频率,按 Retry-After(如有)等待,使用有上限的退避重试。 |
502 / 503 服务不可用 | 可能是网络、上游服务或调度容量问题。保存时间、模型、请求标识和脱敏错误,联系站点管理员。 |
| HTTP 200 但流中断 | 检查 SSE 错误和结束事件、客户端超时与网络断开,不能仅凭 HTTP 状态认定整次生成成功。 |
| 余额未知或查询失败 | 未知不等于 0。检查返回结果和服务状态,不要用缺失数据覆盖已有有效记录。 |
提交问题时提供
时间与时区、接口路径、协议、模型 ID、HTTP 状态、Request ID(如有)和脱敏后的错误消息。请勿发送完整密钥或包含隐私的完整对话。
接口速查
| 用途 | 方法与路径 |
|---|---|
| 可用模型 | GET /v1/models |
| Anthropic Messages | POST /v1/messages |
| OpenAI Chat Completions | POST /v1/chat/completions |
| OpenAI Responses | POST /v1/responses |
| 当前密钥用量 | GET /api/usage/token/ |
| 输入 Token 预估 | /v1/messages/count_tokens 当前未开放 |