RooQuiz 文档
集成与 API

REST API

RooQuiz 提供一个轻量的只读 REST API,方便你把团队的表单数据拉进脚本、自动化工具(Zapier、Make、n8n)或自建看板。它以纯 JSON 返回表单的定义信息 —— 标题、字段、设置、报告配置。

REST API 是账号级别的,以团队(账号)身份认证,而非某个成员。如果你想让 AI 客户端用自然语言操作测评,请看 MCP 接入

工作方式

  • 用一个归属团队的账号 API 密钥(前缀 rqp_acct_)进行认证。
  • 该密钥可读取所在团队的全部表单。它不绑定个人,成员进出都不影响其使用。
  • 团队所有者可创建、查看、吊销账号 API 密钥。
  • 接口只读,只返回表单定义,不暴露提交记录 / 作答数据。

获取 API 密钥

进入 设置 → API 密钥(仅团队所有者可见),点击「创建 API 密钥」:

  1. 起一个名称(便于识别,例如 Zapier - 生产)。
  2. 创建后会显示一个以 rqp_acct_ 开头的明文密钥。

明文密钥只显示这一次。 离开页面后无法再取回。请立即复制;丢失后只能吊销并重新创建。

每个团队最多保有 10 个密钥(含已吊销)。如需更多,请删除一个以腾出名额(「吊销」只是停用,不释放名额)。请像密码一样妥善保管,切勿提交到代码仓库。

鉴权

每次请求都以 Bearer 令牌方式带上密钥:

Authorization: Bearer rqp_acct_xxx...

个人 MCP 令牌(rqp_live_)在 REST API 上无效,会返回 401。请使用账号 API 密钥(rqp_acct_)。

端点

基础地址形如 https://your-domain/api/v1

列出表单

GET /api/v1/forms

按创建时间倒序列出该密钥所属团队的全部表单。

查询参数类型默认说明
scenestring按场景过滤:knowledge_quizrandom_knowledge_quizscored_quizoutcome_quiz
titleContainsstring标题模糊匹配。
limitnumber20每页条数(最大 100)。
pagenumber1页码。
curl -H "Authorization: Bearer rqp_acct_xxx..." \
  "https://your-domain/api/v1/forms?scene=knowledge_quiz&limit=20"
{
  "totalDocs": 12,
  "page": 1,
  "limit": 20,
  "items": [
    {
      "id": "d983d8d9-...",
      "title": "性格测试",
      "scene": "outcome_quiz",
      "language": "zh_CN",
      "publicToken": "h7sbps67",
      "shareUrl": "https://your-cairo-domain/a/h7sbps67",
      "localization": null,
      "isActive": true,
      "createdAt": "2026-06-18T11:35:11.468Z",
      "updatedAt": "2026-06-18T12:59:42.649Z"
    }
  ]
}

获取单个表单

GET /api/v1/forms/{id}

返回单个表单的定义。

查询参数类型默认说明
includeFieldsbooleantrue是否包含 fields[](题目 / 分页符)。大表单可传 false 跳过。
includeReportbooleantrue是否包含报告 / 维度分析配置。
curl -H "Authorization: Bearer rqp_acct_xxx..." \
  "https://your-domain/api/v1/forms/d983d8d9-..."
{
  "id": "d983d8d9-...",
  "title": "性格测试",
  "scene": "outcome_quiz",
  "language": "zh_CN",
  "description": null,
  "isActive": true,
  "publicToken": "h7sbps67",
  "shareUrl": "https://your-cairo-domain/a/h7sbps67",
  "layout": "card",
  "localization": null,
  "systemText": null,
  "createdAt": "2026-06-18T11:35:11.468Z",
  "updatedAt": "2026-06-18T12:59:42.649Z",
  "fields": [ /* 题目与分页符 */ ],
  "report": { /* 报告 / 维度配置 */ }
}

提交记录

读取团队表单收集到的作答 —— 线索、答案、得分、报告结果与 UTM 归因。适合 CRM 同步、自建看板、自动化。

提交记录包含作答者 PII(邮箱、姓名、IP),请妥善处理与存储。

列出提交记录

GET /api/v1/records

按创建时间倒序列出该账号的全部提交记录。

查询参数类型默认说明
formIdstring只看某个表单的提交。
statusstring报告状态:pendingprocessingcompletedfailed
sinceISO 时间只看该时间(含)之后创建的提交(增量同步)。
untilISO 时间只看该时间(含)之前创建的提交。
limitnumber20每页条数(最大 100)。
pagenumber1页码。
curl -H "Authorization: Bearer rqp_acct_xxx..." \
  "https://your-domain/api/v1/records?since=2026-06-01&limit=50"
{
  "totalDocs": 1500,
  "page": 1,
  "limit": 50,
  "items": [
    {
      "id": "...",
      "serialNumber": 11,
      "formId": "d983d8d9-...",
      "shareToken": "v2hrpv6d",
      "reportUrl": "https://your-cairo-domain/a/md8682rx/records/v2hrpv6d",
      "submittedAt": "2026-06-18T12:00:00.000Z",
      "updatedAt": "2026-06-18T12:00:05.000Z",
      "examinee": {
        "id": "...", "examineeId": "TZ4730277148",
        "email": "[email protected]", "name": "Jane", "customData": null
      },
      "metadata": {
        "utmSource": "newsletter", "utmMedium": "email",
        "utmCampaign": null, "utmTerm": null, "utmContent": null,
        "referrer": "https://..."
      },
      "data": { "q_email": "[email protected]", "q_rating": 5 },
      "result": {
        "status": "completed", "score": 2, "maxScore": 4,
        "level": "良好", "outcomeCode": null, "outcomeName": null
      }
    }
  ]
}

data 以每个表单字段的 code 为 key(可通过表单端点的 fields[] 查看)。匿名提交时 examineenullresult 是紧凑摘要;完整报告在详情端点。

获取单条提交记录

GET /api/v1/records/{id}

返回单条提交,含完整报告结果 reportResult 以及 metadata.ip / metadata.userAgent

curl -H "Authorization: Bearer rqp_acct_xxx..." \
  "https://your-domain/api/v1/records/..."
{
  "id": "...",
  "serialNumber": 11,
  "formId": "d983d8d9-...",
  "shareToken": "v2hrpv6d",
  "reportUrl": "https://your-cairo-domain/a/md8682rx/records/v2hrpv6d",
  "submittedAt": "...",
  "updatedAt": "...",
  "examinee": { "id": "...", "email": "[email protected]", "name": "Jane" },
  "metadata": { "ip": "203.0.113.4", "userAgent": "...", "utmSource": "newsletter" },
  "data": { /* 按字段 code 的作答 */ },
  "reportResult": {
    "status": "completed",
    "overallAnalysis": { "score": 2, "maxScore": 4, "level": "良好", "summary": "...", "suggestions": "..." },
    "dimensionAnalysis": { "title": "...", "radar": [], "items": [] },
    "outcome": { "code": null, "name": null, "ranking": null },
    "aiSuggestion": { "status": "completed", "content": "..." }
  }
}

错误

错误以 { "error": { "code": "...", "message": "..." } } 的形式返回。

状态码code场景
401unauthorized缺失 / 无效 / 已过期 / 已吊销的密钥(或传了非账号级令牌)。
404not_found表单不存在,或不属于该密钥所在团队。
400bad_request参数非法(例如未知的 scene)。
429rate_limited超过限流。

限流

每个密钥限制为 120 次 / 分钟,超出返回 429。不再需要时,请在 设置 → API 密钥 吊销密钥 —— 使用它的集成会立即失去访问权限。

本页目录