请求方式:POST
认证方式:Cookie(SESSDATA)或APP
此接口与漫画弹幕相同
mode=6
的逆向弹幕与mode=8
的代码弹幕不可发送
URL参数:
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
web_location | str | 普通视频: 1315873 | 不必要 | |
csrf | str | CSRF Token (即 Cookie 中 bili_jct) | Cookie 方式必要 | |
w_rid | str | Wbi 签名 | 必要 | 参见 Wbi 签名 |
wts | str | UNIX 秒级时间戳 | 必要 | 参见 Wbi 签名 |
正文参数( application/x-www-form-urlencoded ):
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
access_key | str | APP 登录 Token | APP 方式必要 | |
type | num | 弹幕类选择 | 必要 | 1:视频弹幕 2:漫画弹幕 |
oid | num | 视频 cid | 必要 | |
msg | str | 弹幕内容 | 必要 | 长度小于 100 字符 |
bvid | str | 稿件 bvid | 必要(可选) | avid 与 bvid 任选一个 |
aid | num | 稿件 avid | 必要(可选) | avid 与 bvid 任选一个 |
progress | num | 弹幕出现在视频内的时间 | 非必要 | 单位为毫秒 默认为0 |
color | num | 弹幕颜色设置 | 非必要 | 十进制 RGB888 值 如 16777215 为 #FFFFFF 即白色 |
fontsize | num | 弹幕字号设置 | 非必要 | 默认为 25 极小:12 超小:16 小:18 标准:25 大:36 超大:45 极大:64 |
pool | num | 弹幕池选择 | 非必要 | 0:普通池 1:字幕池 2:特殊池(代码/BAS弹幕) 默认为0 |
mode | num | 弹幕类型选择 | 必要 | 1:普通弹幕 4:底部弹幕 5:顶部弹幕 7:高级弹幕 9:BAS弹幕( pool 必须为2) |
rnd | num | 当前时间戳*1000000 | 非必要 | 若无此项,则发送弹幕冷却时间限制为90s 若有此项,则发送弹幕冷却时间限制为5s |
colorful | num | 彩色弹幕 | 非必要 | 60001:专属渐变彩色(需要会员) |
checkbox_type | num | 是否带 UP 身份标识 | 非必要 | 0:普通 4:带有标识 |
csrf | str | CSRF Token(位于 Cookie) | Cookie 方式必要 |
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0:成功 -101:账号未登录 -102:账号被封停 -111:csrf校验失败 -400:请求错误 -404:无此项 36700:系统升级中 36701:弹幕包含被禁止的内容 36702:弹幕长度大于100 36703:发送频率过快 36704:禁止向未审核的视频发送弹幕 36705:您的等级不足,不能发送弹幕 36706:您的等级不足,不能发送顶端弹幕 36707:您的等级不足,不能发送底端弹幕 36708:您的等级不足,不能发送彩色弹幕 36709:您的等级不足,不能发送高级弹幕 36710:您的权限不足,不能发送这种样式的弹幕 36711:该视频禁止发送弹幕 36712:level 1用户发送弹幕的最大长度为20 36713:稿件未付费 36714:弹幕发送时间不合法 36715:当日操作数量超过上限 36718:目前您不是大会员,无法使用会员权益 |
message | str | 错误信息 | 默认为0 |
ttl | num | 1 | |
data | obj | 信息本体 |
data
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
action | str | (?) | |
animation | str | 弹幕样式 Json? | |
colorful_src | str 或 obj | 渐变彩色样式信息? | 当请求参数colorful=60001 时有效 |
dm_content | str | (?) | |
dmid | num | 弹幕 dmid | |
dmid_str | str | 弹幕 dmid | 字串形式 |
visible | bool | (?) |
data
中的colorful_src
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
type | num | 60001 | |
src | str | 渐变色样式 Json? |
示例:
为视频av2
/BV1xx411c7mD
(cid为62131
)的 5000ms 位置发送一条弹幕前来考古
(颜色为 #FFFFFF,字号 25,普通弹幕,游动弹幕)
curl 'https://api.bilibili.com/x/v2/dm/post' \
--data-urlencode 'type=1' \
--data-urlencode 'oid=62131' \
--data-urlencode 'msg=前来考古' \
--data-urlencode 'aid=2' \
--data-urlencode 'progress=5000' \
--data-urlencode 'color=16777215' \
--data-urlencode 'fontsize=25' \
--data-urlencode 'pool=0' \
--data-urlencode 'mode=1' \
--data-urlencode 'rnd=3456789987654321' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
查看响应示例:
{
"code":0,
"message":"0",
"ttl":1,
"data":{
"action":"",
"dmid":32161968826613767,
"dmid_str":"32161968826613767",
"visible":true
}
}
请求方式:POST
认证方式:Cookie(SESSDATA)或APP
2020-09-25 B站更新了互动弹幕功能,包括UP主头像弹幕、关联视频弹幕、视频内嵌引导关注按钮三大功能
详情见:
正文参数( application/x-www-form-urlencoded ):
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
access_key | str | APP登录Token | APP方式必要 | |
type | num | 互动弹幕类型 | 必要 | 1:UP主头像弹幕 2:关联视频弹幕 5:视频内嵌引导关注按钮 |
aid | num | 稿件avid | 必要 | |
cid | num | 视频cid | 必要 | |
progress | num | 弹幕出现在视频内的时间 | 非必要 | 单位为毫秒 默认为0 |
plat | num | 平台标识 | 必要 | 1:web端 2:安卓端 8:视频管理页面 |
data | str | json序列 | 必要 | |
dmid | num | 修改互动弹幕的弹幕id | 非必要 | 注:修改弹幕plat 必须为8 |
csrf | str | CSRF Token(位于cookie) | Cookie方式必要 |
data
参数json序列:
类型为【UP主头像弹幕】时:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
msg | str | 弹幕内容 |
类型为【关联视频弹幕】时:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
msg | str | 弹幕内容 | |
bvid | str | 关联视频的bvid |
类型为【视频内嵌引导关注按钮】时:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
duration | num | 持续时间 | 单位为毫秒 |
posX | num | X坐标 | 区间:[118-549] |
posY | num | Y坐标 | 区间:[82-293] |
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0:成功 -101:账号未登录 -102:账号被封停 -111:csrf校验失败 -400:请求错误 -404:无此项 -500:服务器错误 36711:该视频禁止发送弹幕 79026:发送失败,请勿填写当前稿件bvid 79024:发送失败,请输入正确的bvid 79036:该指令弹幕超出限制 79037:关注弹幕坐标溢出 |
message | str | 错误信息 | 默认为0 |
ttl | num | 1 | |
data | 正确时:obj 错误时:null |
信息本体 |
data
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
command | str | 指令? | UP主头像弹幕:#UP# 关联视频弹幕:#LINK# 视频内嵌引导关注按钮:#ATTENTION# |
content | str | 弹幕内容 | |
extra | str | 弹幕数据 | json序列 |
id | num | 弹幕dmid | |
idStr | str | 弹幕dmid | 字串形式 |
mid | num | 用户mid | |
oid | num | 视频cid | |
progress | num | 弹幕出现在视频内的时间 | |
type | num | 互动弹幕类型 | 1:UP主头像弹幕 2:关联视频弹幕 5:视频内嵌引导关注按钮 |
extra
序列数据:
类型为【UP主头像弹幕】时:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
icon | str | UP主头像url |
类型为【关联视频弹幕】时:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
aid | num | 关联视频的avid | |
title | str | 关联视频的标题 | |
bvid | str | 关联视频的bvid |
类型为【视频内嵌引导关注按钮】时:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
duration | num | 持续时间 | 单位为毫秒 |
posX | num | X坐标 | 区间:[118-549] |
posY | num | Y坐标 | 区间:[82-293] |
icon | str | 按钮图片url | 不应该是关注按钮吗,但这个是圆形的 |
type | num | 关注按钮类型 | 0:仅关注 1:仅三联 2:关注+三联 |
示例:
为视频av201947622
(cid为230709860
)的5000ms位置发送一条UP主头像弹幕test
curl 'https://api.bilibili.com/x/v2/dm/command/post' \
--data-urlencode 'type=1' \
--data-urlencode 'aid=201947622' \
--data-urlencode 'cid=230709860' \
--data-urlencode 'progress=5000' \
--data-urlencode 'plat=1' \
--data-urlencode 'data={"msg":"test"}' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
查看响应示例:
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"id": 39053842117558279,
"oid": 230709860,
"mid": 293793435,
"type": 1,
"command": "#UP#",
"content": "test",
"extra": "{\"icon\":\"http://i0.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg\"}",
"idStr": "39053842117558279"
}
}
为视频av201947622
(cid为230709860
)的5000ms位置发送一条发送关联视频弹幕测试1234
关联视频为BV1kz4y1X7XP
curl 'https://api.bilibili.com/x/v2/dm/command/post' \
--data-urlencode 'type=2' \
--data-urlencode 'aid=201947622' \
--data-urlencode 'cid=230709860' \
--data-urlencode 'progress=5000' \
--data-urlencode 'plat=1' \
--data-urlencode 'data={"bvid":"BV1kz4y1X7XP","msg":"测试1234"}' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
查看响应示例:
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"id": 39054383689236483,
"oid": 230709860,
"mid": 293793435,
"type": 2,
"command": "#LINK#",
"content": "测试1234",
"progress": 11925,
"extra": "{\"aid\":583785685,\"title\":\"【cmd】访问api 命令行也能上B站\",\"bvid\":\"BV1kz4y1X7XP\"}",
"idStr": "39054383689236483"
}
}
为视频av201947622
(cid为230709860
)的5000ms位置发送视频内嵌引导关注按钮,X坐标为118,Y坐标为82,持续时间为5000ms
curl 'https://api.bilibili.com/x/v2/dm/command/post' \
--data-urlencode 'type=5' \
--data-urlencode 'aid=201947622' \
--data-urlencode 'cid=230709860' \
--data-urlencode 'progress=5000' \
--data-urlencode 'plat=1' \
--data-urlencode 'data={"duration":5000,"posX":118,"posY":82}' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
查看响应示例:
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"id": 39055158405496839,
"oid": 230709860,
"mid": 293793435,
"type": 5,
"command": "#ATTENTION#",
"progress": 5000,
"extra": "{\"duration\":5000,\"posX\":118,\"posY\":82}",
"idStr": "39055158405496839"
}
}
请求方式: POST
认证方式: Cookie (SESSDATA)
正文参数 (application/x-www-form-urlencoded):
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
aid | num | 稿件 aid | 必要 | |
cid | num | 分 P cid | 必要 | |
progress | num | 播放进度 | 必要 | 单位为毫秒 |
grade_id | num | 打分 id | 必要 | |
grade_score | num | 分数 | 偶数, 最大 10 | |
polaris_app_id | num | 100 | 不必要 | |
polaris_platfrom | num | 5 | 不必要 | |
spmid | str | 333.788.0.0 | 不必要 | |
from_spmid | str | 来源 spmid | 不必要 | |
csrf | str | CSRF Token (即 Cookie 中的 bili_jct) | 必要 |
JSON回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0: 成功 |
message | str | 错误信息 | 默认为 0 |
ttl | num | 1 | |
data | obj | 信息本体 |
data
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
dmid | num | 弹幕dmid | |
dmid_str | str | 弹幕dmid | 字串形式 |
visible | bool | 是否可见 | |
action | str | 动作 | "grade:" + (请求的分数 / 2) |
示例:
curl -X POST 'https://api.bilibili.com/x/v2/dm/command/grade/post' \
--data-urlencode 'aid=112861976201494' \
--data-urlencode 'cid=500001629877726' \
--data-urlencode 'progress=32000' \
--data-urlencode 'grade_id=3651137' \
--data-urlencode 'grade_score=10' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
查看响应示例:
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"dmid": 1651556419721443584,
"dmidStr": "1651556419721443584",
"visible": true,
"action": "grade:5"
}
}
请求方式:POST
认证方式:Cookie(SESSDATA)或APP
仅能撤回自己两分钟内的弹幕,且每天只有3次机会
正文参数( application/x-www-form-urlencoded ):
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
access_key | str | APP登录Token | APP方式必要 | |
dmid | num | 弹幕dmid | 必要 | |
cid | num | 视频cid | 必要 | |
csrf | str | CSRF Token(位于cookie) | Cookie方式必要 |
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0:成功 -101:账号未登录 -102:账号被封停 -111:csrf校验失败 -400:请求错误 -404:无此项 36301:撤回失败,弹幕发送已过2分钟 36302:撤回失败,弹幕已经被删除或撤回 36303:撤回失败,今天撤回的机会已经用完 36304:撤回失败,服务器出错 |
message | str | 错误信息 | 成功后显示剩余次数 |
ttl | num | 1 |
示例:
撤回cid=168901231
下的弹幕32310301474947077
的弹幕
curl 'https://api.bilibili.com/x/dm/recall' \
--data-urlencode 'cid=168901231' \
--data-urlencode 'dmid=32310301474947077' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
查看响应示例:
{
"code": 0,
"message": "撤回成功,你还有3次撤回机会"
}
请求方式:POST
认证方式:Cookie(SESSDATA)或APP
购买一次需要2硬币,同时向up主发送请求
正文参数( application/x-www-form-urlencoded ):
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
access_key | str | APP登录Token | APP方式必要 | |
mode | str | sp | 必要 | |
cid | num | 视频cid | 必要 | |
csrf | str | CSRF Token(位于cookie) | Cookie方式必要 |
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0:成功 -101:账号未登录 -102:账号被封停 -111:csrf校验失败 -107:硬币不足 -400:请求错误 36007:不允许购买 36009:正在确认中 36010:已购买 |
message | str | 返回信息 | |
ttl | num | 1 |
示例:
购买视频cid为168901231
的高级弹幕发送权限
curl 'https://api.bilibili.com/x/dm/adv/buy' \
--data-urlencode 'cid=168901231' \
--data-urlencode 'mode=sp' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
查看响应示例:
{
"code":0,
"message":"已成功购买"
}
请求方式:GET
认证方式:Cookie(SESSDATA)或APP
url参数:
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
access_key | str | APP登录Token | APP方式必要 | |
mode | str | sp | 必要 | |
cid | num | 视频cid | 必要 |
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0:成功 -101:账号未登录 --400:请求错误 |
message | str | 错误信息 | 默认为0 |
ttl | num | 1 | |
data | 有效时:obj 无效时:null |
有效时:信息本体 |
data
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
coins | num | 需要支付的硬币数 | |
confirm | num | 是否同意 | 1:同意 2:未同意 未购买时无此项 |
accept | bool | 是否允许申请 | true:允许 false:不允许 |
hasBuy | bool | 是否已购买 | true:已购买 未购买时无此项 |
示例:
查询视频cid为168901231
的视频高级弹幕权限购买状态
当前状态为已购买且同意
curl -G 'https://api.bilibili.com/x/dm/adv/state' \
--data-urlencode 'cid=168901231' \
--data-urlencode 'mode=sp' \
-b 'SESSDATA=xxx'
查看响应示例:
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"coins": 2,
"confirm": 1,
"accept": true,
"hasBuy": true
}
}
请求方式:POST
认证方式:Cookie(SESSDATA)或APP
查询指定弹幕点赞状态参阅文档 弹幕点赞查询
正文参数( application/x-www-form-urlencoded ):
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
access_key | str | APP 登录 Token | APP 方式必要 | |
dmid | num | 目标弹幕 dmid | 必要 | |
oid | num | 目标弹幕所在视频 cid | 必要 | |
op | num | 操作 | 必要 | 1:点赞 2:取消点赞 |
platform | str | 平台标识 | 非必要 | web_player:web 播放器 android:安卓端 |
csrf | str | CSRF Token(位于 Cookie) | Cookie 方式必要 |
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0:成功 -101:账号未登录 -111:csrf 校验失败 -400:请求错误 36106:该弹幕已被删除 36805:该视频禁止点赞弹幕 65004:取消赞失败 未点赞过 65006:已赞过 |
message | str | 错误信息 | 默认为0 |
tll | num | 1 |
示例
为cid=145928946
下的弹幕35600074482384899
点赞
curl 'https://api.bilibili.com/x/v2/dm/thumbup/add' \
--data-urlencode 'dmid=35600074482384899' \
--data-urlencode 'oid=145928946' \
--data-urlencode 'op=1' \
--data-urlencode 'platform=web_player' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
查看响应示例:
{
"code":0,
"message":"0",
"ttl":1
}
请求方式:POST
认证方式:Cookie(SESSDATA)或APP
正文参数( application/x-www-form-urlencoded ):
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
access_key | str | APP登录Token | APP方式必要 | |
cid | num | 视频cid | 必要 | |
dmid | num | 弹幕dmid | 必要 | |
reason | num | 举报类型 | 必要 | 类型代码见下表 |
content | str | 其他举报备注 | 非必要 | reason=11 时有效 |
csrf | str | CSRF Token(位于cookie) | Cookie方式必要 |
举报类型reason
:
代码 | 含义 |
---|---|
1 | 违法违禁 |
2 | 色情低俗 |
3 | 赌博诈骗 |
4 | 人身攻击 |
5 | 侵犯隐私 |
6 | 垃圾广告 |
7 | 引战 |
8 | 剧透 |
9 | 恶意刷屏 |
10 | 视频无关 |
11 | 其他 |
12 | 青少年不良 |
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0:成功 -101:账号未登录 -111:csrf 校验失败 -400:请求错误 36201:举报弹幕不存在 36203:举报原因类型错误 36204:已举报 |
message | str | 错误信息 | 默认为空 |
tll | num | 1 | 举报失败时 |
示例
举报cid=145928946
下的弹幕35600074482384899
,理由是引战
curl 'https://api.bilibili.com/x/dm/report/add' \
--data-urlencode 'cid=145928946' \
--data-urlencode 'dmid=35600074482384899' \
--data-urlencode 'reason=7' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
查看响应示例:
{
"code":0,
"message":""
}
请求方式:POST
认证方式:Cookie(SESSDATA) 或APP
注:只能操作自己的稿件或有骑士权限的稿件
正文参数( application/x-www-form-urlencoded ):
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
access_key | str | APP登录Token | APP方式必要 | |
type | num | 弹幕类选择 | 必要 | 1:视频弹幕 |
oid | num | 视频cid | 必要 | |
dmids | nums | 弹幕dmid | 必要 | 多个id之间用, 分隔 |
state | num | 操作代码 | 必要 | 1:删除弹幕 2:弹幕保护 3:取消保护 |
csrf | str | CSRF Token(位于cookie) | Cookie方式必要 |
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0:成功 -101:账号未登录 -111:csrf 校验失败 -400:请求错误 -403:访问权限不足 |
message | str | 错误信息 | 默认为0 |
ttl | num | 1 |
示例
删除cid=145928946
下的弹幕35600074482384899
、39067304918515717
、39082777041174531
curl 'https://api.bilibili.com/x/v2/dm/edit/state' \
--data-urlencode 'type=1' \
--data-urlencode 'oid=145928946' \
--data-urlencode 'dmids=35600074482384899,39067304918515717,39082777041174531' \
--data-urlencode 'state=1' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
查看响应示例:
{
"code":0,
"message":"0",
"ttl":1
}
请求方式:POST
认证方式:Cookie(SESSDATA) 或APP
注:只能操作自己的稿件或有骑士权限的稿件
正文参数( application/x-www-form-urlencoded ):
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
access_key | str | APP登录Token | APP方式必要 | |
type | num | 弹幕类选择 | 必要 | 1:视频弹幕 |
oid | num | 视频cid | 必要 | |
dmids | nums | 弹幕dmid | 必要 | 多个id之间用, 分隔 |
pool | num | 操作代码 | 必要 | 0:移出字幕池 1:移入字幕池 |
csrf | str | CSRF Token(位于cookie) | Cookie方式必要 |
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0:成功 -101:账号未登录 -111:csrf 校验失败 -400:请求错误 -403:访问权限不足 |
message | str | 错误信息 | 默认为0 |
ttl | num | 1 |
示例
将cid=145928946
下的弹幕35600074482384899
、39067304918515717
、39082777041174531
移入字幕池
curl 'https://api.bilibili.com/x/v2/dm/edit/state' \
--data-urlencode 'type=1' \
--data-urlencode 'oid=145928946' \
--data-urlencode 'pool=1' \
--data-urlencode 'dmids=35600074482384899,39067304918515717,39082777041174531' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
查看响应示例:
{
"code":0,
"message":"0",
"ttl":1
}