BOT KEY 适用场景

BOT KEY 面向客服机器人、监控脚本和自动化任务。它不依赖网页登录态,网页退出登录不会影响已创建的 BOT KEY。

BOT KEY 明文以 bot- 开头,只在创建成功时显示一次。请保存到服务端环境变量或密钥管理器,不要写入浏览器存储、公开日志、工单截图或 Prompt。

  • 用户 BOT:只能查询当前 owner 自己的数据,适合客户反馈机器人。
  • 管理 BOT:只有 active admin owner 才能查询全站数据,适合内部运营或监控机器人。
  • 7 天滑动过期:每次成功调用会刷新最后使用时间,连续 7 天无操作后自动失效。

如何鉴权

所有 BOT API 都使用 Bearer BOT KEY,不使用网页登录 JWT。

如果返回 401,通常是 BOT KEY 缺失、错误、被禁用或超过 7 天未使用;如果返回 403,通常是当前 BOT KEY 权限不足。

Authorization: Bearer bot-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Content-Type: application/json

创建与管理 BOT KEY

BOT KEY 的创建、列表、启停、重置和删除都通过登录用户的 Panel 管理接口完成,调用这些接口时使用网页登录 JWT,不使用 bot- BOT KEY。普通用户只能创建用户 BOT;管理员可以选择 user 或 admin scope。

创建和重置响应中的 key 是完整 BOT KEY 明文,只展示一次;列表、启停和删除响应只返回脱敏元数据,不会再次返回明文。请立即保存到服务端环境变量或密钥管理器,丢失后只能重置或重新创建。

不要把完整 BOT KEY 写入前端代码、localStorage、公开日志、Prompt、截图或工单。管理接口需要用户登录态;BOT 业务接口才使用 Authorization: Bearer bot-...。

接口请求 body返回与说明
GET /api/v1/user/keys/bot/list?page=1&limit=20分页列出当前账号的 BOT KEY 元数据,包括 id、name、scope、status/is_active、last_used_at、created_at、updated_at;不返回 key 明文或 key_hash。
POST /api/v1/user/keys/bot/create{"name":"客服机器人","scope":"user"} 或 {"name":"运维机器人","scope":"admin"}创建 BOT KEY 并返回元数据和一次性 key 明文(bot-...)。admin scope 仅管理员可用;普通用户传 admin 会被拒绝或降为 user,以后端校验为准。
POST /api/v1/user/keys/bot/toggle{"id":"bot_key_uuid","status":"active"} 或 {"id":"bot_key_uuid","status":"disabled"}启用或停用指定 BOT KEY。停用后现有机器人调用 BOT API 会返回 401,重新启用后可继续使用同一个 key。
POST /api/v1/user/keys/bot/reset{"id":"bot_key_uuid"}轮换指定 BOT KEY,旧 key 立即失效;响应返回新的 bot- 明文且同样只显示一次。
POST /api/v1/user/keys/bot/delete{"id":"bot_key_uuid"}删除指定 BOT KEY。删除后不可恢复,调用端必须改用其他 key 或重新创建。

分页与时间筛选

参数位置是否必填取值说明
pagequery正整数列表页码,默认 1。
limitquery1-100每页数量,默认 20;超过 100 会被裁剪为 100。
fromqueryYYYY-MM-DD 或 RFC3339开始时间,用于 usage 和 request 列表。
toqueryYYYY-MM-DD 或 RFC3339结束时间;YYYY-MM-DD 会按次日 00:00 作为排他上界。

账户与概览

用户 BOT 面向一个账号,只能读取 owner 自己的状态、额度、日志和设置。

接口说明
/api/v1/bot/user/meGET — 查看 owner 和当前 BOT KEY 脱敏信息。
/api/v1/bot/user/statusGET — 检查账号状态和 BOT KEY 可用性。
/api/v1/bot/user/quotaGET — 查询 token、coding、image 余额和窗口刷新时间。
/api/v1/bot/user/overviewGET — 读取用户 Panel 首页概览。
/api/v1/bot/user/usageGET — 查询账单和用量流水。Query: page, limit, ledger_type, billing_plan, query, request_model/model_name/model, from, to。

密钥与模型

