这套接口是干什么的
题库中台是粒方所有系统取题的唯一来源。行课系统、家校小程序、办学系统都不用再各自存一份题库,统一调这里的接口即可。后台(首页)改一道题,所有系统下一次请求就是新的。
接口根地址:—
调用方式:所有接口都要求带接入密钥,三种传法任选——
X-API-Key: qb_live_…(推荐)/?key=qb_live_…/Authorization: Bearer qb_live_…。
密钥在后台「系统接入」页创建,给每个系统单独发一个,随时可停用。
关于图片:题目返回的 stemHtml/analysisHtml 里,图片地址已经是可以直接访问的完整 URL,对方系统不需要再做任何处理,直接塞进富文本渲染即可。
公式(LaTeX)原样保留在 \( … \) 里,端上如果装了 KaTeX 会自动渲染成数学公式。
题库里的「三个来源」
组合和题目都带一个 src / source 字段,标的是这道题从哪来的。取题时可以按它筛。
组合还带一个 subject 字段(学科)。粒方题库有 数学 和 英语 两个学科
(2026-10-16 加英语),取题时可以用 &subject=英语 只要英语的;
章节序 / 爱学习体系目前只导入了数学。学科记在组合上,题目本身不带这个字段。
| 值 | 来源 | 说明 |
t | 章节序(教材版) | 爱学习精准学,按 年级 → 版本 → 册次 组织 |
a | 爱学习体系 | 爱学习精准学,按 年级 → 版本 → 学期 → 体系 组织 |
z | 粒方题库 | 粒方老师自己在后台上传的题(拍照识别 / Word·PDF 自动拆题 / 手工录入) |
要不要只取粒方自建题?加 &source=z 即可:
GET /api/v1/questions?combo=z_m_6_2_340&source=z&size=20。
只要英语(或只要数学)?加 &subject=英语:
GET /api/v1/questions?subject=英语&source=z&size=50。
注意:粒方题库的组合(z_…)一开始都是 0 题的空壳,老师传题之后才会慢慢有内容。
取题前先用 q_uniq 判一下,不要假定某个组合一定有题。
粒方题库的组合也没有教材目录树,/api/v1/knowledge-points?combo=z_…
返回的是老师填的「知识点」分组(虚拟节点,id 形如 kp:巧算与速算),
传给 /api/v1/questions?node= 时原样带上即可。
快速上手
1)先看有哪些组合,挑一个
# curl
curl -H "X-API-Key: qb_live_xxx" BASE_URL/api/v1/combos
// 返回(节选)
{
"combos": [
{ "id": "t_5_5_340", "grade": "四年级", "version": "苏教版", "vol": "上册",
"title": "四年级 · 苏教版 · 上册", "q_uniq": 4520 },
{ "id": "a_7_13_3_48", "grade": "六年级", "version": "全国版",
"period": "秋季", "system": "α体系", "title": "六年级 · 全国版 · 秋季·α体系" }
]
}
2)按知识点取题(行课系统最常见的用法)
// 拿到树 → 找到知识点 node id → 取题
const r = await fetch(`${BASE}/api/v1/questions?combo=t_5_5_340&node=t_5_5_340:387419&size=20`, {
headers: { 'X-API-Key': KEY }
});
const { total, items } = await r.json();
node 传知识点节点 id 时,会连同它的所有子节点一起取,所以传「章」也能拿到整章题目。
3)随机抽 10 题做课堂随练
const r = await fetch(`${BASE}/api/v1/questions/random?combo=t_5_5_340&type=1&difficulty=2&n=10`, {
headers: { 'X-API-Key': KEY }
});
4)在后台组好卷,线上按试卷 id 取
const r = await fetch(`${BASE}/api/v1/papers/p_m1x2k3`, { headers: { 'X-API-Key': KEY } });
const { paper, questions } = await r.json(); // questions 已按试卷顺序排好
错误码
| 状态码 | 返回 | 含义与处理 |
| 200 | {...} | 正常 |
| 400 | {"error":"…"} | 参数不对,看 error 文案 |
| 401 | {"error":"缺少或无效的接入密钥"} | 密钥没传 / 传错 / 已被停用 |
| 404 | {"error":"题目不存在"} | id 不对 |
| 500 | {"error":"…"} | 服务端异常,把这个 error 原文发给我们 |
自检
curl -H "X-API-Key: qb_live_xxx" BASE_URL/api/v1/ping
# {"ok":true,"service":"粒方教育题库中台","version":"v1","system":"行课系统","at":"…"}