想看小说,搜书名、看简介、翻目录、读正文,一次就能走完;想听书什么都不用折腾,拿到的就是能直接播放的音频,想换音色、换音轨也随心,进度条随便拖,跟本地文件一样顺。
| 参数名 | 类型 | 必填 | 说明 | 示例 |
|---|---|---|---|---|
| key | string | 是 | 接口调用密钥 | |
| action | string | 是 | 操作类型,仅可为:search(搜索)、detail(详情)、chapters(目录)、read(正文)、audio(听书,解密后返回本地播放地址)、audio.info(听书原始加密流信息)、audio.prepare(解密生成本地音频)、chapter.info(章节信息)、media.file(输出本地音频,支持 Range)、capabilities(上游能力) | |
| keyword | string | 否 | 搜索关键词,仅当 action 为 search(搜索)时必填;等价参数 query | |
| offset | integer | 否 | 分页偏移,仅当 action 为 search、chapters 时有效,从 0 开始 | |
| limit | integer | 否 | 每页条数,仅当 action 为 search、chapters 时有效 | |
| search_id | string | 否 | 搜索会话 ID,仅当 action 为 search 时有效,用于翻页续搜 | |
| with_details | integer | 否 | 是否返回章节附加详情(0/1),仅当 action 为 chapters 时有效 | |
| book_id | string | 否 | 小说 ID(1-20 位数字字符串,务必按字符串传),仅当 action 为 detail、chapters、read、audio、audio.info、audio.prepare 时有效 | |
| item_id | string | 否 | 章节/音频条目 ID(1-20 位数字字符串),仅当 action 为 read、audio、audio.info、audio.prepare、chapter.info 时有效 | |
| tone_id | integer | 否 | 音色 ID(0-100000),仅当 action 为 audio、audio.info、audio.prepare 时有效;不传由上游自动选音色 | |
| stream_index | integer | 否 | 音频流下标(0-20,默认 0),仅当 action 为 audio、audio.prepare 时有效;不同下标各自解密并各自缓存 | |
| quality | integer | 否 | stream_index 的别名(0-20),仅当 action 为 audio 时有效,与 stream_index 共用一个缓存键 | |
| token | string | 否 | 媒体令牌(48 位小写十六进制),仅当 action 为 media.file 时必填,由 audio 返回的 play_url 自动带出 | |
| nocache | string | 否 | 任意非空值(如 1)即跳过 25 分钟 JSON 缓存并重新取上游;等价参数 refresh,不参与缓存键 |
[
{
"name": "key",
"type": "string",
"required": true,
"description": "接口调用密钥",
"example": ""
},
{
"name": "action",
"type": "string",
"required": true,
"description": "操作类型,仅可为:search(搜索)、detail(详情)、chapters(目录)、read(正文)、audio(听书,解密后返回本地播放地址)、audio.info(听书原始加密流信息)、audio.prepare(解密生成本地音频)、chapter.info(章节信息)、media.file(输出本地音频,支持 Range)、capabilities(上游能力)",
"example": ""
},
{
"name": "keyword",
"type": "string",
"required": false,
"description": "搜索关键词,仅当 action 为 search(搜索)时必填;等价参数 query",
"example": ""
},
{
"name": "offset",
"type": "integer",
"required": false,
"description": "分页偏移,仅当 action 为 search、chapters 时有效,从 0 开始",
"example": ""
},
{
"name": "limit",
"type": "integer",
"required": false,
"description": "每页条数,仅当 action 为 search、chapters 时有效",
"example": ""
},
{
"name": "search_id",
"type": "string",
"required": false,
"description": "搜索会话 ID,仅当 action 为 search 时有效,用于翻页续搜",
"example": ""
},
{
"name": "with_details",
"type": "integer",
"required": false,
"description": "是否返回章节附加详情(0/1),仅当 action 为 chapters 时有效",
"example": ""
},
{
"name": "book_id",
"type": "string",
"required": false,
"description": "小说 ID(1-20 位数字字符串,务必按字符串传),仅当 action 为 detail、chapters、read、audio、audio.info、audio.prepare 时有效",
"example": ""
},
{
"name": "item_id",
"type": "string",
"required": false,
"description": "章节/音频条目 ID(1-20 位数字字符串),仅当 action 为 read、audio、audio.info、audio.prepare、chapter.info 时有效",
"example": ""
},
{
"name": "tone_id",
"type": "integer",
"required": false,
"description": "音色 ID(0-100000),仅当 action 为 audio、audio.info、audio.prepare 时有效;不传由上游自动选音色",
"example": ""
},
{
"name": "stream_index",
"type": "integer",
"required": false,
"description": "音频流下标(0-20,默认 0),仅当 action 为 audio、audio.prepare 时有效;不同下标各自解密并各自缓存",
"example": ""
},
{
"name": "quality",
"type": "integer",
"required": false,
"description": "stream_index 的别名(0-20),仅当 action 为 audio 时有效,与 stream_index 共用一个缓存键",
"example": ""
},
{
"name": "token",
"type": "string",
"required": false,
"description": "媒体令牌(48 位小写十六进制),仅当 action 为 media.file 时必填,由 audio 返回的 play_url 自动带出",
"example": ""
},
{
"name": "nocache",
"type": "string",
"required": false,
"description": "任意非空值(如 1)即跳过 25 分钟 JSON 缓存并重新取上游;等价参数 refresh,不参与缓存键",
"example": ""
}
]
{
"openapi": "3.1.1",
"info": {
"title": "番茄小说",
"description": "想看小说,搜书名、看简介、翻目录、读正文,一次就能走完;想听书什么都不用折腾,拿到的就是能直接播放的音频,想换音色、换音轨也随心,进度条随便拖,跟本地文件一样顺。",
"version": "1.0.0"
},
"paths": {
"/v1/xs_fq": {
"get": {
"summary": "番茄小说",
"description": "想看小说,搜书名、看简介、翻目录、读正文,一次就能走完;想听书什么都不用折腾,拿到的就是能直接播放的音频,想换音色、换音轨也随心,进度条随便拖,跟本地文件一样顺。",
"parameters": [
{
"name": "key",
"in": "query",
"required": true,
"schema": {
"type": "string"
},
"description": "接口调用密钥"
},
{
"name": "action",
"in": "query",
"required": true,
"schema": {
"type": "string"
},
"description": "操作类型,仅可为:search(搜索)、detail(详情)、chapters(目录)、read(正文)、audio(听书,解密后返回本地播放地址)、audio.info(听书原始加密流信息)、audio.prepare(解密生成本地音频)、chapter.info(章节信息)、media.file(输出本地音频,支持 Range)、capabilities(上游能力)"
},
{
"name": "keyword",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "搜索关键词,仅当 action 为 search(搜索)时必填;等价参数 query"
},
{
"name": "offset",
"in": "query",
"required": false,
"schema": {
"type": "integer"
},
"description": "分页偏移,仅当 action 为 search、chapters 时有效,从 0 开始"
},
{
"name": "limit",
"in": "query",
"required": false,
"schema": {
"type": "integer"
},
"description": "每页条数,仅当 action 为 search、chapters 时有效"
},
{
"name": "search_id",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "搜索会话 ID,仅当 action 为 search 时有效,用于翻页续搜"
},
{
"name": "with_details",
"in": "query",
"required": false,
"schema": {
"type": "integer"
},
"description": "是否返回章节附加详情(0/1),仅当 action 为 chapters 时有效"
},
{
"name": "book_id",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "小说 ID(1-20 位数字字符串,务必按字符串传),仅当 action 为 detail、chapters、read、audio、audio.info、audio.prepare 时有效"
},
{
"name": "item_id",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "章节/音频条目 ID(1-20 位数字字符串),仅当 action 为 read、audio、audio.info、audio.prepare、chapter.info 时有效"
},
{
"name": "tone_id",
"in": "query",
"required": false,
"schema": {
"type": "integer"
},
"description": "音色 ID(0-100000),仅当 action 为 audio、audio.info、audio.prepare 时有效;不传由上游自动选音色"
},
{
"name": "stream_index",
"in": "query",
"required": false,
"schema": {
"type": "integer"
},
"description": "音频流下标(0-20,默认 0),仅当 action 为 audio、audio.prepare 时有效;不同下标各自解密并各自缓存"
},
{
"name": "quality",
"in": "query",
"required": false,
"schema": {
"type": "integer"
},
"description": "stream_index 的别名(0-20),仅当 action 为 audio 时有效,与 stream_index 共用一个缓存键"
},
{
"name": "token",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "媒体令牌(48 位小写十六进制),仅当 action 为 media.file 时必填,由 audio 返回的 play_url 自动带出"
},
{
"name": "nocache",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "任意非空值(如 1)即跳过 25 分钟 JSON 缓存并重新取上游;等价参数 refresh,不参与缓存键"
}
],
"responses": {
"200": {
"description": "成功",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
}
}
},
"post": {
"summary": "番茄小说",
"description": "想看小说,搜书名、看简介、翻目录、读正文,一次就能走完;想听书什么都不用折腾,拿到的就是能直接播放的音频,想换音色、换音轨也随心,进度条随便拖,跟本地文件一样顺。",
"parameters": [
{
"name": "key",
"in": "query",
"required": true,
"schema": {
"type": "string"
},
"description": "接口调用密钥"
},
{
"name": "action",
"in": "query",
"required": true,
"schema": {
"type": "string"
},
"description": "操作类型,仅可为:search(搜索)、detail(详情)、chapters(目录)、read(正文)、audio(听书,解密后返回本地播放地址)、audio.info(听书原始加密流信息)、audio.prepare(解密生成本地音频)、chapter.info(章节信息)、media.file(输出本地音频,支持 Range)、capabilities(上游能力)"
},
{
"name": "keyword",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "搜索关键词,仅当 action 为 search(搜索)时必填;等价参数 query"
},
{
"name": "offset",
"in": "query",
"required": false,
"schema": {
"type": "integer"
},
"description": "分页偏移,仅当 action 为 search、chapters 时有效,从 0 开始"
},
{
"name": "limit",
"in": "query",
"required": false,
"schema": {
"type": "integer"
},
"description": "每页条数,仅当 action 为 search、chapters 时有效"
},
{
"name": "search_id",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "搜索会话 ID,仅当 action 为 search 时有效,用于翻页续搜"
},
{
"name": "with_details",
"in": "query",
"required": false,
"schema": {
"type": "integer"
},
"description": "是否返回章节附加详情(0/1),仅当 action 为 chapters 时有效"
},
{
"name": "book_id",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "小说 ID(1-20 位数字字符串,务必按字符串传),仅当 action 为 detail、chapters、read、audio、audio.info、audio.prepare 时有效"
},
{
"name": "item_id",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "章节/音频条目 ID(1-20 位数字字符串),仅当 action 为 read、audio、audio.info、audio.prepare、chapter.info 时有效"
},
{
"name": "tone_id",
"in": "query",
"required": false,
"schema": {
"type": "integer"
},
"description": "音色 ID(0-100000),仅当 action 为 audio、audio.info、audio.prepare 时有效;不传由上游自动选音色"
},
{
"name": "stream_index",
"in": "query",
"required": false,
"schema": {
"type": "integer"
},
"description": "音频流下标(0-20,默认 0),仅当 action 为 audio、audio.prepare 时有效;不同下标各自解密并各自缓存"
},
{
"name": "quality",
"in": "query",
"required": false,
"schema": {
"type": "integer"
},
"description": "stream_index 的别名(0-20),仅当 action 为 audio 时有效,与 stream_index 共用一个缓存键"
},
{
"name": "token",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "媒体令牌(48 位小写十六进制),仅当 action 为 media.file 时必填,由 audio 返回的 play_url 自动带出"
},
{
"name": "nocache",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "任意非空值(如 1)即跳过 25 分钟 JSON 缓存并重新取上游;等价参数 refresh,不参与缓存键"
}
],
"responses": {
"200": {
"description": "成功",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
}
}
}
}
},
"servers": [
{
"url": "https://xiaoapi.cn",
"description": "当前访问入口(https)"
}
]
}
{
"ok": true,
"code": "OK",
"data": {
"token": "f36b7f2eb78be688031ecebd96ab46f295b9e53db609f4ce",
"expires_at": 1794324528,
"bytes": 7788318,
"sha256": "070d9429e632c36a5a5e6f7b65d54a9bc742982b660f2b80d68ee32bd78833a9",
"tracks": 1,
"samples": 20305,
"mime": "audio/mp4",
"video_meta": {
"quality": "higher",
"vtype": "m4a",
"bitrate": 132164,
"codec_type": "aac",
"size": 7788318,
"file_id": "ea57513d5ebe482e827fef06f567d2e9",
"file_hash": "03b3675a04599efbdcf096c17ec10fca",
"real_bitrate": 132164,
"audio_sample_rate": "44100"
},
"play_url": "xs_fq.php?action=media.file&token=f36b7f2eb78be688031ecebd96ab46f295b9e53db609f4ce",
"encrypted": false,
"runtime": "php_only",
"play_url_abs": "https://xiaoapi.cn/v1/xs_fq.php?action=media.file&token=f36b7f2eb78be688031ecebd96ab46f295b9e53db609f4ce",
"play_url_token": "f36b7f2eb78be688031ecebd96ab46f295b9e53db609f4ce"
},
"meta": {
"mode": "live_php_signed",
"independent_signing": true,
"signing_timestamp": 1794320892,
"timestamp_age_seconds": 32,
"local_digest_selector": 4,
"algorithm_family": "validated_branch",
"capture_signature": false,
"capture_protobuf": false,
"local_php_decryption": true,
"warning": "个别编码格式可能不受浏览器支持。"
}
}
暂无详细文档
暂无代码示例。管理员可在后台用 AI 生成或手动编写。
// 结果将在此处显示
生效日期:2026年7月22日
欢迎使用 xiaoapi.cn(以下简称"本平台")。在使用本平台提供的 API 服务(以下简称"本服务")前,请务必仔细阅读并充分理解本免责声明。您以任何方式调用、访问或使用本服务,即视为您已阅读、理解并同意接受本声明的全部内容。
本平台作为 API 技术服务的提供方,仅提供技术接口与数据分发服务。本声明的目的在于明确平台与用户之间的责任边界,督促用户合法、合规地使用本服务,防范违法违规行为的发生。
用户在使用本服务时,明确禁止从事以下行为:
在法律法规允许的最大范围内,本平台对以下情形不承担责任:
因用户违反本声明或相关法律法规,导致本平台及其关联方、合作方遭受任何损失(包括但不限于赔偿款、罚款、律师费、诉讼费等),用户同意向本平台及相关方承担全部赔偿责任。
本平台有权根据法律法规变化、业务调整或监管要求,随时修改本声明。修改后的声明将在本页面公布,自公布之日起生效。您继续使用本服务,即视为接受更新后的声明。
如您对本声明有任何疑问,或发现他人存在违规使用本服务的行为,欢迎通过本平台公示的联系方式与我们联系,我们将及时处理。