开放接口

站点的数据通过只读 JSON 接口提供。API 访问仅通过邮件逐项授权,未获许可的调用属于违规;授权后的返回内容与网页展示同源。


快速开始

curl -H "Authorization: Bearer <your-key>" \
  "https://cybercredit.org/api/score/steam/76561198000000900?lang=en"

响应示例(节选)

{
  "game": { "slug": "steam", "name": "Steam Account", "modelVersion": "steam@1.0.0" },
  "score": 96,
  "band": { "key": "excellent", "label": "No issues found" },
  "coverage": 1,
  "source": "live",
  "dimensions": [
    { "key": "bans", "label": "Ban record", "weight": 40, "score": 100,
      "reasons": ["No bans found"] }
  ]
}

端点

GET/api/games

游戏目录、评分维度与权重。

GET/api/score/{game}/{id}

单个账号的评分、区间、覆盖率与逐维度理由。

GET/api/health

存活探针,只返回服务状态,不含配置信息。

GET/openapi.json

OpenAPI 3.1 描述,可导入 Postman、生成客户端。

查询参数

lang

响应语言:zh(默认)或 en。

refresh

设为 1 强制回源刷新,会计入限流。

history

设为 1 时返回该账号的永久评分历史(最近 20 条,新→旧)。

评分响应字段

score

0–100 的整数;可用数据不足一半时为 null。

band

{ key, label },分数区间。

rawScore

封顶前的加权原始分。

cappedBy

触发总分封顶的原因(如 VAC 封禁);未封顶为 null。

coverage

0–1,可用维度权重占比。

account.steamrep

SteamRep 2024 存档标记;banned 会把总分封顶在 30。

dimensions[]

每个维度的 key、label、weight、score 与 reasons;score 为 null 表示该维度无数据。

source

live 或 demo。demo 表示演示数据,必须明确标注。

warnings[]

降级原因码,例如 steam_key_missing。

cached

本次是否命中缓存。

fetchedAt

数据抓取时间(ISO 8601)。

history[]

仅在 ?history=1 时出现;永久评分快照,新→旧。

lang

本次响应的语言。

错误响应

400 INVALID_ID

账号 ID 格式不合法。

404 GAME_NOT_FOUND

没有这个游戏。

404 NOT_FOUND

账号不存在或没有公开数据。

409 MODEL_NOT_READY

该游戏的评分模型尚未上线。

429 RATE_LIMITED

新查询超过限流,响应头带 Retry-After。

502 UPSTREAM

上游数据源暂时不可用。

使用限制与约定

  • 限流:每个 IP 每分钟最多 10 次“新查询”;已缓存账号的读取不计入。
  • 鉴权:所有数据接口(games / score / health)要求 `Authorization: Bearer <key>` 或 `X-API-Key`;未授权返回 401。Key 仅通过邮件 cybercreditc@outlook.com 申请,逐项授权;未获许可的调用、自动化抓取或批量请求均属违规。
  • 人机验证:网页查询表单需要 Turnstile;API 以 Key 鉴权,不额外要求 Turnstile。
  • CORS:响应带 Access-Control-Allow-Origin: *,浏览器可直接调用。
  • 演示数据:source 为 demo 时必须标注为演示数据,不能当作真实结论。
  • 署名:公开使用或转载时请注明来源 CyberCredit,并保留原始链接。

OpenAPI 描述

机器可读的接口定义,供 Postman / 代码生成器导入。它是文件,不适合在浏览器里直接阅读,请下载后使用。

下载 OpenAPI 描述/openapi.json