API Docs

¥…·充值
·

API 文档

兼容 OpenAI。将 base_url 设为 https://api.tokengp.com/v1,即可直接复用现有 SDK 代码。

在找商户管理 API?

本页介绍的是 终端用户推理 API —— 即对 /v1/* — 通过任意兼容 OpenAI 的 SDK 调用。若您是白标租户管理员,希望以编程方式管理品牌、定价、财务或自定义域名,请使用独立的 商户管理 API:token 前缀 sk-mgmt-*,base path /api/v1/merchant/*。请在 Console 的 API 密钥 中签发 token;可浏览的 OpenAPI 文档位于 admin.tokengp.com/api/v1/merchant/docs

快速开始

一个 chat completions 调用 —— 选择您熟悉的客户端。

curl https://api.tokengp.com/v1/chat/completions \
  -H "Authorization: Bearer $TOKENGP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3.8-max",
    "messages": [
      {"role": "user", "content": "Hello!"}
    ]
  }'

鉴权

所有端点均要求在 Authorization 请求头中携带 API 密钥:

Authorization: Bearer sk-tokengp-<your-key>
  • • 密钥在 /keys 页面创建,且仅展示一次 —— 请妥善保存。
  • • 创建密钥时可选配置单密钥消费上限、RPM 速率限制、可用模型名单与来源 IP 白名单。设置了 IP 白名单后,仅名单内的 IPv4/CIDR 来源可调用(否则返回 403);留空则不限制来源 IP。
  • • 若密钥泄漏,在同一页面立即吊销;吊销即时生效。
GET/v1/models

列出模型

返回当前账户可调用的模型目录。即将上线和已停用的模型会被过滤掉。

示例

curl https://api.tokengp.com/v1/models \
  -H "Authorization: Bearer $TOKENGP_API_KEY"
  • 每条记录都带有 OpenAI 风格的字段(id、object、created、owned_by),并额外包含 display_name、input_price_per_1m、output_price_per_1m。大多数 OpenAI SDK 会忽略未知字段。
GET/v1/models/{id}

获取单个模型

按 id 查询单个模型。部分 SDK 会在客户端初始化时调用此端点校验模型名是否有效。

示例

curl https://api.tokengp.com/v1/models/qwen3.8-max \
  -H "Authorization: Bearer $TOKENGP_API_KEY"
  • 若 id 未知或已停用,返回 404 model_not_found。
POST/v1/chat/completions

对话补全

兼容 OpenAI 的 chat completions 端点。支持流式(SSE)与非流式两种模式。token 用量在上游计费,您的余额会在每次请求结束时扣减。

请求体

{
  "model": "qwen3.8-max",
  "messages": [
    {"role": "system", "content": "You are concise."},
    {"role": "user", "content": "Explain JWT in one sentence."}
  ],
  "max_tokens": 256,
  "temperature": 0.2,
  "stream": false
}

示例

curl https://api.tokengp.com/v1/chat/completions \
  -H "Authorization: Bearer $TOKENGP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3.8-max",
    "messages": [{"role":"user","content":"hi"}],
    "max_tokens": 32
  }'
  • 如需流式响应,请设置 "stream": true。每个 SSE 事件形如 "data: {...}",承载一个 OpenAI 风格的 chunk,其中 "choices[0].delta.content" 为增量文本,最后一个非 DONE chunk 会带上 "choices[0].finish_reason"。请持续消费,直到读到 "data: [DONE]"。
  • Vision 与 tool / function calling 会透传到支持这些能力的上游模型(如 qwen-vl-*、GPT 系列)。详见下方示例。
  • 在调用前会按最坏情况(input + max_tokens × output 价格)预扣余额。余额不足返回 402。
  • 推理模型(如 DeepSeek R1)会将思维链按 output_tokens 计费 —— 您看到的 usage.completion_tokens 可能超过可见消息的长度。思维链本身不会在响应中暴露,与 OpenAI o 系列保持一致。

Tool / function calling

请求体

{
  "model": "qwen3.8-max",
  "messages": [
    {"role": "user", "content": "What's the weather in Paris?"}
  ],
  "tools": [{
    "type": "function",
    "function": {
      "name": "get_weather",
      "description": "Get the current weather for a city.",
      "parameters": {
        "type": "object",
        "properties": {"city": {"type": "string"}},
        "required": ["city"]
      }
    }
  }]
}
  • 由模型自主决定是否调用工具。一旦调用,响应的 "choices[0].message.tool_calls" 会列出函数名与 JSON 参数,"finish_reason" 为 "tool_calls"。请将工具执行结果以 {"role":"tool", ...} 的消息形式继续发起后续请求。
  • 并非所有上游都支持工具调用。当前 Qwen 系列、DeepSeek 以及大多数 OpenAI 兼容模型支持;小型开源模型往往不支持。

Vision(图像输入)

请求体

{
  "model": "qwen3.8-max",
  "messages": [{
    "role": "user",
    "content": [
      {"type": "text", "text": "What is in this image?"},
      {"type": "image_url", "image_url": {"url": "https://example.com/cat.jpg"}}
    ]
  }]
}
  • 将每条 user 消息的 "content" 由字符串改为分段数组。"image_url" 同时接受 HTTPS URL 与 "data:image/<mime>;base64,<...>" 形式的 data URL。
  • 请选用支持视觉的模型(如 qwen3.8-max、qwen-vl-plus)。向纯文本模型发送图像的行为取决于上游 —— 可能返回 400,也可能静默丢弃图像。
POST/v1/messages

Anthropic Messages(兼容)

Anthropic Messages API 兼容端点。基于 Anthropic SDK 的工具(Claude Code、ZCode 等)把 base URL 指向这里即可直接使用 TokenGP。请求在内部翻译为 chat-completions 处理,鉴权、模型名单、限速、计费与 OpenAI 端点完全一致。

请求体

{
  "model": "qwen3.8-max",
  "max_tokens": 1024,
  "system": "You are concise.",
  "messages": [
    {"role": "user", "content": "Explain JWT in one sentence."}
  ],
  "stream": false
}

示例

curl https://api.tokengp.com/v1/messages \
  -H "x-api-key: $TOKENGP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3.8-max",
    "max_tokens": 256,
    "messages": [{"role":"user","content":"hi"}]
  }'
  • 鉴权同时接受 Anthropic 风格的 "x-api-key: <key>" 和 "Authorization: Bearer <key>" —— 用的都是同一把 sk-tokengp-* 密钥。
  • 流式输出为标准 Anthropic SSE 事件(message_start、content_block_delta、message_delta、message_stop)。工具调用与图像输入双向翻译。
  • 请求中的 "thinking" 参数会被接受但不转发 —— 模型是否思考由上游自行决定。会输出推理过程的模型(如 DeepSeek)以标准 Anthropic "thinking" 内容块返回。
  • POST /v1/messages/count_tokens 返回本地估算值(约 4 字符/token),不打上游、不计费。

在 ZCode 中使用 TokenGP

请求体

// %USERPROFILE%\.zcode\cli\config.json  (macOS/Linux: ~/.zcode/cli/config.json)
{
  "provider": {
    "tokengp": {
      "kind": "openai-compatible",
      "name": "TokenGP",
      "options": {
        "baseURL": "https://api.tokengp.com/v1",
        "apiKey": "sk-tokengp-...",
        "apiKeyRequired": true,
        "includeUsage": true
      },
      "models": {
        "qwen3.8-max": { "name": "Qwen3.8 Max" },
        "deepseek-v4-pro":   { "name": "DeepSeek V4 Pro" }
      }
    }
  },
  "model": { "main": "tokengp/qwen3.8-max", "lite": "tokengp/deepseek-v4-pro" }
}
  • ZCode 桌面版:模型设置 → 添加供应商 → API 格式选 "Chat Completions",Base URL 填 "https://<api-host>/v1"(必须带 /v1 后缀),API Key 填 sk-tokengp-...,再从 /models 页或 GET /v1/models 原样复制模型 id 加入模型列表。
  • ZCode CLI(无界面):按上方示例创建 config.json。模型引用必须写成 "供应商id/模型id" 格式。
  • 给模型配置思考档位后,ZCode 会改走 /v1/messages 而非 /chat/completions —— 本端点上线后两条路都通。
POST/v1/embeddings

向量

为一个或多个字符串生成向量。此端点仅接受 modality=embedding 的模型(对话模型会返回 400 wrong_endpoint)。

请求体

{
  "model": "text-embedding-v3",
  "input": "Hello, world."
}

示例

curl https://api.tokengp.com/v1/embeddings \
  -H "Authorization: Bearer $TOKENGP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "text-embedding-v3",
    "input": ["hello", "world"]
  }'
  • input 支持单个字符串或字符串数组。
  • 仅按 input token 计费(output_tokens = 0)。
POST/v1/images/generations

图像生成

根据文本提示词生成图像。TokenGP 封装了阿里云的异步任务 API,因此客户端看到的是同步响应 —— 典型延迟 3-10 秒。按张计费,与分辨率无关。

请求体

{
  "model": "qwen-image-plus",
  "prompt": "a red apple on a wooden table",
  "n": 1,
  "size": "1024x1024"
}

示例

curl https://api.tokengp.com/v1/images/generations \
  -H "Authorization: Bearer $TOKENGP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen-image-plus",
    "prompt": "a red apple on a wooden table",
    "n": 1,
    "size": "1024x1024"
  }'
  • 响应结构:{"created":<ts>,"data":[{"url":"<signed-oss-url>","revised_prompt":"..."}]}。
  • n 最多为 4。可选尺寸取决于具体模型;1024x1024 各模型均支持。
  • URL 是临时签名的 OSS 链接 —— 请在约 1 小时内下载并自行托管。
  • 内部轮询超时为 90 秒;过长的任务返回 504 upstream_timeout。

错误码

所有错误均以以下 JSON 结构返回:{"error":{"code":"...","message":"...","type":"..."}}。HTTP 状态码与 error.code 的对应关系如下表。

type 字段按家族对错误码归类,便于您据此分支处理,而无需逐个匹配名称:auth_error(密钥问题)、invalid_request_error(请求输入)、rate_limit(RPM 上限)、billing_error(余额 / 上限)、upstream_error(上游服务商)、server_error(少见 —— TokenGP 自身问题)。

HTTPerror.code触发场景
400bad_request缺少必填字段,或请求体格式有误。请查看 error.message 获取详情。
400wrong_endpoint模型 modality 与端点不匹配(例如把对话模型用于 /v1/embeddings)。
401missing_key缺少 Authorization 请求头。请发送 "Authorization: Bearer sk-tokengp-..."。
401invalid_key密钥不存在或已吊销。请到 /keys 重新创建。
402insufficient_balance最坏情况成本超过账户余额。请前往 /recharge 充值。
402cap_reached已达到单密钥消费上限(balanceCapUsd)。请调高上限或更换新密钥。
403disabledAPI 密钥被管理员停用。
403expiredAPI 密钥的 expiresAt 已过期。
403model_not_allowed该密钥设置了可用模型名单,所请求的模型不在其中。请到 /keys 编辑名单,或改用未限制的密钥。
404model_not_found未知的模型 id。请调用 /v1/models 查看可用列表。
429rate_limit_exceeded触发了单密钥的 RPM 速率限制。请降低请求速率或拆分到多个密钥。
429tenant_rate_limit_exceeded触发了租户级 RPM 上限 —— 该上限是租户下所有密钥的合计。与上方单密钥 429 不同。请联系租户管理员调高上限。
500pricing_misconfigured该模型在 TokenGP 侧缺少价格配置(少见的管理端 bug)。请稍后重试;如持续出现,请将模型 id 告知支持。
502upstream_unreachable无法连接上游服务商。通常是临时性问题 —— 请配合退避策略重试。
502upstream_error上游返回错误。响应 message 中包含上游详情及 upstream_status。
502image_generation_failed上游图像任务未成功(返回 FAILED 或为空)。请重试、调整提示词,或更换图像模型。
503upstream_unavailable该渠道下所有上游 token 均处于冷却或停用状态。TokenGP 已感知到该问题。
504upstream_timeout图像生成耗时超过 90 秒。可再次提交,相同提示词可能成功。

速率限制与配额

  • 单密钥 RPM:每个 API 密钥都有每分钟请求数上限(默认 60)。超出后返回 429 rate_limit_exceeded。可在 /keys 页面调整单密钥的上限。
  • 租户级 RPM 上限:在白标租户中,租户管理员可设置租户级 RPM 上限,作用于该租户下所有密钥的合计请求。触发时返回 429 并附带 tenant_rate_limit_exceeded —— 与单密钥 429 区分开,便于您在重试逻辑中分别处理。此时增加密钥数无法绕过;请联系租户管理员调高上限。
  • 账户余额:每次成功请求都会从您的人民币余额扣费。余额不足返回 402;请前往 /recharge 充值。
  • 单密钥消费上限:可选的 balanceCapUsd 在累计消费达到上限后停用该密钥。适合在客户端 App 中嵌入短期密钥的场景。
  • 上游冷却:若某渠道下所有上游 token 都处于冷却或异常状态,gateway 将返回 503 upstream_unavailable。请配合退避策略重试。
© 2026 TokenGP深圳市星驰通讯器材有限公司粤ICP备2024260232号-3客服与举报:support@tokengp.com