B站 SDK 方法
B站平台的 27 个 SDK 方法,由端点注册表派生
本页 27 个方法由端点注册表生成:参数表、摘要与废弃标记都取自 端点声明。同一批端点的 HTTP 形态(路径、query 参数、响应信封、在线调用)见 HTTP 端点参考。
调用形式与单次请求配置
Client 上的绑定 Fetcher 是 client.<平台>.fetcher.<方法>(options, requestConfig?):cookie 已随 Client 绑好,第二个参数只作用于当前这一次调用,并与 Client 的实例级请求配置合并 —— 单次配置优先,headers 单独合并。
直接导出的裸 Fetcher 是 <平台>Fetcher.<方法>(options, cookie?, requestConfig?):没有实例级配置,cookie 按次传,第三个参数直接作用于当前请求。amagi.<平台>Fetcher 与同名的命名导出(import { bilibiliFetcher } from '@ikenxuan/amagi')是同一个对象。
两种形态都由端点注册表派生、走同一条执行管线、返回同一种信封,所以本页列出的方法名与参数对两者都成立。
用 Cookie 头覆盖单次调用的 cookie
requestConfig.headers 里任意大小写的 Cookie(Cookie / cookie / COOKIE)都会替换本次调用实际使用的 cookie:绑定形态覆盖 Client 上绑定的那份,裸 Fetcher 形态覆盖第二个参数。这次调用用哪份 Cookie,只写这一处就够。
匿名调一次:
const = await ...(
{ : '170001', : 1, : 20 },
{ : { : '' } }
)它只影响这一次请求,不改 Client 实例,也不影响同一实例后续的调用。
v7 的 Cookie 头按大小写不敏感匹配,覆盖只写在 headers 一处即可。
读取返回值:取 data
方法永不抛异常,返回的是信封:成功支有 data,失败支有 error,两支都有 message 与 meta,顶层没有 code。本页所有示例统一用 if (result.success) 收窄之后再读 result.data —— 四种读法里只有它既不必额外 import,收窄后的 data 又不带 | undefined:
| 读法 | 拿到的 data |
|---|---|
if (result.success) | T(本页示例统一用这种) |
直接读 result.data(不收窄) | T | undefined |
list.filter(isSuccess) | T(数组回调里没有 if 可用) |
unwrap(result) | T,失败时抛 AmagiThrownError |
四种读法的完整说明、失败分支的字段与三条逃生舱见响应类型。
大整数 ID 与响应类型
默认 JSON 解析会把超出 JavaScript 安全整数范围的裸整数保留为十进制字符串,防止直播间、作品等 ID 被四舍五入。普通安全整数、浮点数和指数写法保持原样;显式文本响应和自定义 transformResponse 仍由调用方控制。响应 ID 的类型因此可能是 string | number,需要统一存储时可用 String(id);不要先调用 Number() 再拼接请求。
新增端点只声明已有证据支持的响应字段;缺少完整成功响应样本的字段使用 unknown,使用前应检查对象、数组或字符串等实际结构。
本页之外:自定义请求
本页是已收录的端点方法。要请求 amagi 尚未收录的 B站接口,用 client.bilibili.request。它的默认签名器是不签(27 条端点里只有 5 条签名,默认签会大面积签错),要签就显式给 sign: 'wbi' 或 'qtparam'。URL 由 client.bilibili.apiUrls 构造 —— 那份以 URL 字符串为主(只有两个验证码接口返回 { Url, Body }):
const = ...({ : 'BV1xx411c7mD' })
const = await ...()详见自定义请求。
Fetcher 方法
fetchVideoInfo
视频作品详细信息。端点 bilibili.videoInfo,同一端点的 HTTP 形态。
取稿件详情(标题、封面、UP 主、统计、分 P 列表);返回的 cid 供取流与弹幕使用。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
bvid | string | 是 | 稿件 BV 号,如 BV1xx411c7mD |
const = await ...({
: 'BV1xx411c7mD'
})
if (.) {
.(.)
}fetchVideoStreamUrl
视频下载流信息。端点 bilibili.videoStream,同一端点的 HTTP 形态。
取稿件的播放与下载流地址;高清档位需要带登录凭证,cid 来自 videoInfo。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
avid | number | 是 | 稿件 AV 号,纯数字不带 av 前缀 |
cid | number | 是 | 稿件 cid(分 P 的视频流 ID) |
const = await ...({
: 170001,
: 279786
})
if (.) {
.(.)
}fetchVideoDanmaku
视频实时弹幕列表。端点 bilibili.videoDanmaku,同一端点的 HTTP 形态。
取视频某一段的实时弹幕;每段 6 分钟,按 segment_index 分段取全量。
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
cid | number | 是 | — | 稿件 cid |
segment_index | number | 否 | 1 | 弹幕分段序号,每 6 分钟一段,默认 1 |
const = await ...({
: 279786
})
if (.) {
.(.)
}fetchComments
作品评论列表。端点 bilibili.comments,同一端点的 HTTP 形态。
取作品评论列表,按 number 自动翻页并去重;楼中楼用 commentReplies。
支持声明式翻页:用 number 指定需要的条数,单页上限 100 条,游标的带入与停止条件由端点声明处理。
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
oid | string | 是 | — | 目标对象 ID,视频稿件填 avid |
type | number | 是 | — | 评论区类型代码:1 视频稿件(oid=avid)、2 话题、11 相簿/图片动态、12 专栏(cvid)、14 音频(auid)、17 动态、33 课程(epid)等;完整对照表见 bilibili-API-collect「评论区类型代码」 |
number | number | 否 | 20 | 目标条数,自动翻页合并后去重,默认 20 |
mode | number | 否 | — | 排序方式:0 和 3 仅热度,1 按热度+按时间,2 仅时间;默认 3 |
plat | number | 否 | — | 平台类型,默认 1 |
seek_rpid | string | 否 | — | 定位到某条评论,默认空 |
web_location | string | 否 | — | web 位置参数,默认 1315875 |
const = await ...({
: '170001',
: 1
})
if (.) {
.(.)
}type 是评论区类型:1=视频、11=图文动态、12=专栏、14=音频、17=文字动态;端点声明只接受 v6 的那批取值(1、2、4–22、33),其余直接判参数校验失败。
fetchCommentReplies
指定评论的回复列表。端点 bilibili.commentReplies,同一端点的 HTTP 形态。
取单条根评论下的楼中楼回复;整个评论区的列表用 comments。
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
oid | string | 是 | — | 目标对象 ID,视频稿件填 avid |
type | number | 是 | — | 评论区类型代码:1 视频稿件(oid=avid)、11 相簿/图片动态、12 专栏(cvid)、17 动态等;完整对照表见 bilibili-API-collect「评论区类型代码」 |
root | string | 是 | — | 根评论 ID,即要展开的一级评论 |
number | number | 否 | 20 | 该根评论下的回复条数,不翻页,默认 20 |
const = await ...({
: '170001',
: 1,
: '123456789'
})
if (.) {
.(.)
}fetchUserCard
用户名片信息。端点 bilibili.userCard,同一端点的 HTTP 形态。
取用户名片(昵称、头像、个性签名、等级、认证)与粉丝、投稿数统计。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
host_mid | number | 是 | UP 主 UID |
const = await ...({
: 123456
})
if (.) {
.(.)
}fetchUserDynamicList
用户空间动态列表。端点 bilibili.userDynamicList,同一端点的 HTTP 形态。
取用户空间的第一页动态列表;本接口不支持翻页。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
host_mid | number | 是 | UP 主 UID |
const = await ...({
: 123456
})
if (.) {
.(.)
}fetchUserLiveStatus
用户直播状态与直播间基础信息。端点 bilibili.userLiveStatus,同一端点的 HTTP 形态。
按 UID 查用户的直播状态与直播间信息;已有房间号时用 liveRoomInfo。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
host_mid | number | 是 | UP 主 UID |
const = await ...({
: 123456
})
if (.) {
.(.)
}直接读直播状态,不依赖用户空间动态里的直播推荐卡片,适合轮询开播状态。返回里主要看这几个字段:
| 字段 | 说明 |
|---|---|
roomStatus | 1 已开通直播间,0 未开通 |
liveStatus | 1 正在直播,0 当前未开播 |
roomid | 直播间 ID;未开通直播间时为 0 |
title | 直播间标题 |
cover | 直播封面 |
fetchUserSpaceInfo
用户空间详细信息。端点 bilibili.userSpaceInfo,同一端点的 HTTP 形态。
取用户空间完整资料(等级、硬币、VIP、粉丝勋章等);名片类信息用 userCard。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
host_mid | number | 是 | UP 主 UID |
const = await ...({
: 123456
})
if (.) {
.(.)
}fetchUploaderTotalViews
UP 主总播放量。端点 bilibili.uploaderTotalViews,同一端点的 HTTP 形态。
取 UP 主的播放与获赞统计;等级、VIP 等完整资料用 userSpaceInfo。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
host_mid | number | 是 | UP 主 UID |
const = await ...({
: 123456
})
if (.) {
.(.)
}fetchDynamicDetail
动态详情。端点 bilibili.dynamicDetail,同一端点的 HTTP 形态。
按动态 ID 取详情,返回结构随动态类型(图文 / 转发 / 视频等)而变。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
dynamic_id | string | 是 | 动态 ID,纯数字串 |
const = await ...({
: '123456789'
})
if (.) {
.(.)
}fetchBangumiInfo
番剧基本信息。端点 bilibili.bangumiInfo,同一端点的 HTTP 形态。
取番剧季度或单集的基本信息;两个 ID 至少传一个,都传时以 ep_id 为准。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
ep_id | string | 否 | 剧集 EP ID,如 ep330798 |
season_id | string | 否 | 番剧季度 SS ID,如 ss33802 |
const = await ...({
: '123456'
})
if (.) {
.(.)
}ep_id 与 season_id 二选一:两个都是可选参数,但端点声明的 refine 要求至少给一个(都不给会以参数校验失败返回)。ID 带不带 ep / ss 前缀都行,build 会削掉。
fetchBangumiStreamUrl
番剧下载流信息。端点 bilibili.bangumiStream,同一端点的 HTTP 形态。
取番剧剧集的播放与下载流地址;高清档位需要带登录凭证。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
cid | number | 是 | 剧集分集的 cid |
ep_id | string | 是 | 剧集 EP ID,如 ep330798 |
const = await ...({
: 279786,
: '123456'
})
if (.) {
.(.)
}fetchLiveRoomInfo
直播间信息。端点 bilibili.liveRoomInfo,同一端点的 HTTP 形态。
取直播间的展示信息(标题、封面、分区等);房间标识与开播状态用 liveRoomInit。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
room_id | string | 是 | 直播间 ID |
const = await ...({
: '123456'
})
if (.) {
.(.)
}fetchLiveRoomInitInfo
直播间初始化信息。端点 bilibili.liveRoomInit,同一端点的 HTTP 形态。
取房间的标识与开播状态;标题、封面等展示信息用 liveRoomInfo。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
room_id | string | 是 | 直播间 ID |
const = await ...({
: '123456'
})
if (.) {
.(.)
}fetchArticleContent
专栏正文内容。端点 bilibili.articleContent,同一端点的 HTTP 形态。
取专栏正文;标题、作者、阅读统计等元信息用 articleInfo。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
id | string | 是 | 专栏 ID,取自专栏链接 |
const = await ...({
: '123456'
})
if (.) {
.(.)
}fetchArticleCards
专栏显示卡片信息。端点 bilibili.articleCards,同一端点的 HTTP 形态。
一次可批量查询多条,支持视频、专栏、直播间的 ID 混传,结果按 ID 分组返回。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
ids | string[] | string | 是 | ID 列表,可混传视频、专栏、直播间 |
const = await ...({
: ['123456', '789012']
})
if (.) {
.(.)
}fetchArticleInfo
专栏文章基本信息。端点 bilibili.articleInfo,同一端点的 HTTP 形态。
取文章页元信息(标题、头图、作者、阅读/点赞);正文用 articleContent。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
id | string | 是 | 专栏 ID,取自专栏链接 |
const = await ...({
: '123456'
})
if (.) {
.(.)
}fetchArticleListInfo
文集基本信息。端点 bilibili.articleListInfo,同一端点的 HTTP 形态。
取文集(rlid)本体与其中的文章清单;单篇专栏用 articleInfo。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
id | string | 是 | 文集 ID(rlid),取自文集链接 |
const = await ...({
: '123456'
})
if (.) {
.(.)
}fetchLoginStatus
登录基本信息。端点 bilibili.loginStatus,同一端点的 HTTP 形态。
取当前账号的登录信息,可用来判断登录凭证是否还有效。
无参数。
const = await ...({})
if (.) {
.(.)
}requestLoginQrcode
登录二维码。端点 bilibili.loginQrcode,同一端点的 HTTP 形态。
扫码登录第一步:返回二维码内容与轮询凭据 qrcode_key。
无参数。
const = await ...({})
if (.) {
.(.)
}checkQrcodeStatus
二维码扫码状态。端点 bilibili.qrcodeStatus,同一端点的 HTTP 形态。
轮询扫码进度;登录成功时新登录态只在响应头,本接口不透出响应头。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
qrcode_key | string | 是 | 二维码 key,取自 loginQrcode |
const = await ...({
: 'xxx'
})
if (.) {
.(.)
}requestCaptchaFromVoucher
由 v_voucher 申请的验证码信息。端点 bilibili.captchaFromVoucher,同一端点的 HTTP 形态。
人机校验第一步:用 v_voucher 换取验证码与校验参数。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
csrf | string | 否 | CSRF Token,取 bili_jct |
v_voucher | string | 是 | 风控下发的凭证,形如 voucher_xxx |
const = await ...({
: 'voucher_xxx'
})
if (.) {
.(.)
}validateCaptchaResult
验证码校验结果。端点 bilibili.validateCaptcha,同一端点的 HTTP 形态。
人机校验第二步:提交 challenge / token 与用户过完验证的结果。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
csrf | string | 否 | CSRF Token,取 bili_jct |
challenge | string | 是 | 极验 challenge,第一步返回 |
token | string | 是 | 极验 token,第一步返回 |
validate | string | 是 | 人机验证通过后回填 |
seccode | string | 是 | 人机验证通过后回填的校验串 |
const = await ...({
: 'challenge_xxx',
: 'token_xxx',
: 'validate_xxx',
: 'validate_xxx|jordan'
})
if (.) {
.(.)
}convertAvToBv
AV 号转换得到的 BV 号。端点 bilibili.avToBv,同一端点的 HTTP 形态。
把稿件 AV 号换算成 BV 号,本地计算不发请求,返回 { bvid }。
纯本地计算,不发请求。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
avid | number | 是 | 稿件 AV 号,纯数字不带 av 前缀 |
const = await ...({
: 170001
})
if (.) {
.(.)
}convertBvToAv
BV 号转换得到的 AV 号。端点 bilibili.bvToAv,同一端点的 HTTP 形态。
把稿件 BV 号换算成 AV 号,本地计算不发请求,返回 { aid }。
纯本地计算,不发请求。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
bvid | string | 是 | 稿件 BV 号,如 BV1xx411c7mD |
const = await ...({
: 'BV1xx411c7mD'
})
if (.) {
.(.)
}fetchEmojiList
表情列表。端点 bilibili.emojiList,同一端点的 HTTP 形态。
取评论区表情面板里的全部表情,无参数。
无参数。
const = await ...({})
if (.) {
.(.)
}