直播间管理
开通直播间
https://api.live.bilibili.com/xlive/app-blink/v1/preLive/CreateRoom
请求方式:POST
认证方式:Cookie(SESSDATA)
鉴权方式:Cookie中bili_jct
的值正确并与csrf
相同
正文参数( application/x-www-form-urlencoded ):
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
platform | str | 客户端? | 必要 | 默认值web |
visit_id | str | 未知 | 默认空 | |
csrf | str | CSRF Token(位于cookie) | 必要 | |
csrf_token | str | CSRF Token(位于 cookie) |
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0:成功 1531193016:已经创建直播间~ -400:请求错误 |
ttl | str | 错误信息 | 默认为1 |
message | str | 错误信息 | 默认为0 |
data | array | 信息本体 |
data
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
roomID | str | 直播间房间号 | 创建成功返回直播间号 |
示例:
开通直播间
curl 'https://api.live.bilibili.com/xlive/app-blink/v1/preLive/CreateRoom' \
--data-urlencode 'platform=web' \
--data-urlencode 'visit_id=' \
--data-urlencode 'csrf=xxx' \
--data-urlencode 'csrf_token=xxx' \
-b 'SESSDATA=xxx;bili_jct=xx'
查看响应示例:
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"roomID": "1234"
}
}
{
"code": 1531193016,
"message": "已经创建直播间~",
"ttl": 1,
"data": {
"roomID": ""
}
}
更新直播间信息
https://api.live.bilibili.com/room/v1/Room/update
请求方式:POST
认证方式:Cookie(SESSDATA)
鉴权方式:Cookie中bili_jct
的值正确并与csrf
相同
正文参数( application/x-www-form-urlencoded ):
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
csrf | str | CSRF Token(位于cookie) | 必要 | |
csrf_token | str | CSRF Token(位于 cookie) | 非必要 | |
platform | str | 平台标识 | 非必要 | |
visit_id | str | (?) | 非必要 | 某种标识? |
room_id | num | 直播间id | 必要 | 必须为自己的直播间id |
title | str | 直播间标题 | 非必要 | 上限40个字符 |
area_id | num | 直播分区id(子分区id) | 非必要 | 详见直播分区 |
add_tag | str | 要添加的标签 | 非必要 | 开播设置界面上限10个字符 |
del_tag | str | 要删除的标签 | 非必要 | 若存在add_tag 时不起作用 |
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0:成功 -1:操作太频繁 1:错误 3:未登录或鉴权失败 405:不允许的请求方法 60009:分区已下线 65530:token错误(登录错误) |
msg | str | 错误信息 | 默认为ok |
message | str | 错误信息 | 默认为ok |
data | obj | 信息本体 | 部分失败情况下是[] (空数组) |
data
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
sub_session_key | str | 信息变动标识 | |
audit_info | obj | 标题审核信息 |
data
中的audit_info
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
audit_title_reason | str | 标题审核提示 | |
audit_title_status | num | 标题审核状态 | |
audit_title | str | 被审核的标题 | 更新标题时存在 |
update_title | str | "" | 作用尚不明确 |
示例:
修改直播间10352053
标题为测试
curl 'https://api.live.bilibili.com/room/v1/Room/update' \
--data-urlencode 'room_id=10352053' \
--data-urlencode 'title=测试' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx;bili_jct=xx'
查看响应示例:
{
"code":0,
"msg":"ok",
"message":"ok",
"data":{
"sub_session_key":"",
"audit_info":{
"audit_title_reason":"先发后审",
"update_title":"",
"audit_title_status":2,
"audit_title":"测试"
}
}
}
修改直播间10352053
分区为40
curl 'https://api.live.bilibili.com/room/v1/Room/update' \
--data-urlencode 'room_id=10352053' \
--data-urlencode 'area_id=40' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx;bili_jct=xx'
查看响应示例:
{
"code": 0,
"msg": "ok",
"message": "ok",
"data": {
"sub_session_key": "",
"audit_info": {
"audit_title_reason": "",
"update_title": "",
"audit_title_status": 0
}
}
}
给直播间11996900
添加一个标签为测试标签
curl 'https://api.live.bilibili.com/room/v1/Room/update' \
--data-urlencode 'room_id=11996900' \
--data-urlencode 'add_tag=测试标签' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx;bili_jct=xxx'
查看响应示例:
{
"code": 0,
"msg": "ok",
"message": "ok",
"data": {
"sub_session_key": "",
"audit_info": {
"audit_title_reason": "",
"update_title": "",
"audit_title_status": 0
}
}
}
给直播间11996900
删除内容为测试标签
的标签
curl 'https://api.live.bilibili.com/room/v1/Room/update' \
--data-urlencode 'room_id=11996900' \
--data-urlencode 'del_tag=测试标签' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx;bili_jct=xxx'
查看响应示例:
{
"code": 0,
"msg": "ok",
"message": "ok",
"data": {
"sub_session_key": "",
"audit_info": {
"audit_title_reason": "",
"update_title": "",
"audit_title_status": 0
}
}
}
开始直播
https://api.live.bilibili.com/room/v1/Room/startLive
请求方式:POST
认证方式:Cookie(SESSDATA)
鉴权方式:Cookie中bili_jct
的值正确并与csrf
相同
开播时必须有分区选择,开播后返回推流地址
正文参数( application/x-www-form-urlencoded ):
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
room_id | num | 直播间id | 必要 | 必须为自己的直播间id |
area_v2 | num | 直播分区id(子分区id) | 必要 | 详见直播分区 |
platform | str | 直播平台 | 必要 | 直播姬(pc):pc_link web在线直播:web_link(已下线) bililink:android_link |
csrf | str | CSRF Token(位于cookie) | 必要 |
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0:成功 65530:token错误(登录错误) 1:错误 60009:分区不存在 60013:非常抱歉,您所在的地区受实名认证限制无法开播 60024: 目标分区需要人脸认证 60037: web 在线开播已下线 (其他错误码有待补充) |
msg | str | 错误信息 | 默认为空 |
message | str | 错误信息 | 默认为空 |
data | obj | 信息本体 |
data
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
change | num | 是否改变状态 | 0:未改变 1:改变 |
status | str | 直播间状态 | LIVE |
room_type | num | 0 | 作用尚不明确 |
rtmp | obj | RTMP推流地址信息 | |
protocols | array | 推流协议、地址、密钥等信息 其中地址、密钥与 rtmp 字段的内容是一致的 | 协议只见到过 rtmp |
try_time | str | ??? | 作用尚不明确 |
live_key | str | 标记直播场次的key | |
sub_session_key | str | 信息变动标识 | |
notice | obj | ??? | 作用尚不明确 |
qr | str | "" | 作用尚不明确 |
need_face_auth | bool | 需要人脸识别? | 作用尚不明确 |
service_source | str | ??? | 作用尚不明确 |
rtmp_backup | null | ??? | 作用尚不明确 |
up_stream_extra | obj | 主播推流额外信息? |
data
中的rtmp
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
addr | str | RTMP推流(发送)地址 | 重要 |
code | str | RTMP推流参数(密钥) | 重要 |
new_link | str | 获取CDN推流ip地址重定向信息的url | 没啥用 |
provider | str | 推流云服务节点厂商 | txy : 腾讯云 |
data
中的protocols
数组:
项 | 类型 | 内容 | 备注 |
---|---|---|---|
0 | obj | 与 rtmp 字段在地址和密钥上相同的推流协议信息 |
data
中的protocols
数组中的对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
protocol | str | rtmp | 推流协议 |
addr | str | RTMP推流(发送)地址 | 格式为 rtmp://<推流节点>/live-bvc/ |
code | str | RTMP推流参数(密钥) | 格式为 ?streamname=live_<B站UID>_<未知数字>&key=<密钥>&schedule=rtmp&pflag=<开播平台标志> |
new_link | str | 获取CDN推流ip地址重定向信息的url | |
provider | str | 推流云服务节点厂商 | txy : 腾讯云 |
data
中的notice
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
type | num | 1 | 作用尚不明确 |
status | num | 0 | 作用尚不明确 |
title | str | 空 | 作用尚不明确 |
msg | str | 空 | 作用尚不明确 |
button_text | str | 空 | 作用尚不明确 |
button_url | str | 空 | 作用尚不明确 |
data
中的up_stream_extra
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
isp | str | 主播的互联网服务提供商 |
示例:
以27
作为分区id开播直播间10352053
其中"data"."rtmp"."addr"
为推流地址
"data"."rtmp"."code"
为推流参数
curl 'https://api.live.bilibili.com/room/v1/Room/startLive' \
--data-urlencode 'room_id=10352053' \
--data-urlencode 'area_v2=27' \
--data-urlencode 'platform=pc' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx;bili_jct=xx'
查看响应示例:
{
"code": 0,
"data":{
"change": 1,
"status": "LIVE",
"try_time": "0000-00-00 00:00:00",
"room_type": 0,
"live_key": "608336837537435443",
"sub_session_key": "608336837537435443sub_time:1747292297",
"rtmp":{
"type": 1,
"addr": "rtmp://live-push.bilivideo.com/live-bvc/",
"code": "?streamname=live_348892132_32373699\u0026key=e03061d4a7529d8eaa322dc4d330ca1c\u0026schedule=rtmp\u0026pflag=11",
"new_link": "https://core.bilivideo.com/video/uplinkcore/selfbuild/schedule?up_rtmp=live-push.bilivideo.com%2Flive-bvc%2F%3Fstreamname%3Dlive_348892132_32373699%26key%3De73061d8a7539d8eaa233dc4d880ca1c%26schedule%3Drtmp%26pflag%3D11\u0026edge=edge",
"provider": "live"
},
"protocols":[
{
"protocol": "rtmp",
"addr": "rtmp://live-push.bilivideo.com/live-bvc/","code":"?streamname=live_348892132_32373699\u0026key=e73061d4a1002d8eaa322dc4d880ca1c\u0026schedule=rtmp\u0026pflag=11",
"new_link": "https://core.bilivideo.com/video/uplinkcore/selfbuild/schedule?up_rtmp=live-push.bilivideo.com%2Flive-bvc%2F%3Fstreamname%3Dlive_348892132_32373699%26key%3De10298d4a7539d8eaa322dc4d220ca1c%26schedule%3Drtmp%26pflag%3D11\u0026edge=edge",
"provider": "txy"
}
],
"notice":{
"type": 1,
"status": 0,
"title": "",
"msg": "",
"button_text": "",
"button_url": ""
},
"qr": "",
"need_face_auth": false,
"service_source": "live-streaming",
"rtmp_backup": null,
"up_stream_extra":{
"isp": "电信"
}
},
"message": "",
"msg": ""
}
关闭直播
https://api.live.bilibili.com/room/v1/Room/stopLive
请求方式:POST
认证方式:Cookie(SESSDATA)
鉴权方式:Cookie中bili_jct
的值正确并与csrf
相同
正文参数( application/x-www-form-urlencoded ):
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
room_id | num | 直播间id | 必要 | 必须为自己的直播间id |
csrf | str | CSRF Token(位于cookie) | 必要 |
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0:成功 65530:token错误(登录错误) -400:没有权限 (其他错误码有待补充) |
msg | str | 错误信息 | 默认为空 |
message | str | 错误信息 | 默认为空 |
data | obj | 信息本体 |
data
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
change | num | 是否改变状态 | 0:未改变 1:改变 |
status | str | 直播间状态 | PREPARING 、ROUND |
示例:
关闭直播间10352053
的直播
curl 'https://api.live.bilibili.com/room/v1/Room/stopLive' \
--data-urlencode 'room_id=10352053' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx;bili_jct=xxx'
查看响应示例:
{
"code": 0,
"msg": "",
"message": "",
"data": {
"change": 1,
"status": "PREPARING"
}
}
预更新直播间信息
https://api.live.bilibili.com/xlive/app-blink/v1/preLive/UpdatePreLiveInfo
请求方法: POST
认证方式:Cookie(SESSDATA)
鉴权方式:Cookie中bili_jct
的值正确并与csrf
相同
正文参数( application/x-www-form-urlencoded ):
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
csrf | str | CSRF Token(位于cookie) | 必要 | |
csrf_token | str | CSRF Token(位于cookie) | 必要 | |
platform | str | 平台标识 | 必要 | 似乎可随意提供 网页端: web |
mobi_app | str | 平台标识? | 必要 | 似乎可随意提供 网页端: web |
build | num | 构建标识? | 必要 | 建议取1 ,似乎可随意提供 |
cover | str | 直播封面链接 | 非必要 | 图片链接需要在.hdslb.com 域名下 |
title | str | 直播间标题 | 非必要 | 参见更新直播间信息的title参数 |
coverVertical | str | (?) | 非必要 | 作用尚不明确 |
liveDirectionType | num | (?) | 非必要 | 1 |
visit_id | str | (?) | 非必要 | "" |
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0: 成功 1: 错误 100402: 图片地址不合法 |
message | str | 错误信息 | 成功时为"0" |
ttl | num | 1 | |
data | obj | 内容本体 |
data
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
audit_info | obj | 审核信息 |
data.audit_info
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
audit_title | str | 被审核的标题 | |
audit_title_status | num | 标题审核状态 | |
audit_title_reason | str | 标题审核提示 |
示例:
更新直播间封面
curl 'https://api.live.bilibili.com/xlive/app-blink/v1/preLive/UpdatePreLiveInfo' \
--data-urlencode 'platform=web' \
--data-urlencode 'mobi_app=web' \
--data-urlencode 'build=1' \
--data-urlencode 'cover=https://i0.hdslb.com/bfs/live/59fc254c1f51a962dbf69ae85e4920f2f6fb8dcd.png' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx;bili_jct=xxx'
查看响应示例:
{
"code": 0,
"message": "0",
"ttl": 1,
"data":{
"audit_info":{
"audit_title": "",
"audit_title_status": 0,
"audit_title_reason": ""
}
}
}
使用此接口更新直播间标题
curl 'https://api.live.bilibili.com/xlive/app-blink/v1/preLive/UpdatePreLiveInfo' \
--data-urlencode 'platform=web' \
--data-urlencode 'mobi_app=web' \
--data-urlencode 'build=1' \
--data-urlencode 'title=你好你好,我是花火~咱们来找点乐子吧?小灰毛,不要害羞嘛,要大胆的来,一起欢愉吧' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx;bili_jct=xxx'
查看响应示例:
{
"code": 0,
"message": "0",
"ttl": 1,
"data":{
"audit_info":{
"audit_title": "你好你好,我是花火~咱们来找点乐子吧?小灰毛,不要害羞嘛,要大胆的来,一起欢愉吧",
"audit_title_status": 2,
"audit_title_reason": "先发后审"
}
}
}
更新直播间公告
https://api.live.bilibili.com/xlive/app-blink/v1/index/updateRoomNews
请求方式:POST
认证方式:Cookie(SESSDATA)
鉴权方式:Cookie中bili_jct
的值正确并与csrf
相同
正文参数( application/x-www-form-urlencoded ):
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
room_id | num | 直播间id | 必要 | 必须为自己的直播间id |
uid | num | 用户id | 必要 | |
content | str | 公告内容 | 必要 | 最大60个字符,可以为空 |
csrf | str | CSRF Token(位于cookie) | 必要 | |
csrf_token | str | CSRF Token(位于 cookie) |
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0:成功 65530:token错误(登录错误) 1:错误 |
data | array | 空 | |
message | str | 错误信息 | 默认为ok |
ttl | num | 1 | 作用尚不明确 |
示例:
修改直播间11996900
公告为测试修改公告
curl 'https://api.live.bilibili.com/xlive/app-blink/v1/index/updateRoomNews' \
--data-urlencode 'room_id=11996900' \
--data-urlencode 'uid=306903238' \
--data-urlencode 'content=测试修改公告' \
--data-urlencode 'csrf_token=xxx' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx;bili_jct=xxx'
查看响应示例:
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {}
}