@ikenxuan/amagi

B站 API

B站平台 API 参考文档

B站 API

B站平台的所有 API 方法参考。

调用形式与单次请求配置

Client 中的绑定 Fetcher 使用 client.bilibili.fetcher.method(options, requestConfig?)。第二个参数只作用于当前调用,并与 Client 的实例级请求配置合并;单次配置优先,headers 会单独合并。显式提供大写 headers.Cookie 时,它也会替换本次底层调用的 cookie 参数。

直接导出的裸 Fetcher 使用 bilibiliFetcher.method(options, cookie?, requestConfig?)。这里没有实例级配置,第三个参数会直接透传到当前请求。amagi.bilibiliFetcher 与该命名导出是同一个裸 Fetcher。

当第三个参数显式设置 headers.Cookie 时,第二个参数必须传入完全相同的字符串字面量;接口支持匿名时,请写作 method(options, '', { headers: { Cookie: '' } })。字段名严格区分大小写,请使用 Cookie,不要使用 cookie。

Fetcher 方法

fetchVideoInfo

获取单个视频作品数据。

import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchVideoInfo({
  bvid: 'BV1xx411c7mD',
  typeMode: 'strict'
})
参数类型必填说明
bvidstring是视频 BV 号
typeMode'strict' | 'loose'否类型模式

fetchVideoStreamUrl

获取视频下载信息。

import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchVideoStreamUrl({
  avid: 170001,
  cid: 279786
})
参数类型必填说明
avidnumber是视频 AV 号
cidnumber是视频 CID

fetchVideoDanmaku

获取视频实时弹幕。

import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchVideoDanmaku({
  cid: 279786,
  segment_index: 1
})
参数类型必填说明
cidnumber是视频 CID
segment_indexnumber否分段索引,默认 1

fetchComments

获取评论数据。

import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchComments({
  oid: '170001',
  type: 1,
  number: 20
})
参数类型必填说明
oidstring是目标 ID
typenumber是评论区类型
numbernumber否每页数量

评论区类型: 1=视频, 11=图文动态, 12=专栏, 14=音频, 17=文字动态

绑定 Fetcher 的第二个参数是当前调用专用的 requestConfig。它会与 Client 的实例级请求配置合并,单次配置优先,请求头也会单独合并。

例如,只让本次评论请求不携带 Client 中配置的 B站 Cookie:

import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: 'SESSDATA=example', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchComments(
  {
    oid: '170001',
    type: 1,
    number: 20,
    typeMode: 'strict'
  },
  {
    headers: {
      Cookie: ''
    }
  }
)

该配置只影响当前请求,不会修改 Client 实例,也不会影响同一实例发起的后续请求。


fetchCommentReplies

获取指定评论的回复。

import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchCommentReplies({
  oid: '170001',
  type: 1,
  root: '123456789'
})
参数类型必填说明
oidstring是目标 ID
typenumber是评论区类型
rootstring是根评论 ID

需要匿名获取评论回复时,同样可以通过第二个 requestConfig 参数传入 { headers: { Cookie: '' } }。


fetchUserCard

获取用户主页数据。

import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchUserCard({
  host_mid: 123456
})
参数类型必填说明
host_midnumber是用户 UID

fetchUserDynamicList

获取用户主页动态列表。

import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchUserDynamicList({
  host_mid: 123456
})

fetchUserLiveStatus

按用户 UID 查询直播状态和直播间基础信息。该接口直接读取直播状态,不依赖用户空间动态中的直播推荐卡片,适合轮询开播状态。

import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchUserLiveStatus({
  host_mid: 123456,
  typeMode: 'strict'
})

if (result.success && result.data.data.liveStatus === 1) {
  console.log(result.data.data.roomid)
}
参数类型必填说明
host_midnumber是用户 UID
typeMode'strict' | 'loose'否类型模式

主要状态字段:

字段说明
roomStatus1 表示用户已开通直播间,0 表示未开通
liveStatus1 表示正在直播,0 表示当前未开播
roomid直播间 ID;未开通直播间时为 0
title直播间标题
cover直播封面

HTTP 服务也会注册 GET /api/bilibili/fetch_user_live_status?host_mid=123456。


fetchUserSpaceInfo

获取用户空间详细信息。

import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchUserSpaceInfo({
  host_mid: 123456
})

fetchUploaderTotalViews

获取 UP 主总播放量。

import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchUploaderTotalViews({
  host_mid: 123456
})

fetchDynamicDetail

获取动态详情。

import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchDynamicDetail({
  dynamic_id: '123456789'
})

fetchBangumiInfo

获取番剧基本信息。

import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
// 通过 ep_id
const result = await client.bilibili.fetcher.fetchBangumiInfo({
  ep_id: '123456'
})

// 或通过 season_id
const result2 = await client.bilibili.fetcher.fetchBangumiInfo({
  season_id: '123456'
})
参数类型必填说明
ep_idstring二选一剧集 ID
season_idstring二选一季度 ID

fetchBangumiStreamUrl

获取番剧下载信息。

import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchBangumiStreamUrl({
  cid: 279786,
  ep_id: '123456'
})

fetchLiveRoomInfo

获取直播间信息。

import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchLiveRoomInfo({
  room_id: '123456'
})

fetchLiveRoomInitInfo

获取直播间初始化信息。

import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchLiveRoomInitInfo({
  room_id: '123456'
})

fetchArticleContent

获取专栏正文内容。

import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchArticleContent({
  id: '123456'
})

fetchArticleCards

获取专栏显示卡片信息。

import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchArticleCards({
  ids: ['123456', '789012']
})

fetchLoginStatus

获取登录基本信息。

import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchLoginStatus({})

requestLoginQrcode

申请登录二维码。

import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.requestLoginQrcode({})

checkQrcodeStatus

检查二维码状态。

import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.checkQrcodeStatus({
  qrcode_key: 'xxx'
})

convertAvToBv

AV 号转 BV 号。

import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.convertAvToBv({
  avid: 170001
})

convertBvToAv

BV 号转 AV 号。

import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.convertBvToAv({
  bvid: 'BV1xx411c7mD'
})

fetchEmojiList

获取 Emoji 列表。

import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchEmojiList({})

最后更新于 2026-09-24

On this page