如何认证

/v1/* 兼容 API(包括 GET /v1/models)需要用户 API Key 鉴权。公开模型列表请使用 /api/v1/public/model/list。

TokenMP 同时支持 OpenAI 常用的 Authorization Bearer 与 Anthropic 客户端常用的 x-api-key;如果两个 Header 同时存在,服务端会优先使用 x-api-key。

Authorization: Bearer sk-xxx...
x-api-key: sk-xxx...

支持的 API 端点

方法路径说明
GET/v1/models模型列表
POST/v1/chat/completionsOpenAI Chat 兼容接口
POST/v1/messagesAnthropic Messages 兼容接口
POST/v1/responsesResponses 兼容接口
POST/v1/images/generationsOpenAI Images 兼容图片生成接口

发送一条 Chat 请求

{
  "model": "glm-5.1",
  "messages": [
    {"role": "system", "content": "你是一个有帮助的助手。"},
    {"role": "user", "content": "你好!"}
  ],
  "stream": false,
  "temperature": 0.7,
  "max_tokens": 2048
}

生成一张图片

POST /v1/images/generations 使用 OpenAI Images 兼容格式,适用于 Panel 中已启用且声明图片生成能力的模型。

模型 ID、尺寸、返回格式和可用参数以 /v1/models、当前路由配置和上游供应商能力为准。

// Request
{
  "model": "image-generation-model",
  "prompt": "一只橘猫坐在赛博朋克风格的屋顶上",
  "size": "1024x1024",
  "n": 1
}

// Response
{
  "created": 1765699200,
  "data": [
    {
      "url": "https://example.com/generated-image.png"
    }
  ]
}

模型上下文与输出上限

下面是 TokenMP 文档建议的模型能力标注。上下文窗口是输入、历史、工具结果和预留输出的总预算;max_tokens / max output 是单次生成上限,实际请求还会受上游、路由和工具客户端限制。

长上下文不等于每次都应塞满上下文。Agent 工具通常还需要给工具调用、压缩摘要和最终输出预留空间;如果出现 context length 或 max_tokens 报错,请减少输入文件、降低 max_tokens 或切换更大上下文模型。

模型上下文窗口最大输出说明
GLM-5.1200K(TokenMP 按 202752 配置)128K(131072)适合长代码库阅读、复杂重构和多轮 Agent 任务;不同上游可能只展示 200K。
GLM-5 / GLM-5-Turbo200K128K作为 GLM 5 系列通用默认值;Turbo 更适合高频和低延迟任务。
MiMo-V2.5-Pro1M(常见精确值 1048576)128K(131072)超长上下文模型,适合整仓库检索、长链路排障和长会话。
MiMo-V2.51M128K同属 MiMo 2.5 长上下文模型;具体能力以当前路由配置为准。
MiMo-V2-Flash256K64K更偏低成本/高并发;长任务前确认当前 Panel 可用模型 ID。

模型限制资料来源

范围来源说明
GLM-5 / GLM-5.1 / GLM-5-TurboZ.AI 官方模型文档官方按 200K 上下文、128K 输出描述;TokenMP 对 GLM-5.1 可按精确窗口 202752 标注。
MiMo-V2.5 / MiMo-V2.5-Pro / MiMo-V2-Flash小米 MiMo API 模型页与 MiMo-V2.5-Pro 模型卡MiMo-V2.5-Pro 常见精确上下文为 1048576,最大输出为 131072。
工具实际请求TokenMP /v1/models 与 Panel 模型配置最终可用模型 ID、上下文窗口和 max_tokens 以当前 TokenMP 路由配置和上游响应为准。

客户端错误 (4xx)

项目内稳定错误码以 internal/errorcodes/codes.go 为准。Management API 在 envelope.error_code 返回;/v1/* 协议兼容接口在 OpenAI 风格 error.code 返回;请求日志保存 request_logs.error_code。

上游供应商原始错误不会直接作为平台 error_code 暴露;管理员排障字段使用 provider_error_code、provider_error_type 和 provider_http_status 保存原始信号。HTTP 列为常见终态,少数上游归一化错误会保留上游实际状态码。

兼容 OpenAI 的 error.type 仍可能是 invalid_request_error、authentication_error、insufficient_balance、rate_limit_exceeded、upstream_error 或 server_error;客户端判断业务原因时应优先读取稳定平台码 error.code / error_code。

错误码HTTP说明
INVALID_PARAM400JSON 解析失败、缺少必填字段、字段取值非法或模型选择器格式错误。
UNAUTHORIZED401JWT、API Key 或 BOT Key 缺失、无效、过期或已停用。
FORBIDDEN403当前账号无权执行操作,例如非管理员访问管理接口。
NOT_FOUND404请求的用户、模型、供应商、计划、Key、请求日志或兑换码不存在。
CONFLICT409资源状态冲突,例如账号、模型、路由组或配置重复。
RATE_LIMITED429登录/注册限流、API Key 固定窗口限流,或客户端取消风控临时限制。
CAPTCHA_VERIFICATION_FAILED400验证码校验失败,用户需要重新完成验证。
EMAIL_CODE_REQUIRED400注册或验证流程缺少邮件验证码。
INVALID_EMAIL_CODE400邮件验证码错误或已过期。
QUOTA_EXCEEDED402Token 套餐或余额不足;客户端不应盲目自动重试。
CLIENT_CANCELED499客户端主动断开连接、超时或取消请求;请求日志通常显示未扣费。
MODEL_NOT_FOUND404基础模型不存在、未启用或当前用户不可用。
ROUTE_GROUP_NOT_FOUND404model:group 中的 route group 不存在或不可用。
PROVIDER_NOT_FOUND404model@provider 中的 provider slug 不存在或不可用。
MODEL_IMAGE_INPUT_UNSUPPORTED400请求包含图片输入,但当前模型未声明 vision 能力。
UNSUPPORTED_STREAM_CONVERSION400当前协议转换不支持请求的流式模式。
UPSTREAM_INVALID_REQUEST400上游判定请求参数非法,需检查 messages、tools、max_tokens 等字段。
UPSTREAM_IMAGE_FORMAT_INVALID400上游判定图片格式不支持、data URL/base64 非法或图片内容无法解码。
UPSTREAM_REASONING_STATE_REQUIRED400上游 reasoning/thinking 模式要求回传上一轮思考状态。
UPSTREAM_CONTEXT_LENGTH_EXCEEDED400输入、历史、工具结果或最大输出超过模型上下文窗口;减少输入或降低 max_tokens。
UPSTREAM_CONTENT_BLOCKED400 / 403 / 421上游内容安全、敏感词或 policy 拦截。
UPSTREAM_RATE_LIMITED429上游 QPS、RPM、TPM 或并发限制触发。
UPSTREAM_QUOTA_EXCEEDED402 / 429上游额度、余额、用量或 credit 不足。
UPSTREAM_BILLING_REQUIRED402 / 403上游计费未开通、欠费或服务未开通。
UPSTREAM_PLAN_EXPIRED403上游套餐或订阅已过期。
UPSTREAM_PLAN_MODEL_DENIED403上游套餐不包含或不允许调用当前模型。
UPSTREAM_DUPLICATE_REQUEST409上游判定重复请求或幂等冲突。

服务端与上游错误 (5xx)

错误码HTTP说明
CAPTCHA_ERROR500验证码服务未配置或校验服务异常,通常需要管理员检查配置。
EMAIL_SEND_ERROR500验证邮件服务未配置或发送失败。
SERVICE_RESTARTING503服务部署或重启进入 draining,新请求会带 Retry-After 提示稍后重试。
NO_AVAILABLE_UPSTREAM502模型和选择器合法,但没有匹配协议、endpoint、active key 或 mapping 的可用上游。
NO_LEASE_CAPACITY502候选上游 Key 并发容量已满,暂时无可租用通道。
UPSTREAM_ERROR502上游请求失败、读取响应失败、协议转换失败等泛上游错误。
UPSTREAM_HTTP_ERROR上游状态 / 502上游返回非 2xx 且无法归一化到更具体平台码时的兜底。
UPSTREAM_STREAM_ERROR502 / 流式事件流式读取过程中上游返回错误或异常中断。
INTERNAL_ERROR500数据库、加解密、构造请求、内部流程等服务端异常。
UPSTREAM_AUTH_INVALID401 / 502上游 API Key、Token 或签名无效;通常需要管理员检查 provider key。
UPSTREAM_PERMISSION_DENIED403 / 502上游账号、区域、workspace、模型权限或安全策略拒绝。
UPSTREAM_MODEL_NOT_FOUND404 / 502上游模型 ID、endpoint 或部署不存在。
UPSTREAM_MODEL_NOT_SUPPORTED400 / 404 / 502上游模型不支持当前接口、能力或请求模式。
UPSTREAM_OVERLOADED503上游服务繁忙、队列满或临时不可用。
UPSTREAM_TIMEOUT408 / 504 / 502上游响应超时、deadline exceeded 或轮询超时。
UPSTREAM_INTERNAL_ERROR500 / 502上游内部错误或 5xx 服务异常。

兑换码错误

错误码HTTP说明
REDEEM_CODE_INACTIVE400兑换码未启用或已被管理员停用。
REDEEM_CODE_EXPIRED400兑换码已过期。
REDEEM_CODE_EXHAUSTED400兑换码已达到最大兑换次数。
REDEEM_CODE_ALREADY_REDEEMED409当前用户已兑换过该兑换码。
REDEEM_CODE_PLAN_DOWNGRADE400低等级 Coding Plan 兑换码不能覆盖当前更高等级套餐。
REDEEM_CODE_PLAN_INACTIVE400兑换码关联的套餐已停用。