ToTeamLinks开发文档

API 接入文档

连接模型,管理用量,把时间留给你的想法。

从第一次请求开始。

用一个 API 地址和你自己的密钥,连接常用的 AI 模型。这里提供可以直接修改使用的请求示例,以及用量、额度与错误排查说明。

API Base URLhttps://toteamlinks.com/v1
  1. 创建你的 API 密钥

    打开控制台 → API 密钥,创建用于调用接口的密钥。这里需要的是 API 密钥,不是登录密码。

  2. 查看可用模型

    查询 GET /v1/models,将示例中的 YOUR_MODEL_ID 替换为列表中可用的模型 ID。

  3. 发送第一个请求

    选择工具支持的协议:Messages、Chat Completions 或 Responses。支持范围取决于模型和渠道。

运行示例前

终端示例使用 Bash、curl 与 jq。macOS 默认使用 zsh 时,可以先输入 bash。

地址与认证

SDK 的 Base URL 包含 /v1。直接调用 HTTP 接口时,避免重复拼接成 /v1/v1。

配置项填写内容
API Base URLhttps://toteamlinks.com/v1
OpenAI 兼容认证Authorization: Bearer YOUR_API_KEY
Messages 认证x-api-key: YOUR_API_KEY
anthropic-version: 2023-06-01

先设置环境变量

Bash · 初始化
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 · 模型列表
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 · POST /v1/messages
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 · POST /v1/chat/completions
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 · POST /v1/responses
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 · Messages 流式请求
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 格式的请求体。图片地址是占位符,请换成实际可读取的地址,并选择支持视觉输入的模型。

JSON · 图片输入请求体
{
  "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

Bash · 安装 Python SDK
python -m pip install openai
Python · Chat Completions
import 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

Bash · 安装 JavaScript SDK
npm install openai
JavaScript · 服务端示例(.mjs)
import 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 · GET /api/usage/token/
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。
额度单位不是美元或 Token

以上三个额度字段返回内部额度单位。转换为美元计价单位时,应除以 /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 MessagesPOST /v1/messages
OpenAI Chat CompletionsPOST /v1/chat/completions
OpenAI ResponsesPOST /v1/responses
当前密钥用量GET /api/usage/token/
输入 Token 预估/v1/messages/count_tokens 当前未开放

准备好开始了吗?

创建密钥,选择可用模型,发送你的第一个请求。

进入控制台