互动式性格测试,15 道随机题,按外向性、理性度、冒险性、乐观度、主导性计算并返回标签。
| 参数名 | 类型 | 必填 | 说明 | 示例 |
|---|---|---|---|---|
| key | string | 是 | 接口调用密钥 | |
| action | string | 是 | 操作类型。支持 start(开始测试)、restart(重新开始)、status(查询当前状态)、answer(提交答案)。 | start |
| id | string | 是 | 玩家唯一标识,用于保存和读取本次性格测试进度。仅支持字母、数字、中文、下划线和短横线,最长 50 个字符。 | player_10001 |
| answer | string | 否 | 答题选项,仅当 action=answer 时必填,可选值为 A、B、C、D。 | A |
[
{
"name": "key",
"type": "string",
"required": true,
"description": "接口调用密钥",
"example": ""
},
{
"name": "action",
"type": "string",
"required": true,
"description": "操作类型。支持 start(开始测试)、restart(重新开始)、status(查询当前状态)、answer(提交答案)。",
"example": "start"
},
{
"name": "id",
"type": "string",
"required": true,
"description": "玩家唯一标识,用于保存和读取本次性格测试进度。仅支持字母、数字、中文、下划线和短横线,最长 50 个字符。",
"example": "player_10001"
},
{
"name": "answer",
"type": "string",
"required": false,
"description": "答题选项,仅当 action=answer 时必填,可选值为 A、B、C、D。",
"example": "A"
}
]
{
"openapi": "3.1.1",
"info": {
"title": "性格测试",
"description": "互动式性格测试,15 道随机题,按外向性、理性度、冒险性、乐观度、主导性计算并返回标签。",
"version": "1.0.0"
},
"paths": {
"\/api\/game\/traitgame\/index.php": {
"get": {
"summary": "性格测试",
"description": "互动式性格测试,15 道随机题,按外向性、理性度、冒险性、乐观度、主导性计算并返回标签。",
"parameters": [
{
"name": "key",
"in": "query",
"required": true,
"schema": {
"type": "string"
},
"description": "接口调用密钥"
},
{
"name": "action",
"in": "query",
"required": true,
"schema": {
"type": "string",
"example": "start"
},
"description": "操作类型。支持 start(开始测试)、restart(重新开始)、status(查询当前状态)、answer(提交答案)。"
},
{
"name": "id",
"in": "query",
"required": true,
"schema": {
"type": "string",
"example": "player_10001"
},
"description": "玩家唯一标识,用于保存和读取本次性格测试进度。仅支持字母、数字、中文、下划线和短横线,最长 50 个字符。"
},
{
"name": "answer",
"in": "query",
"required": false,
"schema": {
"type": "string",
"example": "A"
},
"description": "答题选项,仅当 action=answer 时必填,可选值为 A、B、C、D。"
}
],
"responses": {
"200": {
"description": "成功",
"content": {
"application\/json": {
"schema": {
"type": "object"
}
}
}
}
}
}
}
},
"servers": [
{
"url": "https:\/\/api.vsaa.cn",
"description": "当前访问入口(https)"
}
]
}
**开始测试:`action=start`**
```json
{
"code": 0,
"message": "游戏已开始",
"data": {
"status": "playing",
"question_number": 1,
"total_questions": 15,
"progress": "0%",
"question": "在一个热闹的聚会上,你通常会:",
"options": {
"A": {
"text": "主动与很多人交谈,成为焦点",
"scores": {
"E": 2,
"R": 0,
"A": 1,
"O": 1,
"D": 1
}
},
"B": {
"text": "和几个熟悉的朋友待在一起聊天",
"scores": {
"E": 0,
"R": 1,
"A": 0,
"O": 0,
"D": 0
}
}
}
}
}
```
**提交答案:`action=answer`**
```json
{
"code": 0,
"message": "答案已记录",
"data": {
"status": "playing",
"question_number": 2,
"total_questions": 15,
"progress": "7%",
"question": "周末你更倾向于怎样度过?",
"options": {
"A": {
"text": "约朋友出去聚会或户外活动",
"scores": {
"E": 2,
"R": -1,
"A": 1,
"O": 1,
"D": 0
}
}
}
}
}
```
**测试完成:`action=answer`,最后一题**
```json
{
"code": 0,
"message": "已完成全部题目",
"data": {
"status": "finished",
"result": {
"label": "社交达人 + 无畏探险家",
"analysis": {
"E": {
"level": "高度外向性",
"desc": "你的外向性特征非常明显。"
},
"R": {
"level": "平衡理性度",
"desc": "你的理性度两种倾向较为均衡。"
},
"A": {
"level": "偏向冒险性",
"desc": "你的冒险性特征较为明显。"
},
"O": {
"level": "高度乐观度",
"desc": "你的乐观度特征非常明显。"
},
"D": {
"level": "偏向主导性",
"desc": "你的主导性特征较为明显。"
}
},
"scores": {
"E": 9,
"R": 1,
"A": 6,
"O": 10,
"D": 4
}
}
}
}
```
**请求错误示例**
```json
{
"code": 400,
"message": "答案必须是 A、B、C 或 D",
"data": null
}
```
基于随机题库的互动式性格测试接口,帮助游戏玩家完成 15 道心理测试题,根据外向性、理性度、冒险性、乐观度和主导性五个维度计算得分并返回性格标签。面向游戏接入方提供玩家性格分析服务,支持开始测试、提交答案、查询进度及重新开始等操作。密钥通过 Query 参数(key=…)传递。
https://api.sapiens.ai/api/game/traitgame/index.php
GET
本接口支持 Query 鉴权,调用时需在 URL 参数中附带密钥字段 key。该接口为必填项,未携带或携带无效密钥将返回鉴权失败。
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| key | string | 是 | 接口调用密钥,通过 Query 参数传递,格式为 key=xxx。 |
| action | string | 是 | 操作类型,取值如下:• start:开始测试• restart:重新开始测试• status:查询当前进度• answer:提交答案 |
| id | string | 是 | 玩家唯一标识,用于保存和读取本次测试进度。仅支持字母、数字、中文、下划线和短横线,最长 50 个字符。 |
| answer | string | 否 | 答题选项,仅当 action=answer 时必填。可选值为 A、B、C、D。 |
参数取值说明
action 参数决定接口行为,不同操作对参数的要求如下:
start:需要传入 key 和 id,返回第一道题目及选项。restart:需要传入 key 和 id,清空该玩家的测试进度并从第一题重新开始。status:需要传入 key 和 id,返回当前进度(若存在未完成测试)或提示无进行中的测试。answer:需要传入 key、id 和 answer,提交当前题目的选项,返回下一题或最终结果。开始测试 action=start
{
"code": 0,
"message": "游戏已开始",
"data": {
"status": "playing",
"question_number": 1,
"total_questions": 15,
"progress": "0%",
"question": "在一个热闹的聚会上,你通常会:",
"options": {
"A": {
"text": "主动与很多人交谈,成为焦点",
"scores": {
"E": 2,
"R": 0,
"A": 1,
"O": 1,
"D": 1
}
},
"B": {
"text": "和几个熟悉的朋友待在一起聊天",
## 错误响应示例
以下展示业务鉴权失败的响应形态:
```json
{
"code": -1,
"msg": "未提供调用密钥",
"errcode": 11001
}
{
"code": -1,
"msg": "密钥错误",
"errcode": 11002
}
{
"code": -1,
"msg": "请求过于频繁(QPM 限制)",
"errcode": 11005
}
| errcode | 含义 |
|---|---|
| 11001 | 未提供调用密钥 |
| 11002 | 密钥错误 |
| 11003 | 密钥已禁用 |
| 11004 | 积分余额不足 |
| 11005 | 请求过于频繁(QPM 限制) |
| 11006 | 接口维护中 |
| 11007 | 接口已禁用 |
| 11008 | 接口不可用 |
| 11009 | 密钥校验暂不可用 |
| 11010 | 积分系统暂不可用 |
| 11011 | 收费接口须提供有效密钥 |
| 11012 | 鉴权方式错误 |
| 11013 | 接口不存在 |
| 11014 | ***地址无效 |
| 11015 | ***地址不允许 |
| 11016 | ***请求失败 |
| 11017 | 服务暂不可用 |
| 11018 | 请求方式不允许 |
| 11019 | 当前IP不在白名单内 |
| 11020 | 启用出口代理须提供有效密钥 |
| 11021 | 未配置可用出口代理 |
| 11022 | 出口代理不可用 |
| 11023 | 密钥已过期 |
| 11024 | 令牌分配积分不足 |
开始测试:
curl "https://your-domain/api/game/traitgame/index.php?action=start&id=player_10001&key=YOUR_KEY"
提交答案:
curl "https://your-domain/api/game/traitgame/index.php?action=answer&id=player_10001&answer=A&key=YOUR_KEY"
查询状态:
curl "https://your-domain/api/game/traitgame/index.php?action=status&id=player_10001&key=YOUR_KEY"
// PHP
$url = 'https://your-domain/api/game/traitgame/index.php';
$params = http_build_query([
'action' => 'start',
'id' => 'player_10001',
'key' => 'YOUR_KEY',
]);
$response = file_get_contents($url . '?' . $params);
echo $response;
key 传递,请勿将密钥硬编码至前端代码或暴露在公开仓库中,建议使用服务端代理调用。id)仅支持字母、数字、中文、下划线和短横线,长度不超过 50 个字符;同一 ID 在测试完成前可查询进度或重新开始,但不同 ID 之间数据独立互不干扰。answer 参数只能传 A、B、C、D 四个选项之一,传值错误将返回 400 错误。start 操作会重置该玩家的测试进度,重新从第 1 题开始;若中途误操作可调用 restart 强制重新开始。start 生成的题目顺序和选项内容可能不同,但总分计算逻辑一致。status 会变为 finished,此时再次提交答案无效,需重新调用 start 开始新一轮测试。暂无代码示例。管理员可在后台用 AI 生成或手动编写。
欢迎使用 万象数据API(以下简称“本平台”,域名为 api.vsaa.cn)。在使用本平台提供的任何接口、数据及相关服务之前,请您务必仔细阅读并充分理解本免责声明的全部内容。您对本平台任何服务的使用,均视为您已阅读、理解并同意本声明的全部条款。
最后更新日期:2026年10月6日