懒懒听书
接口信息
GET / POST
api.vsaa.cn/api/book/lrts/index.php
Method
GET / POST
分类
复始归元
Calls
549
KEY
KEY 必填
计费
免费
QPM
60/MIN
鉴权方式
Query 参数
作者
请求参数
| 参数名 | 类型 | 必填 | 说明 | 示例 |
|---|---|---|---|---|
| key | string | 是 | 接口调用密钥 | |
| action | string | 是 | 操作方法,search.suggest | search.suggest |
| keyWord | string | 否 | 搜索联想关键词 | 斗破苍穹 |
| action | string | 否 | 操作方法,search.hotList | search.hotList |
| action | string | 否 | 操作方法,search.defaultList | search.defaultList |
| recommendListType | integer | 否 | 推荐列表类型 | 1 |
| searchFrom | integer | 否 | 搜索来源 | 0 |
| action | string | 否 | 操作方法,search.all | search.all |
| keyWord | string | 否 | 综合搜索关键词,返回书/音乐/主播/合集 | 斗破苍穹 |
| action | string | 否 | 操作方法,search.book | search.book |
| keyWord | string | 否 | 搜有声书关键词 | 斗破苍穹 |
| pageId | integer | 否 | 页码,结果 id 即 bookId | 1 |
| action | string | 否 | 操作方法,search.bookAlbum | search.bookAlbum |
| keyWord | string | 否 | 搜书+专辑混合关键词 | 斗破苍穹 |
| action | string | 否 | 操作方法,search.section | search.section |
| keyWord | string | 否 | 按章节/单集搜索关键词 | 斗破苍穹 |
| action | string | 否 | 操作方法,search.music | search.music |
| keyWord | string | 否 | 搜音乐单曲关键词,结果 songMid 用于 music.mediaUrl | 斗破苍穹 |
| action | string | 否 | 操作方法,search.announcer | search.announcer |
| keyWord | string | 否 | 搜主播/演播者关键词 | 斗破苍穹 |
| action | string | 否 | 操作方法,search.folder | search.folder |
| keyWord | string | 否 | 搜合集/歌单关键词 | 斗破苍穹 |
| action | string | 否 | 操作方法,search.batch | search.batch |
| keyWord | string | 否 | 旧版批量搜索关键词 | 斗破苍穹 |
| pageNum | integer | 否 | 页码 | 1 |
| pageSize | integer | 否 | 每页数量 | 20 |
| action | string | 否 | 操作方法,book.detail | book.detail |
| id | string | 否 | 书籍 ID(bookId) | 123456 |
| type | integer | 否 | 类型 | 1 |
| reqMask | integer | 否 | 请求掩码 | 1 |
| source | integer | 否 | 来源 | 1 |
| trackSize | integer | 否 | 预取章节数 | 50 |
| action | string | 否 | 操作方法,book.detailPage | book.detailPage |
| bookId | string | 否 | 书籍 ID | 123456 |
| action | string | 否 | 操作方法,book.resource | book.resource |
| bookId | string | 否 | 书籍 ID | 123456 |
| pageNum | integer | 否 | 页码 | 1 |
| pageSize | integer | 否 | 每页数量,最大 50 | 50 |
| sortType | integer | 否 | 排序方式 | 1 |
| isUp | integer | 否 | 是否升序 | 1 |
| action | string | 否 | 操作方法,book.playerPage | book.playerPage |
| flag | string | 否 | 播放页附加信息标识,传 bookId | 123456 |
| action | string | 否 | 操作方法,book.similar | book.similar |
| entityId | string | 否 | 实体 ID,传 bookId | 123456 |
| entityType | integer | 否 | 实体类型 | 1 |
| reqType | integer | 否 | 请求类型 | 382 |
| typePageSize | string | 否 | 分组_数量 | 1_10 |
| action | string | 否 | 操作方法,book.recommendBy | book.recommendBy |
| id | string | 否 | 书籍 ID | 123456 |
| size | integer | 否 | 推荐条数 | 10 |
| type | integer | 否 | 类型 | 0 |
| action | string | 否 | 操作方法,listen.resource | listen.resource |
| bookId | string | 否 | 书籍 ID | 123456 |
| pageNum | integer | 否 | 页码 | 1 |
| pageSize | integer | 否 | 每页数量 | 50 |
| sortType | integer | 否 | 排序方式 | 1 |
| isUp | integer | 否 | 是否升序 | 1 |
| action | string | 否 | 操作方法,listen.path | listen.path |
| entityId | string | 否 | 实体 ID,传 bookId | 123456 |
| resId | string | 否 | 章节 sectionId | 987654 |
| section | integer | 否 | 章节序号 | 1 |
| trackId | string | 否 | 章节 tmeId,可空 | |
| opType | integer | 否 | 操作类型 | 0 |
| quality | integer | 否 | 音质,status=26 为会员章节 | 1 |
| action | string | 否 | 操作方法,listen.batchPath | listen.batchPath |
| sections | string | 否 | 序号_sectionId 逗号分隔 | 1_987654,2_987655 |
| trackIds | string | 否 | 对应 tmeId 逗号分隔,数量与 sections 一致 | 111111,222222 |
| entityId | string | 否 | 实体 ID,传 bookId | 123456 |
| action | string | 否 | 操作方法,listen.aiLrc | listen.aiLrc |
| id | string | 否 | 章节 sectionId | 987654 |
| section | integer | 否 | 章节序号 | 1 |
| aiLrcFormat | integer | 否 | AI 字幕格式:1=lrc 默认,2=qrc 逐字 | 1 |
| filePath | string | 否 | 文件路径,免签直接下载 | |
| action | string | 否 | 操作方法,music.mediaUrl | music.mediaUrl |
| songMid | string | 否 | 音乐 ID,来自 search.music 结果 | 0039MnYb0qxYhV |
| opType | integer | 否 | 操作类型 | 0 |
| action | string | 否 | 操作方法,music.list | music.list |
| action | string | 否 | 操作方法,music.lyric | music.lyric |
| mid | string | 否 | 音乐 ID | 0039MnYb0qxYhV |
| action | string | 否 | 操作方法,home.head | home.head |
| size | integer | 否 | 条数 | 10 |
| action | string | 否 | 操作方法,home.feed | home.feed |
| rankId | string | 否 | 榜单 ID | 1 |
| rangeType | integer | 否 | 范围类型 | 6 |
| referId | string | 否 | 页游标 | |
| size | integer | 否 | 条数 | 20 |
| action | string | 否 | 操作方法,home.channelFeed | home.channelFeed |
| channelId | string | 否 | 频道 ID,来自 home.channelList | 1 |
| subChannelId | string | 否 | 子频道 ID,来自 home.channelList | 2 |
| referId | string | 否 | 页游标 | 20 |
| size | integer | 否 | 条数 | 20 |
| action | string | 否 | 操作方法,home.channelFeedCfg | home.channelFeedCfg |
| channelId | string | 否 | 分类 ID | 1 |
| referId | string | 否 | 首页传字符串 null | null |
| size | integer | 否 | 条数 | 20 |
| action | string | 否 | 操作方法,home.channelList | home.channelList |
| action | string | 否 | 操作方法,home.navigationBar | home.navigationBar |
| id | string | 否 | 频道 ID | 1 |
| action | string | 否 | 操作方法,home.similarLite | home.similarLite |
| entityId | string | 否 | 实体 ID | 123456 |
| entityType | integer | 否 | 实体类型 | 1 |
| action | string | 否 | 操作方法,comment.list | comment.list |
| entityId | string | 否 | 实体 ID | 123456 |
| entityType | integer | 否 | 实体类型 | 1 |
| pageId | integer | 否 | 页码 | 1 |
[
{
"name": "key",
"type": "string",
"required": true,
"description": "接口调用密钥",
"example": ""
},
{
"name": "action",
"type": "string",
"required": true,
"description": "操作方法,search.suggest",
"example": "search.suggest"
},
{
"name": "keyWord",
"type": "string",
"required": false,
"description": "搜索联想关键词",
"example": "斗破苍穹"
},
{
"name": "action",
"type": "string",
"required": false,
"description": "操作方法,search.hotList",
"example": "search.hotList"
},
{
"name": "action",
"type": "string",
"required": false,
"description": "操作方法,search.defaultList",
"example": "search.defaultList"
},
{
"name": "recommendListType",
"type": "integer",
"required": false,
"description": "推荐列表类型",
"example": "1"
},
{
"name": "searchFrom",
"type": "integer",
"required": false,
"description": "搜索来源",
"example": "0"
},
{
"name": "action",
"type": "string",
"required": false,
"description": "操作方法,search.all",
"example": "search.all"
},
{
"name": "keyWord",
"type": "string",
"required": false,
"description": "综合搜索关键词,返回书/音乐/主播/合集",
"example": "斗破苍穹"
},
{
"name": "action",
"type": "string",
"required": false,
"description": "操作方法,search.book",
"example": "search.book"
},
{
"name": "keyWord",
"type": "string",
"required": false,
"description": "搜有声书关键词",
"example": "斗破苍穹"
},
{
"name": "pageId",
"type": "integer",
"required": false,
"description": "页码,结果 id 即 bookId",
"example": "1"
},
{
"name": "action",
"type": "string",
"required": false,
"description": "操作方法,search.bookAlbum",
"example": "search.bookAlbum"
},
{
"name": "keyWord",
"type": "string",
"required": false,
"description": "搜书+专辑混合关键词",
"example": "斗破苍穹"
},
{
"name": "action",
"type": "string",
"required": false,
"description": "操作方法,search.section",
"example": "search.section"
},
{
"name": "keyWord",
"type": "string",
"required": false,
"description": "按章节/单集搜索关键词",
"example": "斗破苍穹"
},
{
"name": "action",
"type": "string",
"required": false,
"description": "操作方法,search.music",
"example": "search.music"
},
{
"name": "keyWord",
"type": "string",
"required": false,
"description": "搜音乐单曲关键词,结果 songMid 用于 music.mediaUrl",
"example": "斗破苍穹"
},
{
"name": "action",
"type": "string",
"required": false,
"description": "操作方法,search.announcer",
"example": "search.announcer"
},
{
"name": "keyWord",
"type": "string",
"required": false,
"description": "搜主播/演播者关键词",
"example": "斗破苍穹"
},
{
"name": "action",
"type": "string",
"required": false,
"description": "操作方法,search.folder",
"example": "search.folder"
},
{
"name": "keyWord",
"type": "string",
"required": false,
"description": "搜合集/歌单关键词",
"example": "斗破苍穹"
},
{
"name": "action",
"type": "string",
"required": false,
"description": "操作方法,search.batch",
"example": "search.batch"
},
{
"name": "keyWord",
"type": "string",
"required": false,
"description": "旧版批量搜索关键词",
"example": "斗破苍穹"
},
{
"name": "pageNum",
"type": "integer",
"required": false,
"description": "页码",
"example": "1"
},
{
"name": "pageSize",
"type": "integer",
"required": false,
"description": "每页数量",
"example": "20"
},
{
"name": "action",
"type": "string",
"required": false,
"description": "操作方法,book.detail",
"example": "book.detail"
},
{
"name": "id",
"type": "string",
"required": false,
"description": "书籍 ID(bookId)",
"example": "123456"
},
{
"name": "type",
"type": "integer",
"required": false,
"description": "类型",
"example": "1"
},
{
"name": "reqMask",
"type": "integer",
"required": false,
"description": "请求掩码",
"example": "1"
},
{
"name": "source",
"type": "integer",
"required": false,
"description": "来源",
"example": "1"
},
{
"name": "trackSize",
"type": "integer",
"required": false,
"description": "预取章节数",
"example": "50"
},
{
"name": "action",
"type": "string",
"required": false,
"description": "操作方法,book.detailPage",
"example": "book.detailPage"
},
{
"name": "bookId",
"type": "string",
"required": false,
"description": "书籍 ID",
"example": "123456"
},
{
"name": "action",
"type": "string",
"required": false,
"description": "操作方法,book.resource",
"example": "book.resource"
},
{
"name": "bookId",
"type": "string",
"required": false,
"description": "书籍 ID",
"example": "123456"
},
{
"name": "pageNum",
"type": "integer",
"required": false,
"description": "页码",
"example": "1"
},
{
"name": "pageSize",
"type": "integer",
"required": false,
"description": "每页数量,最大 50",
"example": "50"
},
{
"name": "sortType",
"type": "integer",
"required": false,
"description": "排序方式",
"example": "1"
},
{
"name": "isUp",
"type": "integer",
"required": false,
"description": "是否升序",
"example": "1"
},
{
"name": "action",
"type": "string",
"required": false,
"description": "操作方法,book.playerPage",
"example": "book.playerPage"
},
{
"name": "flag",
"type": "string",
"required": false,
"description": "播放页附加信息标识,传 bookId",
"example": "123456"
},
{
"name": "action",
"type": "string",
"required": false,
"description": "操作方法,book.similar",
"example": "book.similar"
},
{
"name": "entityId",
"type": "string",
"required": false,
"description": "实体 ID,传 bookId",
"example": "123456"
},
{
"name": "entityType",
"type": "integer",
"required": false,
"description": "实体类型",
"example": "1"
},
{
"name": "reqType",
"type": "integer",
"required": false,
"description": "请求类型",
"example": "382"
},
{
"name": "typePageSize",
"type": "string",
"required": false,
"description": "分组_数量",
"example": "1_10"
},
{
"name": "action",
"type": "string",
"required": false,
"description": "操作方法,book.recommendBy",
"example": "book.recommendBy"
},
{
"name": "id",
"type": "string",
"required": false,
"description": "书籍 ID",
"example": "123456"
},
{
"name": "size",
"type": "integer",
"required": false,
"description": "推荐条数",
"example": "10"
},
{
"name": "type",
"type": "integer",
"required": false,
"description": "类型",
"example": "0"
},
{
"name": "action",
"type": "string",
"required": false,
"description": "操作方法,listen.resource",
"example": "listen.resource"
},
{
"name": "bookId",
"type": "string",
"required": false,
"description": "书籍 ID",
"example": "123456"
},
{
"name": "pageNum",
"type": "integer",
"required": false,
"description": "页码",
"example": "1"
},
{
"name": "pageSize",
"type": "integer",
"required": false,
"description": "每页数量",
"example": "50"
},
{
"name": "sortType",
"type": "integer",
"required": false,
"description": "排序方式",
"example": "1"
},
{
"name": "isUp",
"type": "integer",
"required": false,
"description": "是否升序",
"example": "1"
},
{
"name": "action",
"type": "string",
"required": false,
"description": "操作方法,listen.path",
"example": "listen.path"
},
{
"name": "entityId",
"type": "string",
"required": false,
"description": "实体 ID,传 bookId",
"example": "123456"
},
{
"name": "resId",
"type": "string",
"required": false,
"description": "章节 sectionId",
"example": "987654"
},
{
"name": "section",
"type": "integer",
"required": false,
"description": "章节序号",
"example": "1"
},
{
"name": "trackId",
"type": "string",
"required": false,
"description": "章节 tmeId,可空",
"example": ""
},
{
"name": "opType",
"type": "integer",
"required": false,
"description": "操作类型",
"example": "0"
},
{
"name": "quality",
"type": "integer",
"required": false,
"description": "音质,status=26 为会员章节",
"example": "1"
},
{
"name": "action",
"type": "string",
"required": false,
"description": "操作方法,listen.batchPath",
"example": "listen.batchPath"
},
{
"name": "sections",
"type": "string",
"required": false,
"description": "序号_sectionId 逗号分隔",
"example": "1_987654,2_987655"
},
{
"name": "trackIds",
"type": "string",
"required": false,
"description": "对应 tmeId 逗号分隔,数量与 sections 一致",
"example": "111111,222222"
},
{
"name": "entityId",
"type": "string",
"required": false,
"description": "实体 ID,传 bookId",
"example": "123456"
},
{
"name": "action",
"type": "string",
"required": false,
"description": "操作方法,listen.aiLrc",
"example": "listen.aiLrc"
},
{
"name": "id",
"type": "string",
"required": false,
"description": "章节 sectionId",
"example": "987654"
},
{
"name": "section",
"type": "integer",
"required": false,
"description": "章节序号",
"example": "1"
},
{
"name": "aiLrcFormat",
"type": "integer",
"required": false,
"description": "AI 字幕格式:1=lrc 默认,2=qrc 逐字",
"example": "1"
},
{
"name": "filePath",
"type": "string",
"required": false,
"description": "文件路径,免签直接下载",
"example": ""
},
{
"name": "action",
"type": "string",
"required": false,
"description": "操作方法,music.mediaUrl",
"example": "music.mediaUrl"
},
{
"name": "songMid",
"type": "string",
"required": false,
"description": "音乐 ID,来自 search.music 结果",
"example": "0039MnYb0qxYhV"
},
{
"name": "opType",
"type": "integer",
"required": false,
"description": "操作类型",
"example": "0"
},
{
"name": "action",
"type": "string",
"required": false,
"description": "操作方法,music.list",
"example": "music.list"
},
{
"name": "action",
"type": "string",
"required": false,
"description": "操作方法,music.lyric",
"example": "music.lyric"
},
{
"name": "mid",
"type": "string",
"required": false,
"description": "音乐 ID",
"example": "0039MnYb0qxYhV"
},
{
"name": "action",
"type": "string",
"required": false,
"description": "操作方法,home.head",
"example": "home.head"
},
{
"name": "size",
"type": "integer",
"required": false,
"description": "条数",
"example": "10"
},
{
"name": "action",
"type": "string",
"required": false,
"description": "操作方法,home.feed",
"example": "home.feed"
},
{
"name": "rankId",
"type": "string",
"required": false,
"description": "榜单 ID",
"example": "1"
},
{
"name": "rangeType",
"type": "integer",
"required": false,
"description": "范围类型",
"example": "6"
},
{
"name": "referId",
"type": "string",
"required": false,
"description": "页游标",
"example": ""
},
{
"name": "size",
"type": "integer",
"required": false,
"description": "条数",
"example": "20"
},
{
"name": "action",
"type": "string",
"required": false,
"description": "操作方法,home.channelFeed",
"example": "home.channelFeed"
},
{
"name": "channelId",
"type": "string",
"required": false,
"description": "频道 ID,来自 home.channelList",
"example": "1"
},
{
"name": "subChannelId",
"type": "string",
"required": false,
"description": "子频道 ID,来自 home.channelList",
"example": "2"
},
{
"name": "referId",
"type": "string",
"required": false,
"description": "页游标",
"example": "20"
},
{
"name": "size",
"type": "integer",
"required": false,
"description": "条数",
"example": "20"
},
{
"name": "action",
"type": "string",
"required": false,
"description": "操作方法,home.channelFeedCfg",
"example": "home.channelFeedCfg"
},
{
"name": "channelId",
"type": "string",
"required": false,
"description": "分类 ID",
"example": "1"
},
{
"name": "referId",
"type": "string",
"required": false,
"description": "首页传字符串 null",
"example": "null"
},
{
"name": "size",
"type": "integer",
"required": false,
"description": "条数",
"example": "20"
},
{
"name": "action",
"type": "string",
"required": false,
"description": "操作方法,home.channelList",
"example": "home.channelList"
},
{
"name": "action",
"type": "string",
"required": false,
"description": "操作方法,home.navigationBar",
"example": "home.navigationBar"
},
{
"name": "id",
"type": "string",
"required": false,
"description": "频道 ID",
"example": "1"
},
{
"name": "action",
"type": "string",
"required": false,
"description": "操作方法,home.similarLite",
"example": "home.similarLite"
},
{
"name": "entityId",
"type": "string",
"required": false,
"description": "实体 ID",
"example": "123456"
},
{
"name": "entityType",
"type": "integer",
"required": false,
"description": "实体类型",
"example": "1"
},
{
"name": "action",
"type": "string",
"required": false,
"description": "操作方法,comment.list",
"example": "comment.list"
},
{
"name": "entityId",
"type": "string",
"required": false,
"description": "实体 ID",
"example": "123456"
},
{
"name": "entityType",
"type": "integer",
"required": false,
"description": "实体类型",
"example": "1"
},
{
"name": "pageId",
"type": "integer",
"required": false,
"description": "页码",
"example": "1"
}
]
返回示例
{
"name": "lrts-api",
"version": "0.4.1",
"updated": "2026-09-10",
"usage": "index.php?action=模块.方法[&参数...],例如 ?action=search.book&keyWord=斗破苍穹&pageId=1",
"tester": "test/index.html",
"groups": {
"search": [
{
"action": "search.suggest",
"method": "GET",
"title": "搜索联想词",
"usage": "keyWord=关键词"
},
{
"action": "search.hotList",
"method": "GET",
"title": "热搜榜",
"usage": "无参数"
},
{
"action": "search.defaultList",
"method": "GET",
"title": "搜索页默认推荐词",
"usage": "recommendListType=1&searchFrom=0"
},
{
"action": "search.all",
"method": "GET",
"title": "综合搜索(书/音乐/主播/合集一次返回)",
"usage": "keyWord=关键词"
},
{
"action": "search.book",
"method": "GET",
"title": "搜有声书",
"usage": "keyWord=关键词&pageId=页码;结果 id 即 bookId"
},
{
"action": "search.bookAlbum",
"method": "GET",
"title": "搜书+专辑混合",
"usage": "keyWord=关键词"
},
{
"action": "search.section",
"method": "GET",
"title": "按章节/单集搜索",
"usage": "keyWord=关键词"
},
{
"action": "search.music",
"method": "GET",
"title": "搜音乐单曲",
"usage": "keyWord=关键词;结果 songMid 用于 music.mediaUrl"
},
{
"action": "search.announcer",
"method": "GET",
"title": "搜主播/演播者",
"usage": "keyWord=关键词"
},
{
"action": "search.folder",
"method": "GET",
"title": "搜合集/歌单",
"usage": "keyWord=关键词"
},
{
"action": "search.batch",
"method": "GET",
"title": "旧版批量搜索",
"usage": "keyWord&pageNum&pageSize"
}
],
"book": [
{
"action": "book.detail",
"method": "GET",
"title": "书籍详情(名称/作者/主播/简介等)",
"usage": "id=bookId&type=1&reqMask=1&source=1&trackSize=预取章节数"
},
{
"action": "book.detailPage",
"method": "GET",
"title": "旧版详情页聚合",
"usage": "bookId=书籍ID"
},
{
"action": "book.resource",
"method": "GET",
"title": "章节列表",
"usage": "bookId&pageNum&pageSize(≤50)&sortType=1&isUp=1;每章含 id/sectionId/section/tmeId/feeType"
},
{
"action": "book.playerPage",
"method": "GET",
"title": "播放页附加信息",
"usage": "flag=bookId"
},
{
"action": "book.similar",
"method": "GET",
"title": "相似书籍推荐",
"usage": "entityId=bookId&entityType=1&reqType=382&typePageSize=分组_数量"
},
{
"action": "book.recommendBy",
"method": "GET",
"title": "基于书籍的相关推荐",
"usage": "id=bookId&size=条数&type=0"
}
],
"listen": [
{
"action": "listen.resource",
"method": "GET",
"title": "章节列表(同 book.resource)",
"usage": "bookId&pageNum&pageSize&sortType=1&isUp=1"
},
{
"action": "listen.path",
"method": "GET",
"title": "单章音频播放地址(m4a直链,24h有效)",
"usage": "entityId=bookId&resId=章节sectionId§ion=序号&trackId=章节tmeId(可空)&opType=0&quality=1;status=26为会员章节"
},
{
"action": "listen.batchPath",
"method": "POST",
"title": "批量取多章地址(JSON体)",
"usage": "sections=序号_sectionId逗号分隔&trackIds=对应tmeId逗号分隔(数量一致)&entityId=bookId;数字自动转int"
},
{
"action": "listen.aiLrc",
"method": "GET",
"title": "AI字幕(正文文字)",
"usage": "id=章节sectionId§ion=序号&aiLrcFormat: 1=lrc(默认) 2=qrc逐字;filePath免签直接下载"
}
],
"music": [
{
"action": "music.mediaUrl",
"method": "GET",
"title": "音乐播放地址",
"usage": "songMid=音乐ID(search.music结果)&opType=0"
},
{
"action": "music.list",
"method": "GET",
"title": "推荐音乐列表",
"usage": "无必需参数;依赖推荐场景,空结果正常"
},
{
"action": "music.lyric",
"method": "GET",
"title": "歌词",
"usage": "mid=音乐ID"
}
],
"home": [
{
"action": "home.head",
"method": "GET",
"title": "首页头部(轮播/入口)",
"usage": "size=条数"
},
{
"action": "home.feed",
"method": "GET",
"title": "首页信息流(榜单)",
"usage": "rankId=榜单ID&rangeType=6&referId=页游标&size=条数"
},
{
"action": "home.channelFeed",
"method": "GET",
"title": "频道页信息流",
"usage": "channelId/subChannelId=来自home.channelList&referId=20&size=条数"
},
{
"action": "home.channelFeedCfg",
"method": "GET",
"title": "频道页信息流(配置版)",
"usage": "channelId=分类ID&referId=首页传字符串null&size=条数"
},
{
"action": "home.channelList",
"method": "GET",
"title": "全部分类频道列表",
"usage": "无参数;先调本接口拿 channelId"
},
{
"action": "home.navigationBar",
"method": "GET",
"title": "底部导航栏配置",
"usage": "id=频道ID"
},
{
"action": "home.similarLite",
"method": "GET",
"title": "相似推荐精简版",
"usage": "entityId=实体ID&entityType=1"
}
],
"comment": [
{
"action": "comment.list",
"method": "GET",
"title": "评论列表",
"usage": "entityId=实体ID&entityType=1&pageId=页码"
}
]
},
"total": 32
}
详细文档
懒懒听书
接口说明
懒懒听书提供有声书、音乐、主播及合集的综合搜索与播放能力,支持搜索联想、热门榜单、书籍详情、章节音频直链、AI 字幕等核心功能,无需密钥即可调用。面向需要获取听书资源、播放地址及推荐内容的开发者,全部接口免费,频率限制约为每分钟 60 次。
调用地址
/api/book/lrts/index.php
所有接口均通过此单一地址接收请求,通过 action 参数区分具体操作。
请求方式
支持 GET 和 POST 两种请求方式。GET 适用于常规查询与资源获取,POST 适用于批量操作场景(如批量获取章节播放地址)。
鉴权说明
本接口无需任何鉴权密钥即可直接调用。
请求参数
所有接口通过 action 字段路由,格式为 模块.方法。其余参数依 action 取值而定。
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| action | string | 是 | 操作方法,格式 模块.方法,见下表 |
| keyWord | string | 否 | 搜索关键词,用于各类搜索接口 |
| id | string | 否 | 书籍 ID(bookId),用于 book.detail 等 |
| bookId | string | 否 | 书籍 ID,用于 book.detailPage、listen.resource 等 |
| flag | string | 否 | 播放页附加信息标识,传 bookId,用于 book.playerPage |
| entityId | string | 否 | 实体 ID,通常传 bookId,用于 book.similar、listen.path 等 |
| entityType | integer | 否 | 实体类型,固定传 1 |
| reqType | integer | 否 | 请求类型,固定传 382,用于 book.similar |
| typePageSize | string | 否 | 分组_数量,格式如 1_10,用于 book.similar |
| size | integer | 否 | 推荐/列表条数,依接口而定 |
| type | integer | 否 | 类型,依接口而定,如 book.detail 传 1 |
| reqMask | integer | 否 | 请求掩码,用于 book.detail,传 1 |
| source | integer | 否 | 来源,用于 book.detail,传 1 |
| trackSize | integer | 否 | 预取章节数,用于 book.detail,默认 50 |
| recommendListType | integer | 否 | 推荐列表类型,用于 search.defaultList,传 1 |
| searchFrom | integer | 否 | 搜索来源,用于 search.defaultList,传 0 |
| pageNum / pageSize | integer | 否 | 页码 / 每页数量,用于分页查询 |
| sortType | integer | 否 | 排序方式,用于章节列表,传 1 |
| isUp | integer | 否 | 是否升序,用于章节列表,传 1 |
| resId | string | 否 | 章节 sectionId,用于 listen.path |
| section | integer | 否 | 章节序号,用于 listen.path、listen.aiLrc |
| trackId | string | 否 | 章节 tmeId,用于 listen.path,可空 |
| opType | integer | 否 | 操作类型,固定传 0 |
| quality | integer | 否 | 音质,固定传 1;status=26 为会员章节 |
| sections | string | 否 | 序号_sectionId 逗号分隔,用于批量取地址 |
| trackIds | string | 否 | 对应 tmeId 逗号分隔,数量与 sections 一致 |
| aiLrcFormat | integer | 否 | AI 字幕格式:1=lrc 默认,2=qrc 逐字 |
| filePath | string | 否 | 文件路径,用于免签直接下载 |
| songMid | string | 否 | 音乐 ID,来自 search.music 结果 |
| mid | string | 否 | 音乐 ID,用于 music.lyric |
| rankId | string | 否 | 榜单 ID,用于 home.feed |
| rangeType | integer | 否 | 范围类型,用于 home.feed,传 6 |
| referId | string | 否 | 页游标,用于翻页 |
| channelId | string | 否 | 频道 ID,来自 home.channelList |
| subChannelId | string | 否 | 子频道 ID,来自 home.channelList |
action 取值说明
| action | 模块 | 说明 | 必需参数 |
|---|---|---|---|
| search.suggest | 搜索 | 联想词 | keyWord |
| search.hotList | 搜索 | 热搜榜 | 无 |
| search.defaultList | 搜索 | 默认推荐词 | recommendListType, searchFrom |
| search.all | 搜索 | 综合搜索 | keyWord |
| search.book | 搜索 | 搜有声书 | keyWord, pageId |
| search.bookAlbum | 搜索 | 书+专辑混合 | keyWord |
| search.section | 搜索 | 按章节搜索 | keyWord |
| search.music | 搜索 | 搜音乐单曲 | keyWord |
| search.announcer | 搜索 |
成功响应示例
{
"result": 1,
"data": {
"list": [
{
"id": "123456",
"name": "斗破苍穹",
"author": "天蚕土豆",
"announcer": "云天河",
"coverUrl": "https://example.com/cover.jpg",
"desc": "讲述了天才少年萧炎在创造了家族空前绝后的修炼纪录后突然成了废人...",
"totalSection": 1536,
"status": 1,
"feeType": 0
}
],
"total": 1,
"pageId": 1
}
}
响应字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
| result | integer | 请求结果状态码,1 表示成功 |
| data | object | 业务数据容器 |
| data.list | array | 结果列表,不同 action 返回结构略有差异 |
| data.total | integer | 总条数 |
| data.pageId | integer | 当前页码 |
| data.id | string | 书籍 ID(bookId) |
| data.name | string | 书名/音乐名/主播名 |
| data.author | string | 作者 |
| data.announcer | string | 主播/演播者名称 |
| data.coverUrl | string | 封面图片 URL |
| data.desc | string | 简介描述 |
| data.totalSection | integer | 总章节数 |
| data.status | integer | 连载状态 |
| data.feeType | integer | 收费类型,0 为免费 |
| data.sectionId | string | 章节 ID |
| data.section | integer | 章节序号 |
| data.tmeId | string | 腾讯音乐 ID |
| data.mediaUrl | string | 音频播放直链(m4a,24h 有效) |
| data.filePath | string | 字幕文件路径,可直接下载 |
| data.songMid | string | 音乐 ID,用于获取播放地址 |
| data.channelId | string | 频道 ID |
| data.rankId | string | 榜单 ID |
| data.referId | string | 分页游标 |
错误响应示例
{
"code": 0,
"msg": "未提供调用密钥",
"errcode": 11001
}
业务错误码说明
| 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(bash)
curl -s 'https://api.example.com/api/book/lrts/index.php?action=search.book&keyWord=斗破苍穹&pageId=1'
curl -s 'https://api.example.com/api/book/lrts/index.php?action=listen.path&entityId=123456&resId=987654§ion=1'
PHP
// PHP
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.example.com/api/book/lrts/index.php?action=book.detail&id=123456&type=1&reqMask=1&source=1&trackSize=50');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
// PHP
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.example.com/api/book/lrts/index.php?action=search.music&keyWord=斗破苍穹');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
$songMid = $data['data'][0]['songMid'] ?? '';
if ($songMid) {
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, "https://api.example.com/api/book/lrts/index.php?action=music.mediaUrl&songMid={$songMid}&opType=0");
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
echo curl_exec($ch2);
curl_close($ch2);
}
注意事项
- 本接口无需鉴权密钥,所有接口均通过
action参数路由,调用时请确保action值与资料中一致,格式为模块.方法(如search.book、listen.path)。 - 频率限制约为每分钟 60 次,建议业务侧做好防抖与限流,避免触发服务端拒绝。
- 除
listen.batchPath为 POST 且参数在请求体中以 JSON 格式传递外,其余接口均为 GET,参数以 Query 形式传递。 book.resource和listen.resource返回章节列表,pageSize最大值为 50,超出将被截断。listen.path返回的音频直链有效期为 24 小时,过期后需重新请求,不要缓存过期链接。listen.path返回结果中status=26表示该章节为会员章节,非会员可能无法播放,请在业务层做区分处理。listen.batchPath批量取章时,sections与trackIds长度必须一致,否则返回错误;数字类型参数会自动转换,无需手动格式化。listen.aiLrc返回 AI 字幕,支持 lrc(默认)和 qrc(逐字)两种格式,aiLrcFormat=2时为逐字格式;接口同时返回filePath,该链接免签可直接下载字幕文件。music.mediaUrl的songMid必须来自search.music接口的搜索结果,直接使用其他来源的 ID 可能导致解析失败。- 搜索类接口的
keyWord为字符串类型,建议对特殊字符进行转义或编码,避免影响 URL 解析。 book.detail的trackSize控制预取章节数,建议根据业务场景合理设置,默认 50 即可满足大多数场景。home.channelFeed和home.channelFeedCfg均需先调用home.channelList获取有效的channelId或subChannelId,请勿使用硬编码的频道 ID。- 部分接口返回的
referId为翻页游标,下次翻页时直接传入即可,游标为字符串类型,首页分页时home.channelFeedCfg固定传字符串"null"。 - 本项目免费开放,请合理控制请求量,禁止用于恶意刷量、爬取等违规行为。
- 建议使用 HTTPS 协议调用,保障传输安全。
keyWord为空时,部分搜索接口(如search.hotList、search.defaultList)无需传参,但search.suggest等接口若传空关键词可能返回空结果,请按实际场景决定是否传参。- 批量搜索
search.batch为旧版接口,新业务建议优先使用search.all综合搜索。
快速上手
暂无代码示例。管理员可在后台用 AI 生成或手动编写。
在线测试
请求地址
api.vsaa.cn/api/book/lrts/index.php
Method
参数
Response
等待中
// 结果将在此处显示