API 文档
版本 v1 · 精确查询 · JSON接口地址
https://www.bnnb.cn/v1/api/
只提供精确查询:按道具 ID,或按道具名称完全相等匹配。返回 application/json。
请求方式
GET(也支持 HEAD / OPTIONS)·
公开访问,无需密钥 ·
每 IP 每分钟上限 60 次 ·
跨域调用已允许 请求参数
| 参数 | 必填 | 说明 |
|---|---|---|
id |
二选一 | 道具 ID,1~10 位数字。例:https://www.bnnb.cn/v1/api/?id=10008 |
name |
二选一 | 道具名称,需完全一致(区分用词,不支持模糊)。例:https://www.bnnb.cn/v1/api/?name=%E8%85%BE%E5%BD%A9%E6%B0%94%E7%90%83 |
=值 |
可选 |
裸参数写法:https://www.bnnb.cn/v1/api/?=10008 ——
纯数字按 ID 处理,否则按名称处理。为兼容这种写法,接口会读取原始查询串。
|
key |
不推荐 |
兼容写法,但请不要使用 —— 密钥会出现在浏览器地址栏、历史记录、Referer
和服务器访问日志里。请改用 X-API-Key 请求头(见下方「鉴权与调用限制」)
|
同时传 id 与 name 时以 id 为准;
都为空则返回 400(响应里会带可用示例地址)。
返回结构
成功(HTTP 200):
{
"ok": true,
"code": 200,
"msg": "ok",
"api": "v1",
"time": "2026-10-03T00:53:55+08:00",
"query": {
"by": "id",
"value": "10008"
},
"matched": 1,
"data": {
"id": 10008,
"name": "腾彩气球",
"type": "尾挂,赛车",
"type_fine": "尾挂",
"type_group": "赛车",
"sex": "无",
"descr": "这是一种神秘的符号 ,一种图腾的象征,当飞弹掠过的时候,它将是你的保护神。",
"funcs": "非情侣模式下,挂在车后可减小飞弹对你的伤害。",
"image": "https://www.bnnb.cn/img.php?id=10008",
"image_official": "https://iips.speed.qq.com/images/10008.png"
}
}
失败(ok 恒为 false,code 与 HTTP 状态码一致):
{
"ok": false,
"code": 404,
"msg": "未找到该道具(ID 99999999)",
"api": "v1",
"time": "2026-10-03T00:53:55+08:00",
"query": {
"by": "id",
"value": "99999999"
}
}
顶层字段
| 字段 | 类型 | 含义 |
|---|---|---|
ok | boolean | 是否成功,等价于 code === 200 |
code | integer | 状态码,与 HTTP 状态码一致 |
msg | string | 提示文字(失败时是原因) |
api | string | 接口版本,当前 v1 |
time | string | 服务器时间(ISO 8601) |
query | object | 本次实际使用的查询条件:by(id / name)与 value |
matched | integer | 命中条数。按 ID 查询恒为 1;按名称查询可能 > 1(同名道具) |
data | object | 道具完整信息,失败时为 null(不返回该字段) |
data 字段
| 字段 | 类型 | 含义 |
|---|---|---|
id | integer | 道具 ID,唯一 |
name | string | 道具名称 |
type | string | 原始类型字段,形如「细类,大类」,例:尾挂,赛车 |
type_fine | string | 细类(type 的第 1 个标签),例:尾挂 |
type_group | string | 所属大类(type 的第 2 个标签),例:赛车 |
sex | string | 性别限制:男 / 女 / 无(无 = 通用) |
descr | string | 道具描述 |
funcs | string | 功能说明 |
image | string | 本站图片接口地址(绝对地址,未本地化时自动跳官方外链) |
image_official | string | 官方图床地址(绝对地址) |
按名称查询命中多条时,data 返回 ID 最小的那一条,matched 为正整数个条数。
地图库
除道具外,还可以查地图(赛道)的代码与名称 —— 同样只做 精确匹配。
map |
地图代码(纯数字)或地图名称(要完全一致)。 例: https://www.bnnb.cn/v1/api/?map=105、https://www.bnnb.cn/v1/api/?map=沉睡森林(中文需 URL 编码) |
maps |
传任意值即列出地图:https://www.bnnb.cn/v1/api/?maps=1可配 &cat=经典赛道、&page=1、&limit=50(1~200) |
地图字段:id、code(地图代码)、name(地图名称)、cat(分类)。
列表响应额外带 total / page / pages / cats(各分类条数)。
状态码与错误
| code | 含义 | 触发条件 |
|---|---|---|
200 | 成功 | 返回 ok: true 与 data 字段 |
400 | 参数错误 | 缺少查询参数、ID 不是数字、名称过长等 |
401 | 鉴权失败 | 后台设置了密钥,但请求没带或带错(仅密钥开启时出现) |
403 | 接口已关闭 | 后台「API 设置」里关掉了接口总开关 |
404 | 未找到道具 | ID 不存在,或名称与库中不完全一致 |
429 | 请求过于频繁 | 超过「每 IP 每分钟」上限,响应头带 Retry-After |
鉴权与调用限制
本站接口公开访问,无需密钥。如果站长在后台设置了密钥,则必须带请求头
X-API-Key: 你的密钥。
不要把密钥写进 URL。
像
?key=你的密钥 这种写法,会同时留存在浏览器地址栏、浏览历史、Referer
请求头和服务器访问日志里,等于把密钥公开。接口为了兼容仍然接受它,但请只用 X-API-Key 请求头。
- 频率限制:每个 IP 每分钟最多 60 次,超出返回
429,响应头带Retry-After - 响应头会带
X-RateLimit-Limit与X-RateLimit-Remaining(未开启限流时不返回) - 跨域:已开启,其它网站的 JS 可以直接
fetch调用 - 本接口是只读查询,不写入任何数据;调用不会计入站内的「热门搜索」统计
- 请在本地做缓存,避免高频轮询
调用示例
curl(按 ID):
curl "https://www.bnnb.cn/v1/api/?id=10008"
curl(按名称,注意要 URL 编码):
curl "https://www.bnnb.cn/v1/api/?name=%E8%85%BE%E5%BD%A9%E6%B0%94%E7%90%83"
JavaScript:
fetch("https://www.bnnb.cn/v1/api/?id=10008")
.then(function (r) { return r.json(); })
.then(function (res) {
if (!res.ok) { console.error(res.code, res.msg); return; }
console.log(res.data.id, res.data.name, res.data.type_group);
});
PHP:
$json = @file_get_contents("https://www.bnnb.cn/v1/api/?id=10008");
$res = json_decode($json, true);
if ($res && $res['ok']) { echo $res['data']['name']; }
