FQ-Novel API 文档
番茄小说 API 接口服务,支持章节内容获取、搜索、目录、漫画、视频等功能
http://localhost:3000/api
内容相关接口
GET
content
获取章节内容
请求示例
# 单章节内容
/api?api=content&item_id=7276663560427471412
# 多章节批量获取
/api?api=content&item_ids=id1,id2,id3&api_type=batch
# 听书模式(获取音频链接)
/api?api=content&item_id=123&ts=听书
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| item_id / item_ids | string | 必填 | 章节 ID,多个用逗号分隔 |
| api_type | string | 可选 | batch=批量获取 |
| ts | string | 可选 | 设为 "听书" 获取音频播放链接 |
响应示例
{
"success": true,
"data": {
"item_id": "7276663560427471412",
"title": "第一章 重生",
"content": "章节正文内容...",
"word_count": 2156
}
}
响应字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
| item_id | string | 章节 ID |
| title | string | 章节标题 |
| content | string | 章节正文内容 |
| word_count | number | 字数统计 |
GET
search
搜索书籍
请求示例
# 搜索小说
/api?api=search&query=斗破苍穹&tab_type=1
# 搜索漫画
/api?api=search&query=斗破苍穹&tab_type=8
# 带分页
/api?api=search&query=玄幻&tab_type=1&page=2
# 获取原始数据
/api?api=search&query=玄幻&tab_type=1&format=raw
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| query / key / keyword | string | 必填 | 搜索关键词 |
| tab_type | number | 可选 | 搜索类型:1=小说(默认),8=漫画 |
| page | number | 可选 | 页码,默认 1 |
| format | string | 可选 | 返回格式:simple=精简(默认),raw=原始数据 |
响应示例
{
"success": true,
"data": {
"keyword": "斗破苍穹",
"tab_type": 1,
"total": 15,
"books": [
{
"book_id": "123456789",
"book_name": "斗破苍穹",
"author": "天蚕土豆",
"thumb_url": "https://p1.fqcover.com/...",
"abstract": "三十年河东,三十年河西...",
"category": "玄幻",
"word_count": "5230000",
"creation_status": "已完结",
"read_count": "15.5万人在读"
}
]
}
}
books 数组字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
| book_id | string | 书籍 ID |
| book_name | string | 书籍名称 |
| author | string | 作者名 |
| thumb_url | string | 封面图片 URL |
| abstract | string | 书籍简介 |
| category | string | 分类 |
| word_count | string | 总字数 |
| creation_status | string | 连载状态 |
GET
POST
full
批量获取章节内容
此接口支持批量获取章节内容,单次最多 300 章,使用 DH 密钥交换加密。
请求示例
# GET 请求
/api?api=full&book_id=123456&item_ids=id1,id2,id3
# POST 请求
POST /api?api=full
Content-Type: application/json
{
"book_id": "123456789",
"item_ids": ["id1", "id2", "id3"]
}
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| book_id | string | 必填 | 书籍 ID |
| item_ids | array/string | 必填 | 章节 ID 数组(POST)或逗号分隔字符串(GET),最多 300 个 |
响应示例
{
"success": true,
"data": [
{
"item_id": "7276663560427471412",
"title": "第一章 重生",
"content": "章节内容...",
"word_count": 2156
},
{
"item_id": "7276663560427471413",
"title": "第二章 觉醒",
"content": "章节内容...",
"word_count": 2342
}
],
"total": 2
}
GET
item_info
获取章节元信息
请求示例
# 单个章节
/api?api=item_info&item_id=7507512821328904729
# 多个章节
/api?api=item_info&item_ids=7507512821328904729,7507960973773242905
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| item_id / item_ids | string | 必填 | 章节 ID,多个用逗号分隔 |
响应示例
{
"success": true,
"data": [
{
"item_id": "7507512821328904729",
"title": "第1章 黑暗降临",
"book_id": "6982529841564224526",
"volume_id": "6982735801973113350",
"word_count": 2156,
"is_pay": false,
"ctime": "2023-01-15 12:00:00",
"mtime": "2023-01-15 12:00:00"
}
]
}
响应字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
| item_id | string | 章节 ID |
| title | string | 章节标题 |
| book_id | string | 所属书籍 ID |
| volume_id | string | 所属卷 ID |
| word_count | number | 章节字数 |
| is_pay | boolean | 是否付费章节 |
| ctime | string | 创建时间 |
| mtime | string | 更新时间 |
GET
manga
获取漫画图片
如果请求的不是漫画章节,会自动回退到普通文字内容模式。
请求示例
# 获取漫画图片 URL 列表
/api?api=manga&item_ids=123456789
# 直接显示 HTML 图片页面
/api?api=manga&item_ids=123456789&show_html=1
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| item_ids | string | 必填 | 漫画章节 ID |
| show_html | string | 可选 | 设为 1 返回可浏览的 HTML 页面 |
响应示例
{
"success": true,
"data": {
"item_id": "123456789",
"title": "第1话 开始",
"images": [
"/manga/cache/123456789_0.jpg",
"/manga/cache/123456789_1.jpg",
"/manga/cache/123456789_2.jpg"
],
"count": 3,
"is_manga": true
}
}
响应字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
| item_id | string | 章节 ID |
| title | string | 章节标题 |
| images | array | 图片路径数组 |
| count | number | 图片数量 |
| is_manga | boolean | 是否为漫画 |
GET
video
获取短剧视频链接
请求示例
/api?api=video&ts=短剧&item_id=v0d00fg10000abcdefg
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ts | string | 必填 | 必须为 "短剧" |
| item_id | string | 必填 | 视频 ID |
响应示例
{
"success": true,
"data": {
"video_id": "v0d00fg10000abcdefg",
"title": "第1集 初遇",
"video_url": "https://v.xxx.com/video.mp4",
"cover_url": "https://p1.xxx.com/cover.jpg",
"duration": 180
}
}
GET
content (ts=听书)
获取章节音频
音频链接有防盗链限制,无法直接在浏览器打开。需要嵌入到 HTML 的
<audio> 标签中播放。不是所有章节都支持听书功能。
请求示例
/api?api=content&ts=听书&item_ids=7092241301621441059
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ts | string | 必填 | 必须为 "听书" |
| item_ids | string | 必填 | 章节 ID |
响应示例
{
"success": true,
"data": {
"item_id": "7092241301621441059",
"title": "第1章 黑暗降临",
"audio_url": "https://v9-fq-tts.fqnovelvod.com/...",
"duration": 360
}
}
前端播放示例
<!-- HTML 播放器 -->
<audio controls>
<source src="音频URL" type="audio/mpeg">
</audio>
书籍相关接口
GET
book
获取书籍详情
请求示例
/api?api=book&book_id=6982529841564224526
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| book_id / bookId | string | 必填 | 书籍 ID |
响应示例
{
"success": true,
"data": {
"book_id": "6982529841564224526",
"book_name": "我在精神病院学斩神",
"author": "三九音域",
"thumb_url": "https://p1.fqcover.com/...",
"abstract": "林七夜因一场车祸失去了视觉...",
"word_count": "3500000",
"serial_count": "2033",
"category": "都市高武",
"creation_status": "连载中",
"last_chapter_title": "第2033章 永恒",
"last_chapter_time": "2024-01-15",
"read_count": "328.5万人在读"
}
}
响应字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
| book_id | string | 书籍 ID |
| book_name | string | 书籍名称 |
| author | string | 作者名 |
| thumb_url | string | 封面图片 URL |
| abstract | string | 书籍简介 |
| word_count | string | 总字数 |
| serial_count | string | 章节总数 |
| category | string | 分类 |
| creation_status | string | 连载状态 |
| last_chapter_title | string | 最新章节标题 |
| last_chapter_time | string | 最新章节更新时间 |
GET
directory
获取章节目录
请求示例
/api?api=directory&book_id=6982529841564224526
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| book_id / fq_id / bookId | string | 必填 | 书籍 ID |
响应示例
{
"success": true,
"data": {
"book_id": "6982529841564224526",
"total": 2033,
"chapters": [
{
"item_id": "6982735801973113351",
"title": "第1章 黑暗降临",
"index": 0
},
{
"item_id": "6982736219796603143",
"title": "第2章 月光上的天使",
"index": 1
},
// ... 更多章节
]
}
}
chapters 数组字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
| item_id | string | 章节 ID |
| title | string | 章节标题 |
| index | number | 章节序号(从0开始) |
错误处理
错误响应格式
{
"success": false,
"error": "错误描述信息",
"code": 400
}
常见错误码
| 状态码 | 说明 | 处理建议 |
|---|---|---|
| 400 | 请求参数错误或缺少必要参数 | 检查请求参数是否完整正确 |
| 404 | 请求的资源不存在 | 检查 ID 是否正确 |
| 429 | 请求频率超过限制 | 降低请求频率,稍后重试 |
| 500 | 服务器内部错误 | 稍后重试或联系管理员 |
| 503 | 服务暂时不可用 | 服务维护中,稍后重试 |