接口说明
/api/v1/bot/user/key/listGET — 列出用户 API KEY 脱敏信息。Query: page, limit。
/api/v1/bot/user/key/togglePOST — 启用或禁用一个用户 API KEY。Body: {"id":"api_key_uuid","status":"active"} 或 {"id":"api_key_uuid","status":"disabled"}。
/api/v1/bot/user/model/listGET — 查询用户可见模型;status 可为 active 或 disabled。Query: page, limit, query, status。
/api/v1/bot/user/route/listGET — 查询可调用模型路由和健康指标;window 支持 24h、7d、30d。Query: window, capability, query。

请求日志

接口说明
/api/v1/bot/user/request/listGET — 查询用户自己的请求日志;query 支持请求 ID、Trace ID、日志 ID、owner 用户 ID 或 owner 邮箱模糊匹配;返回会隐藏上游内部信息。Query: page, limit, query, model_name/model, protocol, billing_plan, status, from, to。
/api/v1/bot/user/request/traceGET — 按 request_id、trace_id 或 request log id 查询单条链路。Query: query(必填)。

设置与兑换

接口说明
/api/v1/bot/user/settingGET — 读取扣费偏好设置。
/api/v1/bot/user/setting/updatePOST — 更新 LLM 扣费偏好;preferred_billing 只能是 coding 或 token。Body: {"preferred_billing":"coding","fallback_enabled":true}。
/api/v1/bot/user/redeemPOST — 为当前 owner 兑换兑换码;code 必填。Body: {"code":"REDEEM-CODE"}。

常用筛选字段

  • ledger_type 支持逗号分隔:charge、recharge、reserve、refund、adjustment、plan_grant、plan_upgrade、plan_renew、plan_replace。
  • billing_plan 支持 coding、token、image。
  • request status 支持 success、failed、pending。
  • protocol 常见值:openai_chat、openai_responses、anthropic_messages。
  • route window 支持 24h、7d、30d;空值或非法值会按 24h 处理。

重点参数详解

下面是 BOT 最常用参数的实际填写方式。客服机器人优先使用 query、request_id、trace_id、user_id 这类稳定字段,不要让用户提交密钥或内部配置。

