# 脑筋急转弯 API:5 分钟从注册到拿到第一道题
> 接口/接入点:脑筋急转弯(apiCode 1618,含 1618-2 列表 / 1618-3 随机) · 免费服务 · 请求方式 POST/GET · 返回 JSON · 适用人群:新注册用户、初级开发者 · 阅读时间约 5 分钟
## 核心要点
- 注册易源账号、在控制台拿到 AppKey,就能调用这个免费娱乐接口;无需商务对接。
- 两个接入点:1618-2 按页码拉题库(分页),1618-3 按条数随机出题(最大 20 条/次)。
- 业务数据统一包在 `showapi_res_body` 内;**列表接口数组字段叫 `contentlist`,随机接口叫 `list`**,两者不要混用解析。
## Why:这跟我有什么关系
你正在做直播互动、社群破冰、小程序趣味答题,或者只是想给产品加个"每日一题"——都不想自己维护题库。脑筋急转弯接口直接给你上万条现成题目(实测全库约 11067 条),零成本调用,省下建库和运营成本。
官方把它定位为"休闲娱乐 / 轻松一刻 / 智力游戏",适合碎片时间、直播互动与团队建设。免费、即调即用,是验证创意最低成本的起点。
## What:前置条件与接口速览
前置条件:
1. 注册易源账号(万维易源)。
2. 在控制台「我的应用」创建应用,拿到 AppKey。
3. 接口为免费服务,注册后默认可免费调用,但有使用档次限制(见档位说明),注意别超量。
接口速览表:
| 项目 | 1618-2 查询脑筋急转弯列表 | 1618-3 随机生成脑筋急转弯 |
|------|--------------------------|--------------------------|
| 接口地址 | `https://route.showapi.com/1618-2?appKey=YOUR_APPKEY` | `https://route.showapi.com/1618-3?appKey=YOUR_APPKEY` |
| 请求方式 | POST / GET | POST / GET |
| 关键参数 | `page`(页码,默认 1) | `len`(条数,最大 20,默认 1) |
| 返回数组字段 | `contentlist`(含 `question`/`answer`) | `list`(含 `question`/`answer`) |
| 分页字段 | `allNum`/`allPages`/`currentPage`/`maxResult` | 无(随机接口不带分页) |
| 计费 | 免费(有档位限制) | 免费(有档位限制) |
## How:三步跑通
### 步骤 1:拿到 AppKey
登录控制台 → 我的应用 → 创建应用 → 复制 AppKey,替换下面代码里的 `YOUR_APPKEY`。
### 步骤 2:调用列表接口(取第一页)
Python(requests):
```python
import requests
APPKEY = "YOUR_APPKEY"
url = "https://route.showapi.com/1618-2"
try:
r = requests.get(url, params={"appKey": APPKEY, "page": "1"}, timeout=10)
r.raise_for_status()
data = r.json()
if data.get("showapi_res_code") != 0:
print("调用失败:", data.get("showapi_res_error"))
else:
body = data["showapi_res_body"]
for item in body["contentlist"]:
print("问:", item["question"])
print("答:", item["answer"])
print("总量:", body.get("allNum"), "总页数:", body.get("allPages"))
except requests.RequestException as e:
print("请求异常:", e)
```
cURL:
```bash
curl -s --max-time 10 "https://route.showapi.com/1618-2?appKey=YOUR_APPKEY&page=1"
```
Node.js(fetch):
```javascript
const APPKEY = "YOUR_APPKEY";
try {
const r = await fetch(`https://route.showapi.com/1618-2?appKey=${APPKEY}&page=1`, { signal: AbortSignal.timeout(10000) });
const data = await r.json();
if (data.showapi_res_code !== 0) { console.log("调用失败:", data.showapi_res_error); }
else {
for (const item of data.showapi_res_body.contentlist) {
console.log("问:", item.question, "答:", item.answer);
}
}
} catch (e) { console.log("请求异常:", e.message); }
```
### 步骤 3:调用随机接口(一次取 3 条)
把地址换成 `1618-3`,参数改为 `len=3`,返回数组字段是 `list`(不是 `contentlist`):
```python
import requests
r = requests.get("https://route.showapi.com/1618-3", params={"appKey": "YOUR_APPKEY", "len": "3"}, timeout=10)
body = r.json()["showapi_res_body"]
for item in body["list"]:
print(item["question"], "->", item["answer"])
```
## 返回示例与解析
列表接口(1618-2)实测返回(精简):
```json
{
"showapi_res_code": 0,
"showapi_res_error": "",
"showapi_res_id": "6a950ba3...",
"showapi_fee_num": 1,
"showapi_res_body": {
"allNum": "11067",
"allPages": "929",
"currentPage": "1",
"maxResult": "12",
"contentlist": [
{"question": "两对父子去买帽子,为什么只买了三顶?", "answer": "三代人"}
]
}
}
```
字段说明:`showapi_res_code` 为 0 表示成功;`showapi_res_body` 内 `contentlist` 是题目数组,每项为 `{question, answer}`;`allNum` 是题库总量,`allPages`/`currentPage`/`maxResult` 是分页信息。
## 进阶 / 边界
- 随机接口(1618-3)返回的是 `list` 且带 `remark`/`ret_code`,**没有分页字段**;列表接口(1618-2)才是 `contentlist` + 分页。做统一封装时务必区分,否则随机接口会解析出空数组。
- 免费接口仍按档位计量(`showapi_fee_num` 可见计费单元),高频调用前先看档位说明。
## FAQ
**Q1:提示「拒绝访问 / 未授权」怎么办?** 检查 AppKey 是否填写正确、是否已创建应用;免费接口也需有效 AppKey。
**Q2:为什么随机接口读不到 `contentlist`?** 随机接口用的是 `list` 字段,不是 `contentlist`,详见返回结构差异文。
**Q3:免费接口真的不花钱吗?** 注册默认可免费调用,但有使用档次限制防滥用;超档位后需按平台规则处理。
**Q4:一次能取多少条?** 列表接口按 `page` 翻页;随机接口 `len` 最大 20、默认 1。
## 相关能力 / 下一步阅读
- [脑筋急转弯 API 返回字段全解:contentlist / list / 分页字段一文读懂](https://www.showapi.com/guides/brainteaser-response-fields-1618)
- [脑筋急转弯两个接入点返回结构差异:contentlist 与 list 别搞混](https://www.showapi.com/guides/brainteaser-return-diff-1618)
- [直播互动如何接入脑筋急转弯 API?从弹题到观众答题的全链路设计](https://www.showapi.com/guides/brainteaser-live-interaction-1618)
- **本系列共 12 篇**:查看[脑筋急转弯 API 指南总目录](https://www.showapi.com/guides/brainteaser-guides-1618)