快速开始
从充值、创建密钥到发出第一个对话请求,并确认这次调用的用量与费用。
本页带你完成一次真实调用:充值 → 创建密钥 → 调用 qwen3.8-flash → 查看用量与扣费。全程约 5 分钟。
准备工作#
- TokenToSea 账号。注册需要邀请码;注册时完成手机号验证。账号被停用或未完成手机号验证时,名下所有密钥都不能调用。
- 买家身份。密钥在控制台的「买家」身份下创建;卖家身份不能创建推理密钥。
- 可用余额。每次调用先按本次请求的上限从余额中预留金额,可用余额(余额减去未结算预留)不足时请求会被拒绝。
- 一个能发 HTTPS 请求的环境:命令行
curl,或 Python 3.8+,或 Node.js 18+。
只在服务器端使用密钥
api.tokentosea.com 不返回 CORS 响应头,浏览器页面无法直接调用。把密钥放在你自己的后端,由后端转发请求;不要把密钥写进前端代码、移动应用或代码仓库。
第 1 步:充值#
打开控制台 → 充值,选择金额并用微信扫码支付。支付成功后余额自动到账;对公转账需要平台人工核对后入账。
- 钱包以美元记账。微信支付按人民币付款,下单时固定汇率并显示入账的美元金额。
- 单笔充值 1–10,000 美元;微信付款码 30 分钟内有效。
第 2 步:创建密钥#
- 打开控制台 → 我的 Key,选择 新建密钥。
- 密钥类型选 全能密钥(模型 + 工具)或 模型密钥(仅模型)。快速开始用默认的「全部模型」范围即可。
- 按需设置限额与有效期(可留空,之后随时修改)。
- 复制并保存显示的完整密钥。格式为
sk-relay_加 64 位十六进制字符。明文只显示这一次,平台只保存摘要,丢失后只能新建。
把密钥放进环境变量:
export TOKENTOSEA_API_KEY="sk-relay_在这里粘贴完整密钥"第 3 步:发送第一个请求#
下面三个示例完全等价:同一个端点、同一个请求体,并都带上 Idempotency-Key。Python 示例使用 OpenAI 官方 SDK(pip install openai);Node.js 示例只用内置 fetch,无需安装依赖。
curl https://api.tokentosea.com/v1/chat/completions \
-H "Authorization: Bearer $TOKENTOSEA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"model": "qwen3.8-flash",
"messages": [
{"role": "system", "content": "你是简洁的中文助手。"},
{"role": "user", "content": "用三句话解释什么是向量检索。"}
],
"max_tokens": 512
}'import os
import uuid
from openai import OpenAI
client = OpenAI(
api_key=os.environ["TOKENTOSEA_API_KEY"],
base_url="https://api.tokentosea.com/v1",
max_retries=0, # 网络失败时按幂等键查询结果,不要让 SDK 自动换键重发
)
request_key = str(uuid.uuid4())
completion = client.chat.completions.create(
model="qwen3.8-flash",
messages=[
{"role": "system", "content": "你是简洁的中文助手。"},
{"role": "user", "content": "用三句话解释什么是向量检索。"},
],
max_tokens=512,
extra_headers={"Idempotency-Key": request_key},
)
print(completion.choices[0].message.content)
print("用量:", completion.usage)
print("幂等键:", request_key)// node quickstart.mjs(Node.js 18+)
import { randomUUID } from 'node:crypto';
const requestKey = randomUUID();
const response = await fetch('https://api.tokentosea.com/v1/chat/completions', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.TOKENTOSEA_API_KEY}`,
'Content-Type': 'application/json',
'Idempotency-Key': requestKey,
},
body: JSON.stringify({
model: 'qwen3.8-flash',
messages: [
{ role: 'system', content: '你是简洁的中文助手。' },
{ role: 'user', content: '用三句话解释什么是向量检索。' },
],
max_tokens: 512,
}),
});
const body = await response.json();
if (response.status === 202) {
console.log('结果仍在处理,稍后查询:', `/v1/results/${requestKey}`, body.status);
} else if (!response.ok) {
console.error('调用失败:', response.status, body.error?.code, body.error?.message ?? '');
} else {
console.log(body.choices[0].message.content);
console.log('用量:', body.usage);
}成功时返回 HTTP 200,响应体是厂商原生的 Chat Completions 结构,包含厂商报告的 usage。下面是一个节选示例,字段以实际返回为准:
{
"id": "chatcmpl-…",
"object": "chat.completion",
"model": "qwen3.8-flash",
"choices": [
{
"index": 0,
"message": { "role": "assistant", "content": "向量检索先把文本转换成向量……" },
"finish_reason": "stop"
}
],
"usage": { "prompt_tokens": 31, "completion_tokens": 86, "total_tokens": 117 }
}响应头 X-Request-Id 与 X-TokenToSea-Request-Id 回显本次的幂等键。排查问题时请记录它。
结果已生成但仍在结算时,接口会返回 202 和结果信封,这种情况很少见。Node.js 示例已按状态码处理;OpenAI SDK 会把 202 当作成功响应,此时 completion.choices 为 None。上线前请按用官方 SDK 接入检测 202 和结果未知的错误。
第 4 步:查看用量与费用#
推理响应只包含厂商的 usage,不包含 TokenToSea 的扣费金额。查看金额有两种方式:
- 控制台 → 账单:钱包的每笔入账与扣费流水。
- 控制台 → 模型测试:在网页中调用同一个型号,直接看到 token 用量、首字延迟、TPS 和本次扣费。
费用的计算方式见计费与结算。
改为流式输出#
在请求体中加入 "stream": true 即可通过 SSE 逐段接收输出;cURL 需加 -N 关闭缓冲。
curl -N https://api.tokentosea.com/v1/chat/completions \
-H "Authorization: Bearer $TOKENTOSEA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"model": "qwen3.8-flash", "messages": [{"role": "user", "content": "写一首四行短诗。"}], "max_tokens": 256, "stream": true}'流式响应的结束帧会在平台完成结算后才发出,详见流式输出。
常见问题排查#
| 现象 | 可能原因 | 处理 |
|---|---|---|
401 invalid_api_key | 没有带密钥,或密钥格式不完整 | 检查 Authorization: Bearer 后是否为完整的 sk-relay_… |
401 main_key_authorization_failed | 密钥不存在(包括误用了工具密钥 tts_tool_…)、已撤销、已删除、已过期,或账号不可用 | 在「我的 Key」确认状态,改用全能密钥或模型密钥 |
403 main_key_authorization_failed | 使用了不能调用模型的密钥,例如订单专用密钥 | 改用全能密钥或模型密钥 |
409 main_wallet_authorization_failed | 可用余额不足,或同时进行中的调用已达上限 | 充值,或等待进行中的调用结束 |
422 endpoint_not_verified / response_mode_not_verified | 该型号未开放这个接口或这种响应方式 | 在模型目录查看该型号已验收的接口 |
| 浏览器报 CORS 错误 | 从网页前端直接调用 | 改为由你的后端调用 |
完整列表见错误处理。
下一步#
- 认证与密钥:限定可调用的服务商或型号,设置限额与有效期。
- 用官方 SDK 接入:OpenAI SDK 与 Anthropic SDK 的完整配置。
- 选择型号:按任务、接口和价格挑选型号。
- 幂等与重试:上线前必读。