参数接口说明与示例
queryrequest/list、request/trace、usage模糊搜索请求 ID、Trace ID、request log id、用户 ID、owner 邮箱、ledger id、模型名或 reason;trace 接口中必填。示例:req_abc123、trace_abc123、thesumwai@gmail.com、账单流水 ID、glm-5.1。
model_name / modelrequest/list、usage按请求模型名过滤;request_model、model_name、model 在 usage 中都可作为模型过滤别名。示例:glm-5、glm-4.5、gpt-4o:fast。
ledger_typeusage逗号分隔用量流水类型;客服常用 charge 查扣费,recharge 查充值,plan_* 查兑换码套餐到账。示例:charge,recharge,plan_grant。
billing_planusage、request/list按扣费计划过滤;普通文本模型通常是 coding 或 token,图片生成是 image。示例:coding、token、image。
statusrequest/list、model/list请求日志状态使用 success/failed/pending;模型列表状态使用 active/disabled。示例:success、failed、pending;active、disabled。
from / tousage、request/list按时间范围过滤;YYYY-MM-DD 的 to 会包含当天整天,因为服务按次日 00:00 做排他上界。示例:from=2026-05-01&to=2026-05-24。
windowroute/list路由健康统计窗口;用于回答某模型最近 24 小时或 7 天的成功率、耗时、可用路由。示例:24h、7d、30d。
capabilityroute/list按模型能力过滤路由列表;具体能力名称以平台模型配置为准。示例:chat、responses、messages、image。
user_idadmin/user/*、admin/request/list管理 BOT 的 detail/quota/usage 需要完整用户 ID;request/list 和 user/request 支持用户 ID 片段模糊匹配。示例:550e8400-e29b-41d4-a716-446655440000 或 446655。
codeuser/redeem兑换码明文。服务会 trim 并标准化;为空会返回 400 INVALID_PARAM 或 404 NOT_FOUND。示例:BETATEST、WELCOME-2026。

用户 BOT 可复制示例

下面示例假设已设置 TOKENMP_BASE_URL=https://api.tokenmp.cn 和 TOKENMP_BOT_KEY=bot-...。

# 1. 检查账号和 BOT KEY 状态
curl -sS "$TOKENMP_BASE_URL/api/v1/bot/user/status" \
  -H "Authorization: Bearer $TOKENMP_BOT_KEY"

# 2. 查询余额、套餐、窗口剩余额度
curl -sS "$TOKENMP_BASE_URL/api/v1/bot/user/quota" \
  -H "Authorization: Bearer $TOKENMP_BOT_KEY"

# 3. 查最近失败请求
curl -sS "$TOKENMP_BASE_URL/api/v1/bot/user/request/list?status=failed&page=1&limit=10" \
  -H "Authorization: Bearer $TOKENMP_BOT_KEY"

# 4. 按用户给出的请求 ID 或 Trace ID 定位日志
curl -sS "$TOKENMP_BASE_URL/api/v1/bot/user/request/trace?query=req_abc123" \
  -H "Authorization: Bearer $TOKENMP_BOT_KEY"

# 5. 查某个模型最近 7 天路由健康
curl -sS "$TOKENMP_BASE_URL/api/v1/bot/user/route/list?query=glm-5&window=7d" \
  -H "Authorization: Bearer $TOKENMP_BOT_KEY"

# 6. 查本月 token 扣费流水
curl -sS "$TOKENMP_BASE_URL/api/v1/bot/user/usage?ledger_type=charge&billing_plan=token&from=2026-05-01&to=2026-05-24" \
  -H "Authorization: Bearer $TOKENMP_BOT_KEY"

兑换码请求示例

当用户明确提供兑换码时,客服机器人可以用用户 BOT 代为兑换。成功响应的 data 会包含 redeem_code_id、redeem_code_name、token_amount、rewards、ledger 和 redeemed_at。

Coding Plan 兑换会按套餐等级处理:低等级不能覆盖当前更高等级套餐,会返回 REDEEM_CODE_PLAN_DOWNGRADE;高等级兑换低等级时按升级处理;同等级兑换会自动续期。升级时会根据旧套餐剩余价值折算补偿天数,核心规则是同时参考时间剩余比例和月请求剩余比例,折算后补到新套餐上,最终有效期以新套餐默认时长加补偿天数为准。

HTTPerror_code说明
404NOT_FOUND兑换码不存在,或提交后为空。
400REDEEM_CODE_INACTIVE兑换码已禁用或删除。
400REDEEM_CODE_EXPIRED兑换码已过期。
400REDEEM_CODE_EXHAUSTED兑换次数已用完。
409REDEEM_CODE_ALREADY_REDEEMED当前用户已经兑换过该兑换码。
400REDEEM_CODE_PLAN_DOWNGRADE兑换会降级当前套餐,因此被拒绝。
400REDEEM_CODE_PLAN_INACTIVE兑换码关联的套餐已停用。
curl -sS "https://api.tokenmp.cn/api/v1/bot/user/redeem" \
  -H "Authorization: Bearer $TOKENMP_BOT_KEY" \
  -H "Content-Type: application/json" \
  --data '{"code":"REDEEM-CODE"}'

设置更新示例

preferred_billing 控制 LLM 请求优先使用 coding 还是 token;fallback_enabled=true 表示首选计划额度不足时允许自动切换到另一个 LLM 计费计划。

# 优先使用 Coding Plan,并允许额度不足时自动切到 Token Plan
curl -sS "https://api.tokenmp.cn/api/v1/bot/user/setting/update" \
  -H "Authorization: Bearer $TOKENMP_BOT_KEY" \
  -H "Content-Type: application/json" \
  --data '{"preferred_billing":"coding","fallback_enabled":true}'

# 优先按 Token 余额扣费,并关闭自动切换
curl -sS "https://api.tokenmp.cn/api/v1/bot/user/setting/update" \
  -H "Authorization: Bearer $TOKENMP_BOT_KEY" \
  -H "Content-Type: application/json" \
  --data '{"preferred_billing":"token","fallback_enabled":false}'

平台概览

管理 BOT 可查询全站数据,只应在内部监控和运营机器人中使用。

接口说明
/api/v1/bot/admin/meGET — 查看 admin owner 和当前 BOT KEY 脱敏信息。
/api/v1/bot/admin/statusGET — 检查平台状态和安全配置摘要。
/api/v1/bot/admin/overviewGET — 读取全站概览指标。
/api/v1/bot/admin/usageGET — 读取全站趋势。Query: days(只能是 1、7、15,默认 7)。

模型与路由

接口说明
/api/v1/bot/admin/model/listGET — 列出全站模型目录。Query: page, limit, query, status。
/api/v1/bot/admin/route/listGET — 读取路由工作台聚合数据。Query: window, capability, query。

请求日志

接口说明
/api/v1/bot/admin/request/listGET — 查询全站请求日志;query 支持用户邮箱/用户 ID 模糊匹配,user_id 支持用户 ID 片段模糊过滤;会包含管理侧内部排障字段。Query: page, limit, query, user_id, model_name/model, provider_id, protocol, billing_plan, status, from, to。
/api/v1/bot/admin/request/traceGET — 按请求 ID 或 Trace ID 查询全站链路。Query: query(必填)。

用户管理

接口说明
/api/v1/bot/admin/user/detailGET — 查询指定用户资料。Query: user_id(必填)。
/api/v1/bot/admin/user/quotaGET — 查询指定用户额度。Query: user_id(必填)。
/api/v1/bot/admin/user/usageGET — 查询指定用户用量流水。Query: user_id(必填), page, limit, ledger_type, billing_plan, query, request_model/model_name/model, from, to。
/api/v1/bot/admin/user/requestGET — 按必填 user_id 片段模糊查询匹配用户的请求日志,并展示管理侧内部字段;query 也可匹配用户邮箱/用户 ID。Query: user_id(必填), page, limit, query, model_name/model, provider_id, protocol, billing_plan, status, from, to。

管理 BOT 可复制示例

下面示例假设已设置 TOKENMP_ADMIN_BOT_KEY=bot-...。管理 BOT 会看到更多内部排障字段,请只在内部系统中使用。

# 1. 查看平台状态和安全配置摘要
curl -sS "$TOKENMP_BASE_URL/api/v1/bot/admin/status" \
  -H "Authorization: Bearer $TOKENMP_ADMIN_BOT_KEY"

# 2. 查看最近 7 天全站用量趋势
curl -sS "$TOKENMP_BASE_URL/api/v1/bot/admin/usage?days=7" \
  -H "Authorization: Bearer $TOKENMP_ADMIN_BOT_KEY"

# 3. 按 Trace ID 查全站链路
curl -sS "$TOKENMP_BASE_URL/api/v1/bot/admin/request/trace?query=trace_abc123" \
  -H "Authorization: Bearer $TOKENMP_ADMIN_BOT_KEY"

# 4. 查询指定用户额度
curl -sS "$TOKENMP_BASE_URL/api/v1/bot/admin/user/quota?user_id=550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer $TOKENMP_ADMIN_BOT_KEY"

# 5. 用完整用户 ID 或唯一用户 ID 片段查询匹配用户最近失败请求
curl -sS "$TOKENMP_BASE_URL/api/v1/bot/admin/user/request?user_id=446655&status=failed&limit=10" \
  -H "Authorization: Bearer $TOKENMP_ADMIN_BOT_KEY"

# 6. 查询某模型全站错误日志
curl -sS "$TOKENMP_BASE_URL/api/v1/bot/admin/request/list?model_name=glm-5&status=failed&from=2026-05-01&to=2026-05-24" \
  -H "Authorization: Bearer $TOKENMP_ADMIN_BOT_KEY"

# 7. 按用户邮箱或用户 ID 片段查全站请求
curl -sS "$TOKENMP_BASE_URL/api/v1/bot/admin/request/list?query=thesumwai%40gmail.com&page=1&limit=20" \
  -H "Authorization: Bearer $TOKENMP_ADMIN_BOT_KEY"

curl -sS "$TOKENMP_BASE_URL/api/v1/bot/admin/request/list?user_id=446655&page=1&limit=20" \
  -H "Authorization: Bearer $TOKENMP_ADMIN_BOT_KEY"

客服机器人推荐流程

  • 先调用 /api/v1/bot/user/status,确认账号和 BOT KEY 可用。
  • 额度问题调用 /api/v1/bot/user/quota,回答余额、套餐和窗口恢复时间。
  • 模型问题调用 /api/v1/bot/user/model/list 或 /api/v1/bot/user/route/list。
  • 请求报错先用 /api/v1/bot/user/request/list?query=<request_id> 查列表,再用 /api/v1/bot/user/request/trace?query=<trace_id> 定位单条链路。
  • 兑换码只在用户明确提供 code 时调用 /api/v1/bot/user/redeem。

安全注意事项

  • 不要向用户展示 BOT KEY、API KEY、key_hash、上游 key、JWT secret、数据库 URL 或内部 token。
  • 面向客户的机器人默认使用用户 BOT;除非明确用于内部运营,不要接入管理 BOT。
  • 用户 BOT 日志响应已隐藏 provider、upstream URL、request_body 和供应商私有错误细节。
  • 泄露、离职交接或机器人下线时,应立即禁用或删除对应 BOT KEY。