直播间管理

开通直播间

https://api.live.bilibili.com/xlive/app-blink/v1/preLive/CreateRoom

请求方式:POST

认证方式:Cookie(SESSDATA)

鉴权方式:Cookie中bili_jct的值正确并与csrf相同

正文参数( application/x-www-form-urlencoded ):

参数名类型内容必要性备注
platformstr客户端?必要默认值web
visit_idstr未知默认空
csrfstrCSRF Token(位于cookie)必要
csrf_tokenstrCSRF Token(位于 cookie)

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
1531193016:已经创建直播间~
-400:请求错误
ttlstr错误信息默认为1
messagestr错误信息默认为0
dataarray信息本体

data对象:

字段类型内容备注
roomIDstr直播间房间号创建成功返回直播间号

示例:

开通直播间

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 ):

参数名类型内容必要性备注
csrfstrCSRF Token(位于cookie)必要
csrf_tokenstrCSRF Token(位于 cookie)非必要
platformstr平台标识非必要
visit_idstr(?)非必要某种标识?
room_idnum直播间id必要必须为自己的直播间id
titlestr直播间标题非必要上限40个字符
area_idnum直播分区id(子分区id)非必要详见直播分区
add_tagstr要添加的标签非必要开播设置界面上限10个字符
del_tagstr要删除的标签非必要若存在add_tag时不起作用

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
-1:操作太频繁
1:错误
3:未登录或鉴权失败
405:不允许的请求方法
60009:分区已下线
65530:token错误(登录错误)
msgstr错误信息默认为ok
messagestr错误信息默认为ok
dataobj信息本体部分失败情况下是[](空数组)

data对象:

字段类型内容备注
sub_session_keystr信息变动标识
audit_infoobj标题审核信息

data中的audit_info对象:

字段类型内容备注
audit_title_reasonstr标题审核提示
audit_title_statusnum标题审核状态
audit_titlestr被审核的标题更新标题时存在
update_titlestr""作用尚不明确

示例:

修改直播间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_idnum直播间id必要必须为自己的直播间id
area_v2num直播分区id(子分区id)必要详见直播分区
platformstr直播平台必要直播姬(pc):pc_link
web在线直播:web_link(已下线)
bililink:android_link
csrfstrCSRF Token(位于cookie)必要

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
65530:token错误(登录错误)
1:错误
60009:分区不存在
60013:非常抱歉,您所在的地区受实名认证限制无法开播
60024: 目标分区需要人脸认证
60037: web 在线开播已下线
(其他错误码有待补充)
msgstr错误信息默认为空
messagestr错误信息默认为空
dataobj信息本体

data对象:

字段类型内容备注
changenum是否改变状态0:未改变
1:改变
statusstr直播间状态LIVE
room_typenum0作用尚不明确
rtmpobjRTMP推流地址信息
protocolsarray推流协议、地址、密钥等信息
其中地址、密钥与 rtmp 字段的内容是一致的
协议只见到过 rtmp
try_timestr???作用尚不明确
live_keystr标记直播场次的key
sub_session_keystr信息变动标识
noticeobj???作用尚不明确
qrstr""作用尚不明确
need_face_authbool需要人脸识别?作用尚不明确
service_sourcestr???作用尚不明确
rtmp_backupnull???作用尚不明确
up_stream_extraobj主播推流额外信息?

data中的rtmp对象:

字段类型内容备注
addrstrRTMP推流(发送)地址重要
codestrRTMP推流参数(密钥)重要
new_linkstr获取CDN推流ip地址重定向信息的url没啥用
providerstr推流云服务节点厂商txy: 腾讯云

data中的protocols数组:

类型内容备注
0objrtmp 字段在地址和密钥上相同的推流协议信息

data中的protocols数组中的对象:

字段类型内容备注
protocolstrrtmp推流协议
addrstrRTMP推流(发送)地址格式为 rtmp://<推流节点>/live-bvc/
codestrRTMP推流参数(密钥)格式为 ?streamname=live_<B站UID>_<未知数字>&key=<密钥>&schedule=rtmp&pflag=<开播平台标志>
new_linkstr获取CDN推流ip地址重定向信息的url
providerstr推流云服务节点厂商txy: 腾讯云

data中的notice对象:

字段类型内容备注
typenum1作用尚不明确
statusnum0作用尚不明确
titlestr作用尚不明确
msgstr作用尚不明确
button_textstr作用尚不明确
button_urlstr作用尚不明确

data中的up_stream_extra对象:

字段类型内容备注
ispstr主播的互联网服务提供商

示例:

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_idnum直播间id必要必须为自己的直播间id
csrfstrCSRF Token(位于cookie)必要

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
65530:token错误(登录错误)
-400:没有权限
(其他错误码有待补充)
msgstr错误信息默认为空
messagestr错误信息默认为空
dataobj信息本体

data对象:

字段类型内容备注
changenum是否改变状态0:未改变
1:改变
statusstr直播间状态PREPARINGROUND

示例:

关闭直播间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 ):

参数名类型内容必要性备注
csrfstrCSRF Token(位于cookie)必要
csrf_tokenstrCSRF Token(位于cookie)必要
platformstr平台标识必要似乎可随意提供
网页端: web
mobi_appstr平台标识?必要似乎可随意提供
网页端: web
buildnum构建标识?必要建议取1,似乎可随意提供
coverstr直播封面链接非必要图片链接需要在.hdslb.com域名下
titlestr直播间标题非必要参见更新直播间信息的title参数
coverVerticalstr(?)非必要作用尚不明确
liveDirectionTypenum(?)非必要1
visit_idstr(?)非必要""

json回复:

根对象:

字段类型内容备注
codenum返回值0: 成功
1: 错误
100402: 图片地址不合法
messagestr错误信息成功时为"0"
ttlnum1
dataobj内容本体

data对象:

字段类型内容备注
audit_infoobj审核信息

data.audit_info对象:

字段类型内容备注
audit_titlestr被审核的标题
audit_title_statusnum标题审核状态
audit_title_reasonstr标题审核提示

示例:

更新直播间封面

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_idnum直播间id必要必须为自己的直播间id
uidnum用户id必要
contentstr公告内容必要最大60个字符,可以为空
csrfstrCSRF Token(位于cookie)必要
csrf_tokenstrCSRF Token(位于 cookie)

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
65530:token错误(登录错误)
1:错误
dataarray
messagestr错误信息默认为ok
ttlnum1作用尚不明确

示例:

修改直播间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": {}
}