字段 | 类型 | 内容 | 备注 |
---|---|---|---|
talker_id | num | 聊天对象的id | session_type 为 1 时表示用户 mid,为 2 时表示粉丝团 id |
session_type | num | 聊天对象的类型 | 1:用户 2:粉丝团 |
at_seqno | num | 最近一次未读at自己的消息的序列号 | 在粉丝团会话中有效,若没有未读的 at 自己的消息则为 0 |
top_ts | num | 置顶该会话的时间 | 微秒级时间戳;若未置顶该会话则为 0 ;用于判断是否置顶了会话 |
group_name | str | 粉丝团名称 | 在粉丝团会话中有效,其他会话中为空字符串 |
group_cover | str | 粉丝团头像 | 在粉丝团会话中有效,其他会话中为空字符串 |
is_follow | num | 是否关注了对方 | 在用户会话中有效,系统会话中为 1 , 其他会话中为 0 |
is_dnd | num | 是否对会话设置了免打扰 | |
ack_seqno | num | 最近一次已读的消息序列号 | 用于快速跳转到首条未读的消息 |
ack_ts | num | 最近一次已读时间 | 微秒级时间戳 |
session_ts | num | 会话时间 | 微秒级时间戳 |
unread_count | num | 未读消息数 | |
last_msg | 有效时:obj 无效时:null |
最近的一条消息 | 详见私信主体对象 |
group_type | num | 粉丝团类型 | 在粉丝团时有效 0:应援团 2:官方群(如:ID 为 10 的粉丝团) |
can_fold | num | 会话是否可被折叠入未关注人消息 | 在用户会话中有效 |
status | num | 会话状态 | 详细信息有待补充 |
max_seqno | num | 最近一条消息的序列号 | |
new_push_msg | num | 是否有新推送的消息 | |
setting | num | 推送设置 | 0:接收推送 1:不接收推送 2:(?) |
is_guardian | num | 自己是否为对方的骑士(?) | 在用户会话中有效 0:否 2:是(?) |
is_intercept | num | 会话是否被拦截 | |
is_trust | num | 是否信任此会话 | 若为 1 ,则表示此会话之前被拦截过,但用户选择信任本会话 |
system_msg_type | num | 系统会话类型 | 0:非系统会话 1:主播小助手 5:系统通知(?) 7:UP主小助手 8:客服消息 9:支付小助手 |
account_info | obj | 会话信息 | 仅在系统会话中出现 |
live_status | num | 用户是否正在直播 | 在用户会话中有效,其他会话中为 0 |
biz_msg_unread_count | num | 未读通知消息数 | |
user_label | null | (?) | 作用尚不明确 |
account_info
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
name | str | 会话名称 | |
pic_url | str | 会话头像 |
注:私信主体对象≠私信内容对象
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
sender_uid | num | 发送者mid | |
receiver_type | num | 接收者类型 | 1:用户 2:粉丝团 |
receiver_id | num | 接收者id | receiver_type 为 1 时表示用户 mid,为 2 时表示粉丝团 id |
msg_type | num | 消息类型 | 详见私信消息类型、内容说明 |
content | str | 消息内容 | 私信内容对象经过 JSON 序列化后的文本 |
msg_seqno | num | 消息序列号 | 按照时间顺序从小到大 |
timestamp | num | 消息发送时间 | 秒级时间戳 |
at_uids | 有效时:array 无效时:null |
at的成员mid | 在粉丝团时有效;此项为 null 或 [0] 均表示没有 at 成员 |
msg_key | num | 消息唯一id | 部分库在解析JSON对象中的大数时存在数值的精度丢失问题,因此在处理私信时可能会出现问题,建议使用修复了这一问题的库(如将大数转换成文本) |
msg_status | num | 消息状态 | 0:正常 1:被撤回(接口仍能返回被撤回的私信内容) 2:被系统撤回(如:消息被举报;私信将不会显示在前端,B站接口也不会返回被系统撤回的私信的信息) 50:图片已失效(私信内容为一张提示“图片出现问题”的图片) |
sys_cancel | bool | 是否为系统撤回 | 仅当 msg_type 为 5 且此项值为 true 时有此项;若此项值为 true ,表示目标消息是被系统撤回的,此时前端将不显示该私信且没有提示 |
notify_code | str | 通知代码 | 发送通知时使用,以下划线 _ 分割,第 1 项表示主业务 id,第 2 项表示子业务 id;若这条私信非通知则为空文本;详细信息有待补充 |
new_face_version | num | 表情包版本 | 为 0 或无此项表示旧版表情包,此时 B 站会自动转换成新版表情包,例如 [doge] -> [tv_doge] ;1 为新版 |
msg_source | num | 消息来源 | 见消息来源列表 |
私信主体对象
中的at_uids
数组:
项 | 类型 | 内容 | 备注 |
---|---|---|---|
0 | num | 用户1 | 成员mid |
n | num | 用户(n+1) | |
…… | num | …… | …… |
代码 | 含义 | 备注 |
---|---|---|
0 | 未知来源 | 在以前发送的部分私信的来源代码 |
1 | iOS | |
2 | Android | |
3 | H5 | |
4 | PC客户端 | |
5 | 官方推送消息 | 包括:官方向大多数用户自动发送的私信(如:UP主小助手的推广)等 |
6 | 推送/通知消息 | 包括:特别关注时稿件的自动推送、因成为契约者而自动发送的私信、包月充电回馈私信、官方发送的特定于自己的消息(如:UP主小助手的稿件审核状态通知)等 |
7 | Web | |
8 | 自动回复 - 被关注回复 | B站前端会显示“此条消息为自动回复” |
9 | 自动回复 - 收到消息回复 | B站前端会显示“此条消息为自动回复” |
10 | 自动回复 - 关键词回复 | B站前端会显示“此条消息为自动回复” |
11 | 自动回复 - 大航海上船回复 | B站前端会显示“此条消息为自动回复” |
12 | 自动推送 - UP 主赠言 | 在以前稿件的自动推送与其附带的 UP 主赠言是 2 条不同的私信(其中 UP 主赠言的消息来源代码为 12),现在 UP 主赠言已被合并成为稿件自动推送消息的一部分(attach_msg ) |
13 | 粉丝团系统提示 | 如:粉丝团中的提示信息“欢迎xxx入群” |
16 | 系统 | 目前仅在 msg_type 为 51 时使用该代码 |
17 | 互相关注 | 互相关注时自动发送的私信“我们已互相关注,开始聊天吧~” |
18 | 系统提示 | 目前仅在 msg_type 为 18 时使用该代码,如:“对方主动回复或关注你前,最多发送1条消息” |
19 | AI | 如:给搜索AI助手测试版发送私信时对方的自动回复 |
https://api.vc.bilibili.com/session_svr/v1/session_svr/single_unread
请求方式:GET
认证方式:Cookie(SESSDATA)
注: 该接口默认每 2 分钟请求一次
URL参数:
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
unread_type | num | 未读类型 | 非必要 | 0:所有 1:仅已关注 2:仅未关注 3:仅被拦截 (须同时设置参数 show_dustbin=1 )默认为 0 |
show_unfollow_list | num | 是否返回未关注人推送消息数 | 非必要 | 0:否 1:是 |
show_dustbin | num | 是否返回被拦截私信数 | 非必要 | 0:否 1:是 |
build | num | 客户端内部版本号 | 非必要 | 默认为 0 |
mobi_app | str | 平台标识 | 非必要 | 可为 web 等 |
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0:成功 -101:账号未登录 |
msg | str | 错误信息 | 默认为0 |
message | str | 错误信息 | 默认为0 |
ttl | num | 1 | |
data | obj | 信息本体 |
data
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
unfollow_unread | num | 未读未关注用户私信数 | |
follow_unread | num | 未读已关注用户私信数 | |
unfollow_push_msg | num | 未读未关注用户推送消息数 | |
dustbin_push_msg | num | 未读被拦截的推送消息数 | |
dustbin_unread | num | 未读被拦截的私信数 | |
biz_msg_unfollow_unread | num | 未读未关注用户通知数 | |
biz_msg_follow_unread | num | 未读已关注用户通知数 | |
custom_unread | num | 未读客服消息数 |
示例:
以下信息代表未读未关注用户私信数为 1
条,未读已关注用户私信数为 6
条
curl 'https://api.vc.bilibili.com/session_svr/v1/session_svr/single_unread' \
--data-urlencode 'unread_type=0' \
--data-urlencode 'show_unfollow_list=1' \
--data-urlencode 'show_dustbin=1' \
--data-urlencode 'build=0' \
--data-urlencode 'mobi_app=web' \
-b 'SESSDATA=xxx'
查看响应示例:
{
"code": 0,
"msg": "0",
"message": "0",
"ttl": 1,
"data": {
"unfollow_unread": 1,
"follow_unread": 6,
"unfollow_push_msg": 0,
"dustbin_push_msg": 0,
"dustbin_unread": 0,
"biz_msg_unfollow_unread": 0,
"biz_msg_follow_unread": 0,
"custom_unread": 0
}
}
https://api.vc.bilibili.com/session_svr/v1/session_svr/get_sessions
请求方式:GET
认证方式:Cookie(SESSDATA)
url参数:
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
session_type | num | 会话类型 | 必要 | 1:未被折叠 2:未关注人 3:粉丝团 4:所有 5:被拦截 7:系统消息(?) |
group_fold | num | 是否折叠粉丝团消息 | 非必要 | 0:否 1:是 |
unfollow_fold | num | 是否折叠未关注人消息 | 非必要 | 0:否 1:是 |
sort_rule | num | 排序方式 | 非必要 | 1、2:按会话时间逆向排序 3:按已读时间逆向排序 其他:用户按会话时间逆向排序,粉丝团按加群时间正向排序(?) |
begin_ts | num | 起始时间 | 非必要 | 微秒级时间戳 |
end_ts | num | 终止时间 | 非必要 | 微秒级时间戳 |
size | num | 返回的会话数 | 非必要 | 默认为 20 ,最大为 100 |
build | num | 客户端内部版本号 | 非必要 | 默认为 0 |
mobi_app | str | 平台标识 | 非必要 | 可为 web 等 |
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0:成功 -101:账号未登录 -400:请求错误 |
msg | str | 错误信息 | 默认为0 |
message | str | 错误信息 | 默认为0 |
ttl | num | 1 | |
data | obj | 数据本体 |
data
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
session_list | 有会话时:array 无会话时:null |
会话列表 | |
has_more | num | 是否有更多会话 | |
anti_distrub_cleaning | bool | 是否开启了“一键防骚扰”功能 | |
is_address_list_empty | num | 0 | 作用尚不明确 |
system_msg | obj | 系统会话列表 | 仅当存在系统会话时有此项 |
show_level | bool | 是否在会话列表中显示用户等级 | 目前恒为 true |
data
对象中的session_list
数组:
项 | 类型 | 内容 | 备注 |
---|---|---|---|
0 | obj | 会话1 | 详见会话对象 |
n | obj | 会话(n+1) | |
…… | obj | …… | …… |
data
对象中的system_msg
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
{系统会话类型代码} | num | 系统会话id | 详见会话对象中对 system_msg_type 字段的说明 |
示例:
获取会话列表:
curl -G 'https://api.vc.bilibili.com/session_svr/v1/session_svr/get_sessions' \
--data-urlencode 'session_type=1' \
--data-urlencode 'group_fold=0' \
--data-urlencode 'unfollow_fold=0' \
--data-urlencode 'sort_rule=2' \
--data-urlencode 'size=3' \
--data-urlencode 'build=0' \
--data-urlencode 'mobi_app=web' \
-b 'SESSDATA=xxx'
查看响应示例:
{
"code": 0,
"msg": "0",
"message": "0",
"ttl": 1,
"data": {
"session_list": [
{
"talker_id": 844424930131966,
"session_type": 1,
"at_seqno": 0,
"top_ts": 0,
"group_name": "",
"group_cover": "",
"is_follow": 1,
"is_dnd": 0,
"ack_seqno": 1238729956474887,
"ack_ts": 1709536924979884,
"session_ts": 1712305278098351,
"unread_count": 4,
"last_msg": {
"sender_uid": 844424930131966,
"receiver_type": 1,
"receiver_id": 425503913,
"msg_type": 10,
"content": "{\"title\":\"流量奖励到账通知\",\"text\":\"恭喜您已获得2000流量曝光奖励,快来投稿使用吧。\",\"jump_text\":\"\",\"jump_uri\":\"\",\"modules\":null,\"jump_text_2\":\"\",\"jump_uri_2\":\"\",\"jump_text_3\":\"\",\"jump_uri_3\":\"\",\"notifier\":null,\"jump_uri_config\":{\"all_uri\":\"https://member.bilibili.com/york/flow-reward?navhide=1\\u0026from=msgrecall\",\"text\":\"\"},\"jump_uri_2_config\":{\"text\":\"\"},\"jump_uri_3_config\":{\"text\":\"\"},\"biz_content\":null}",
"msg_seqno": 1285290404823041,
"timestamp": 1712305278,
"at_uids": null,
"msg_key": 7354295169819585966,
"msg_status": 0,
"notify_code": "2091_253",
"new_face_version": 1,
"msg_source": 6
},
"group_type": 0,
"can_fold": 0,
"status": 0,
"max_seqno": 1285290404823041,
"new_push_msg": 1,
"setting": 0,
"is_guardian": 0,
"is_intercept": 0,
"is_trust": 0,
"system_msg_type": 7,
"account_info": {
"name": "UP主小助手",
"pic_url": "https://message.biliimg.com/bfs/im/489a63efadfb202366c2f88853d2217b5ddc7a13.png"
},
"live_status": 0,
"biz_msg_unread_count": 0,
"user_label": null
},
{
"talker_id": 293793435,
"session_type": 1,
"at_seqno": 0,
"top_ts": 0,
"group_name": "",
"group_cover": "",
"is_follow": 1,
"is_dnd": 0,
"ack_seqno": 1236306587877408,
"ack_ts": 1709536984481314,
"session_ts": 1709385615744065,
"unread_count": 0,
"last_msg": {
"sender_uid": 293793435,
"receiver_type": 1,
"receiver_id": 425503913,
"msg_type": 11,
"content": "{\"title\":\"OHHHHHH家人们,我分数终于破w了!紫框了这下确实不好意思说自己是只打红谱的萌新了\",\"times\":14,\"cover\":\"http://i0.hdslb.com/bfs/archive/8821c03ab27a0bcf2bf32af814e758ab17a1e27e.png\",\"rid\":1951316064,\"type_\":8,\"desc\":\"OHHHHHH家人们,我分数终于破w了!紫框了这下确实不好意思说自己是只打红谱的萌新了\",\"bvid\":\"BV1zC411p7JN\",\"view\":452,\"danmaku\":0,\"pub_date\":1709385603,\"attach_msg\":null}",
"msg_seqno": 1236306587877408,
"timestamp": 1709385615,
"at_uids": null,
"msg_key": 7341755312943193481,
"msg_status": 0,
"notify_code": "",
"new_face_version": 1,
"msg_source": 6
},
"group_type": 0,
"can_fold": 0,
"status": 0,
"max_seqno": 1236306587877408,
"new_push_msg": 0,
"setting": 0,
"is_guardian": 0,
"is_intercept": 0,
"is_trust": 0,
"system_msg_type": 0,
"live_status": 0,
"biz_msg_unread_count": 0,
"user_label": null
},
{
"talker_id": 221082140,
"session_type": 2,
"at_seqno": 0,
"top_ts": 0,
"group_name": "社会易姐QwQ的应援团",
"group_cover": "http://i0.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg",
"is_follow": 0,
"is_dnd": 0,
"ack_seqno": 20,
"ack_ts": 1695011620552332,
"session_ts": 1693626568439784,
"unread_count": 0,
"last_msg": {
"sender_uid": 0,
"receiver_type": 2,
"receiver_id": 221082140,
"msg_type": 306,
"content": "{\"group_id\":221082140,\"content\":\"欢迎罗板栗入群\"}",
"msg_seqno": 20,
"timestamp": 1693626568,
"at_uids": null,
"msg_key": 7274070721607234847,
"msg_status": 0,
"notify_code": "",
"msg_source": 13
},
"group_type": 0,
"can_fold": 0,
"status": 0,
"max_seqno": 20,
"new_push_msg": 0,
"setting": 0,
"is_guardian": 0,
"is_intercept": 0,
"is_trust": 0,
"system_msg_type": 0,
"live_status": 0,
"biz_msg_unread_count": 0,
"user_label": null
}
],
"has_more": 1,
"anti_disturb_cleaning": false,
"is_address_list_empty": 0,
"system_msg": {
"1": 844424930131967,
"7": 844424930131966,
"9": 844424930131965
},
"show_level": true
}
}
https://api.vc.bilibili.com/session_svr/v1/session_svr/new_sessions
请求方式:GET
认证方式:Cookie(SESSDATA)
获取指定时间之后的新会话列表
url参数:
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
begin_ts | num | 起始时间 | 非必要 | 微秒级时间戳 |
size | num | 返回的会话数 | 非必要 | 默认为 20 ,最大为 100 |
build | num | 客户端内部版本号 | 非必要 | 默认为 0 |
mobi_app | str | 平台标识 | 非必要 | 可为 web 等 |
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0:成功 -101:账号未登录 -400:请求错误 |
msg | str | 错误信息 | 默认为0 |
message | str | 错误信息 | 默认为0 |
ttl | num | 1 | |
data | obj | 数据本体 |
data
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
session_list | 有会话时:array 无会话时:null |
会话列表 | 按发送时间顺序逆向排序 |
has_more | num | 是否有更多会话 | |
anti_distrub_cleaning | bool | 是否开启了“一键防骚扰”功能 | |
is_address_list_empty | num | 0 | 作用尚不明确 |
show_level | bool | 是否在会话列表中显示用户等级 | 目前恒为 false |
data
对象中的session_list
数组:
项 | 类型 | 内容 | 备注 |
---|---|---|---|
0 | obj | 会话1 | 详见会话对象 |
n | obj | 会话(n+1) | |
…… | obj | …… | …… |
示例:
获取begin_ts=1712420213519391
之后的新会话列表:
curl -G 'https://api.vc.bilibili.com/session_svr/v1/session_svr/new_sessions' \
--data-urlencode 'begin_ts=1712420213519391' \
--data-urlencode 'size=3' \
--data-urlencode 'build=0' \
--data-urlencode 'mobi_app=web' \
-b 'SESSDATA=xxx'
查看响应示例:
{
"code": 0,
"msg": "0",
"message": "0",
"ttl": 1,
"data": {
"session_list": [
{
"talker_id": 844424930131966,
"session_type": 1,
"at_seqno": 0,
"top_ts": 0,
"group_name": "",
"group_cover": "",
"is_follow": 1,
"is_dnd": 0,
"ack_seqno": 1238729956474887,
"ack_ts": 1709536924979884,
"session_ts": 1712305278098351,
"unread_count": 4,
"last_msg": {
"sender_uid": 844424930131966,
"receiver_type": 1,
"receiver_id": 425503913,
"msg_type": 10,
"content": "{\"title\":\"流量奖励到账通知\",\"text\":\"恭喜您已获得2000流量曝光奖励,快来投稿使用吧。\",\"jump_text\":\"\",\"jump_uri\":\"\",\"modules\":null,\"jump_text_2\":\"\",\"jump_uri_2\":\"\",\"jump_text_3\":\"\",\"jump_uri_3\":\"\",\"notifier\":null,\"jump_uri_config\":{\"all_uri\":\"https://member.bilibili.com/york/flow-reward?navhide=1\\u0026from=msgrecall\",\"text\":\"\"},\"jump_uri_2_config\":{\"text\":\"\"},\"jump_uri_3_config\":{\"text\":\"\"},\"biz_content\":null}",
"msg_seqno": 1285290404823041,
"timestamp": 1712305278,
"at_uids": null,
"msg_key": 7354295169819585966,
"msg_status": 0,
"notify_code": "2091_253",
"new_face_version": 1,
"msg_source": 6
},
"group_type": 0,
"can_fold": 0,
"status": 0,
"max_seqno": 1285290404823041,
"new_push_msg": 1,
"setting": 0,
"is_guardian": 0,
"is_intercept": 0,
"is_trust": 0,
"system_msg_type": 7,
"account_info": {
"name": "UP主小助手",
"pic_url": "https://message.biliimg.com/bfs/im/489a63efadfb202366c2f88853d2217b5ddc7a13.png"
},
"live_status": 0,
"biz_msg_unread_count": 0,
"user_label": null
},
{
"talker_id": 293793435,
"session_type": 1,
"at_seqno": 0,
"top_ts": 0,
"group_name": "",
"group_cover": "",
"is_follow": 1,
"is_dnd": 0,
"ack_seqno": 1236306587877408,
"ack_ts": 1709536984481314,
"session_ts": 1709385615744065,
"unread_count": 0,
"last_msg": {
"sender_uid": 293793435,
"receiver_type": 1,
"receiver_id": 425503913,
"msg_type": 11,
"content": "{\"title\":\"OHHHHHH家人们,我分数终于破w了!紫框了这下确实不好意思说自己是只打红谱的萌新了\",\"times\":14,\"cover\":\"http://i0.hdslb.com/bfs/archive/8821c03ab27a0bcf2bf32af814e758ab17a1e27e.png\",\"rid\":1951316064,\"type_\":8,\"desc\":\"OHHHHHH家人们,我分数终于破w了!紫框了这下确实不好意思说自己是只打红谱的萌新了\",\"bvid\":\"BV1zC411p7JN\",\"view\":452,\"danmaku\":0,\"pub_date\":1709385603,\"attach_msg\":null}",
"msg_seqno": 1236306587877408,
"timestamp": 1709385615,
"at_uids": null,
"msg_key": 7341755312943193481,
"msg_status": 0,
"notify_code": "",
"new_face_version": 1,
"msg_source": 6
},
"group_type": 0,
"can_fold": 0,
"status": 0,
"max_seqno": 1236306587877408,
"new_push_msg": 0,
"setting": 0,
"is_guardian": 0,
"is_intercept": 0,
"is_trust": 0,
"system_msg_type": 0,
"live_status": 0,
"biz_msg_unread_count": 0,
"user_label": null
},
{
"talker_id": 221082140,
"session_type": 2,
"at_seqno": 0,
"top_ts": 0,
"group_name": "社会易姐QwQ的应援团",
"group_cover": "http://i0.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg",
"is_follow": 0,
"is_dnd": 0,
"ack_seqno": 20,
"ack_ts": 1695011620552332,
"session_ts": 1693626568439784,
"unread_count": 0,
"last_msg": {
"sender_uid": 0,
"receiver_type": 2,
"receiver_id": 221082140,
"msg_type": 306,
"content": "{\"group_id\":221082140,\"content\":\"欢迎罗板栗入群\"}",
"msg_seqno": 20,
"timestamp": 1693626568,
"at_uids": null,
"msg_key": 7274070721607234847,
"msg_status": 0,
"notify_code": "",
"msg_source": 13
},
"group_type": 0,
"can_fold": 0,
"status": 0,
"max_seqno": 20,
"new_push_msg": 0,
"setting": 0,
"is_guardian": 0,
"is_intercept": 0,
"is_trust": 0,
"system_msg_type": 0,
"live_status": 0,
"biz_msg_unread_count": 0,
"user_label": null
}
],
"has_more": 0,
"anti_disturb_cleaning": false,
"is_address_list_empty": 0,
"show_level": false
}
}
https://api.vc.bilibili.com/session_svr/v1/session_svr/session_detail
请求方式:GET
认证方式:Cookie(SESSDATA)
若从未与该会话聊过天,则返回 1000004 入口节点已存在
错误
url参数:
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
talker_id | num | 聊天对象的id | 必要 | session_type 为 1 时表示用户 mid,为 2 时表示粉丝团 id |
session_type | num | 聊天对象的类型 | 必要 | 1:用户 2:粉丝团 |
build | num | 客户端内部版本号 | 非必要 | 默认为 0 |
mobi_app | str | 平台标识 | 非必要 | 可为 web 等 |
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0:成功 -101:账号未登录 -400:请求错误 1000004:入口节点已存在 |
msg | str | 错误信息 | 默认为0 |
message | str | 错误信息 | 默认为0 |
ttl | num | 1 | |
data | 有效时:obj 无效时:null |
数据本体 | 详见会话对象 |
示例:
获取会话talker_id=293793435&session_type=1
的详细信息:
curl -G 'https://api.vc.bilibili.com/session_svr/v1/session_svr/session_detail' \
--data-urlencode 'talker_id=293793435' \
--data-urlencode 'session_type=1' \
--data-urlencode 'build=0' \
--data-urlencode 'mobi_app=web' \
-b 'SESSDATA=xxx'
查看响应示例:
{
"code": 0,
"msg": "0",
"message": "0",
"ttl": 1,
"data": {
"talker_id": 293793435,
"session_type": 1,
"at_seqno": 0,
"top_ts": 0,
"group_name": "",
"group_cover": "",
"is_follow": 1,
"is_dnd": 0,
"ack_seqno": 1236306587877408,
"ack_ts": 1709536984481314,
"session_ts": 1709385615744065,
"unread_count": 0,
"last_msg": {
"sender_uid": 293793435,
"receiver_type": 1,
"receiver_id": 425503913,
"msg_type": 11,
"content": "{\"title\":\"OHHHHHH家人们,我分数终于破w了!紫框了这下确实不好意思说自己是只打红谱的萌新了\",\"times\":14,\"cover\":\"http://i0.hdslb.com/bfs/archive/8821c03ab27a0bcf2bf32af814e758ab17a1e27e.png\",\"rid\":1951316064,\"type_\":8,\"desc\":\"OHHHHHH家人们,我分数终于破w了!紫框了这下确实不好意思说自己是只打红谱的萌新了\",\"bvid\":\"BV1zC411p7JN\",\"view\":452,\"danmaku\":0,\"pub_date\":1709385603,\"attach_msg\":null}",
"msg_seqno": 1236306587877408,
"timestamp": 1709385615,
"at_uids": null,
"msg_key": 7341755312943193481,
"msg_status": 0,
"notify_code": "",
"new_face_version": 1,
"msg_source": 6
},
"group_type": 0,
"can_fold": 0,
"status": 0,
"max_seqno": 1236306587877408,
"new_push_msg": 0,
"setting": 0,
"is_guardian": 0,
"is_intercept": 0,
"is_trust": 0,
"system_msg_type": 0,
"live_status": 0,
"biz_msg_unread_count": 0,
"user_label": null
}
}
https://api.vc.bilibili.com/svr_sync/v1/svr_sync/fetch_session_msgs
请求方式:GET
认证方式:Cookie(SESSDATA)
仅调用该接口不会设置私信为已读,详见设置私信为已读
此接口有设计缺陷,可以获取已经撤回(msg_status
为 1
)的私信内容
url参数:
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
talker_id | num | 聊天对象的id | 必要 | session_type 为 1 时表示用户 mid,为 2 时表示粉丝团 id |
session_type | num | 聊天对象的类型 | 必要 | 1:用户 2:粉丝团 |
size | num | 返回消息数量 | 非必要 | 默认为 20,最大为 200 |
begin_seqno | num | 开始的序列号 | 非必要 | 提供本参数时返回以本序列号开始(不包括本序列号)的消息 |
end_seqno | num | 结束的序列号 | 非必要 | 提供本参数时返回以本序列号结束(不包括本序列号)的消息 |
sender_device_id | num | 发送者设备 | 非必要 | 默认为 1 |
build | num | 客户端内部版本号 | 非必要 | 默认为 0 |
mobi_app | str | 平台标识 | 非必要 | 可为 web 等;若本参数值为 web ,则返回新版表情包 |
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0:成功 2:非法参数 -101:账号未登录 -400:请求错误 700013:已解散QAQ,无法执行此操作 700014:你已不在此同萌中QAQ,无法执行此操作 |
msg | str | 错误信息 | 默认为0 |
message | str | 错误信息 | 默认为0 |
ttl | num | 1 | |
data | obj | 数据本体 |
data
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
messages | 有私信时:array 无私信时:null |
私信列表 | 按发送时间顺序逆向排序 |
has_more | num | 是否有更多私信 | |
min_seqno | num | 所有消息中最小的序列号(最早) | 若无私信则为 18446744073709551615 |
max_seqno | num | 所有消息中最大的序列号(最晚) | 若无私信则为 0 |
e_infos | array | 聊天表情列表 | 若私信列表中无表情则无此项 |
data
对象中的messages
数组:
项 | 类型 | 内容 | 备注 |
---|---|---|---|
0 | obj | 私信1 | 详见私信主体对象 |
n | obj | 私信(n+1) | |
…… | obj | …… | …… |
data
对象中的e_infos
数组:
项 | 类型 | 内容 | 备注 |
---|---|---|---|
0 | obj | 表情1 | |
n | obj | 表情(n+1) | |
…… | obj | …… | …… |
data
对象中的e_infos
数组中的对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
text | str | 表情名称 | 包括左右两侧的中括号,如[tv_doge] |
uri | str | 表情链接 | |
size | num | 表情尺寸 | 1:小 2:大 |
gif_url | str | 表情GIF链接 | 仅部分表情存在此项 |
示例:
获取与目标用户mid=123
的私信记录:
curl -G 'https://api.vc.bilibili.com/svr_sync/v1/svr_sync/fetch_session_msgs' \
--data-urlencode 'talker_id=123' \
--data-urlencode 'session_type=1' \
--data-urlencode 'size=20' \
--data-urlencode 'sender_device_id=1' \
--data-urlencode 'build=0' \
--data-urlencode 'mobi_app=web' \
-b 'SESSDATA=xxx'
查看响应示例:
{
"code": 0,
"msg": "0",
"message": "0",
"ttl": 1,
"data": {
"messages": [
{
"sender_uid": 2239814,
"receiver_type": 1,
"receiver_id": 123,
"msg_type": 1,
"content": "{\"content\":\"[口罩]\"}",
"msg_seqno": 309675413389322,
"timestamp": 1654154093,
"at_uids": [
0
],
"msg_key": 7104537732714964358,
"msg_status": 0,
"notify_code": "",
"new_face_version": 1,
"msg_source": 2
},
{
"sender_uid": 2239814,
"receiver_type": 1,
"receiver_id": 123,
"msg_type": 5,
"content": "{\"content\":\"1\"}",
"msg_seqno": 308302399586307,
"timestamp": 1654072255,
"at_uids": [
0
],
"msg_key": 7104186240789226795,
"msg_status": 0,
"notify_code": "",
"msg_source": 7
},
],
"has_more": 0,
"min_seqno": 308188515844097,
"max_seqno": 309675413389322,
"e_infos": [
{
"text": "[口罩]",
"url": "http://i0.hdslb.com/bfs/emote/3ad2f66b151496d2a5fb0a8ea75f32265d778dd3.png",
"size": 1
}
]
}
}
https://api.vc.bilibili.com/link_setting/v1/link_setting/is_limit
请求方式:GET
认证方式:Cookie(SESSDATA)
仅对用户会话调用本接口
url参数:
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
uid | num | 聊天对象mid | 必要 | |
type | num | 1 | 必要 |
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0:成功 2:非法参数 -101:账号未登录 -400:请求错误 |
msg | str | 错误信息 | 默认为0 |
message | str | 错误信息 | 默认为0 |
ttl | num | 1 | |
data | obj | 数据本体 |
data
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
is_limit | num | 用户是否被封禁 | |
report_limit | num | 自己是否被限制举报该会话 | 常见于自己被封禁时出现该情况 |
示例:
获取uid=123
的限制状态:
curl -G 'https://api.vc.bilibili.com/link_setting/v1/link_setting/is_limit' \
--data-urlencode 'uid=123' \
--data-urlencode 'type=1' \
-b 'SESSDATA=xxx'
查看响应示例:
{
"code": 0,
"msg": "0",
"message": "0",
"ttl": 1,
"data": {
"is_limit": 0,
"report_limit": 0
}
}
https://api.vc.bilibili.com/link_setting/v1/link_setting/get_session_ss
请求方式:GET
认证方式:Cookie(SESSDATA)
仅对用户会话调用本接口
url参数:
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
talker_uid | num | 聊天对象mid | 必要 | |
build | num | 客户端内部版本号 | 非必要 | 默认为 0 |
mobi_app | str | 平台标识 | 非必要 | 可为 web 等 |
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0:成功 2:非法参数 -101:账号未登录 -400:请求错误 |
msg | str | 错误信息 | 默认为0 |
message | str | 错误信息 | 默认为0 |
ttl | num | 1 | |
data | obj | 数据本体 |
data
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
follow_status | num | 对方对于自己的关注属性 | 0:未关注 2:已关注 6:已互粉 128:已拉黑 |
special | num | 自己是否特别关注了对方 | |
push_setting | num | 推送设置 | 0:接收推送 1:不接收推送 |
show_push_setting | num | 是否显示推送设置 |
示例:
获取talker_uid=123
的推送设置:
curl -G 'https://api.vc.bilibili.com/link_setting/v1/link_setting/get_session_ss' \
--data-urlencode 'talker_uid=123' \
--data-urlencode 'build=0' \
--data-urlencode 'mobi_app=web' \
-b 'SESSDATA=xxx'
查看响应示例:
{
"code": 0,
"msg": "0",
"message": "0",
"ttl": 1,
"data": {
"follow_status": 6,
"special": 1,
"push_setting": 0,
"show_push_setting": 1
}
}
请求方式:GET
认证方式:Cookie(SESSDATA)
可用于获取私信中分享或推送的多个视频、番剧、专栏的信息
url参数:
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
aids | nums | 视频AV号列表 | 必要 (可选) | aids 、ep_ids 与 article_ids 中须至少存在一个参数,每个成员间用 , 分隔,最多 50 个成员 |
ep_ids | nums | 番剧epid列表 | 必要 (可选) | aids 、ep_ids 与 article_ids 中须至少存在一个参数,每个成员间用 , 分隔,最多 50 个成员 |
article_ids | nums | 专栏CV号列表 | 必要 (可选) | aids 、ep_ids 与 article_ids 中须至少存在一个参数,每个成员间用 , 分隔,无成员限制 |
build | num | 客户端内部版本号 | 非必要 | 默认为 0 |
mobi_app | str | 平台标识 | 必要 | 可为 web 等 |
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0:成功 -101:账号未登录 -400:请求错误 |
message | str | 错误信息 | 默认为0 |
ttl | num | 1 | |
data | obj | 数据本体 |
data
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
archive | array | 视频信息列表 | 仅在指定了 aids 参数时存在此项 |
article | array | 专栏信息列表 | 仅在指定了 article_ids 参数时存在此项 |
pgc | array | 番剧信息列表 | 仅在指定了 ep_ids 参数时存在此项 |
archive
、article
、pgc
数组:
项 | 类型 | 内容 | 备注 |
---|---|---|---|
0 | obj | 信息1 | |
n | obj | 信息(n+1) | |
…… | obj | …… | …… |
archive
数组中的对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
bvid | str | 视频BV号 | |
aid | num | 视频AV号 | |
title | str | 视频标题 | 若视频失效则为 内容已失效 |
pic | str | 视频封面 | 若视频失效则为空文本 |
param | str | 提供的参数 | 即 AV 号的文本形式 |
uri | str | 跳转url | bilibili://video/{视频AV号} |
goto | str | av |
|
duration | num | 视频时长 | 以秒为单位,若视频失效则为 0 |
up_name | str | 视频UP主昵称 | |
view | num | 视频播放量 | |
danmaku | num | 视频弹幕数 | |
status | num | 视频状态 | 0:正常 -1:已失效 |
is_started | num | 1 | 作用尚不明确 |
article
数组中的对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
id | num | 专栏CV号 | |
title | str | 专栏标题 | 若专栏失效则为 内容已失效 |
summary | str | 专栏内容概要 | 若专栏失效则为空文本 |
template_id | num | (?) | 作用尚不明确 |
up_name | str | 专栏UP主昵称 | 若专栏失效则为空文本 |
image_urls | array | 专栏封面列表 | 若专栏失效则为空数组 |
view_num | num | 专栏观看数 | 若专栏失效则为 0 |
like_num | num | 专栏点赞数 | 若专栏失效则为 0 |
reply_num | num | 专栏评论数 | 若专栏失效则为 0 |
status | num | 专栏状态 | 0:正常 -1:已失效 |
image_urls
数组:
项 | 类型 | 内容 | 备注 |
---|---|---|---|
0 | str | 封面1 | |
n | str | 封面(n+1) | |
…… | str | …… | …… |
pgc
数组中的对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
ep_id | num | 番剧epid | |
cover | str | 番剧封面url | |
title | str | 番剧分享标题 | 如 《{番剧名}》 第{n}话 {单集标题} 、《{番剧名}》 {备注} 等 |
duration | num | 番剧时长 | 以秒为单位 |
view | num | 番剧播放量 | |
danmaku | num | 番剧弹幕数 | |
url | str | 跳转url | https://www.bilibili.com/bangumi/play/ep{番剧epid} |
示例:
获取aids=170001&ep_ids=780019&article_ids=1
的信息
curl -G 'https://api.vc.bilibili.com/x/im/feed/infoweb' \
--data-urlencode 'aids=170001' \
--data-urlencode 'ep_ids=780019' \
--data-urlencode 'article_ids=1' \
--data-urlencode 'build=0' \
--data-urlencode 'mobi_app=web' \
-b 'SESSDATA=xxx'
查看响应示例:
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"archive": [
{
"bvid": "BV17x411w7KC",
"aid": 170001,
"title": "【MV】保加利亚妖王AZIS视频合辑",
"pic": "http://i2.hdslb.com/bfs/archive/1ada8c32a9d168e4b2ee3e010f24789ba3353785.jpg",
"param": "170001",
"uri": "bilibili://video/170001?player_height=288&player_rotate=0&player_width=512",
"goto": "av",
"duration": 2412,
"up_name": "冰封.虾子",
"view": 44809333,
"danmaku": 913266,
"status": 0,
"is_started": 1
}
],
"article": [
{
"id": 1,
"title": "未知的光",
"summary": "天空像是倾倒出的墨水,黑得静谧而深邃。黎明还远,光亮全无。夜不能寐。披衣,起床。茶香的弥漫,一盏灯的相伴。夜,你是我久别重逢的朋友,那一刹那的相见,带给了我久违的安思。如果不是梦魇的皮闹,我本不该投入",
"template_id": 4,
"up_name": "健行见远渐忘",
"image_urls": [
"https://i0.hdslb.com/bfs/article/d2eedf1fd338bceca10099e2f7b33fa9017c859b.jpg"
],
"view_num": 1608818,
"like_num": 32247,
"reply_num": 14143,
"status": 0
}
],
"pgc": [
{
"ep_id": 780019,
"cover": "http://i0.hdslb.com/bfs/archive/ee28c04d15fb133a9c70c502fabfbdc7e5051ffe.png",
"title": "《铃芽之旅》 新海诚集大成之作",
"duration": 7283,
"view": 22088209,
"danmaku": 93069,
"url": "https://www.bilibili.com/bangumi/play/ep780019"
}
]
}
}
https://api.vc.bilibili.com/session_svr/v1/session_svr/update_ack
请求方式:POST
认证方式:Cookie(SESSDATA)
将指定会话中的指定消息及以前的消息设置为已读
正文参数(application/x-www-form-urlencoded):
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
talker_id | num | 聊天对象的id | 必要 | session_type 为 1 时表示用户 mid,为 2 时表示粉丝团 id |
session_type | num | 聊天对象的类型 | 必要 | 1:用户 2:粉丝团 |
ack_seqno | num | 设置为已读的消息序列号 | 必要 | |
csrf_token | str | CSRF Token(位于cookie) | 必要 | |
csrf | str | CSRF Token(位于cookie) | 必要 | |
build | num | 客户端内部版本号 | 非必要 | 默认为 0 |
mobi_app | str | 平台标识 | 非必要 | 可为 web 等 |
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0:成功 -101:账号未登录 -400:请求错误 |
msg | str | 错误信息 | 成功时为0 |
message | str | 错误信息 | 成功时为0 |
ttl | num | 默认为1 | |
data | 有效时:obj 无效时:不存在该项 |
信息本体 |
data
对象:
一个不含任何项目的对象,即 {}
示例:
将talker_id=293793435
、session_type=1
的ack_seqno=1236306587877408
消息及之前的消息设置为已读
curl 'https://api.vc.bilibili.com/session_svr/v1/session_svr/update_ack' \
--data-urlencode 'talker_id=293793435' \
--data-urlencode 'session_type=1' \
--data-urlencode 'ack_seqno=1236306587877408' \
--data-urlencode 'csrf=xxx' \
--data-urlencode 'csrf_token=xxx' \
-b 'SESSDATA=xxx'
查看响应示例:
{
"code": 0,
"msg": "0",
"message": "0",
"ttl": 1,
"data": {}
}
请求方式:POST
认证方式:Cookie(SESSDATA)
仅支持发送 msg[msg_type]
为 1
、2
或 5
的私信
调用该接口同时会将该会话设置为已读
正文参数(application/x-www-form-urlencoded):
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
msg[sender_uid] | num | 发送者mid | 必要 | 必须为自己的 mid |
msg[receiver_id] | num | 接收者id | 必要 | msg[receiver_type] 为 1 时表示用户 mid,为 2 时表示粉丝团 id |
msg[receiver_type] | num | 接收者类型 | 必要 | 1:用户 2:粉丝团 |
msg[msg_type] | num | 消息类型 | 必要 | 详见私信消息类型、内容说明 此接口仅支持传入 1 、2 或 5 |
msg[msg_status] | num | 消息状态 | 非必要 | 恒为 0 |
msg[dev_id] | str | 设备id | 必要 | 实质上即 UUID(版本 4),生成方式见下 |
msg[timestamp] | num | 当前时间戳(秒) | 必要 | |
msg[new_face_version] | num | 表情包版本 | 非必要 | 提供 0 或者未提供本参数表示旧版表情包,此时 B 站会自动转换成新版表情包,例如 [doge] -> [tv_doge] ;1 为新版 |
msg[content] | str | 消息内容 | 必要 | 详见私信消息类型、内容说明 |
csrf_token | str | CSRF Token(位于cookie) | 必要 | |
csrf | str | CSRF Token(位于cookie) | 必要 | |
build | num | 客户端内部版本号 | 非必要 | 默认为 0 |
mobi_app | str | 平台标识 | 非必要 | 可为 web 等 |
dev_id 的生成:
dev_id 实质上就是 UUID(版本 4)
查看生成 UUID 的代码
import uuid
dev_id = str(uuid.uuid4())
以下代码适用于较新版的 JS 引擎(Chrome≥92,Firefox≥95,Safari≥15.4,Node.js≥19.0.0):
const dev_id = crypto.randomUUID();
以下为通用代码(来自 andywang425/BLTH):
const dev_id = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (function (name) {
const randomInt = 16 * Math.random() | 0;
return ("x" === name ? randomInt : 3 & randomInt | 8).toString(16).toUpperCase();
}));
import java.util.UUID;
public class Main {
private String getDevId() {
UUID uuid = UUID.randomUUID();
return uuid.toString();
}
}
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0:成功 -3:系统错误 -101:账号未登录 -400:请求错误 10005:msgkey不存在 21007:消息过长,无法发送 21020:你发送消息频率过快,请稍后再发~ 21026:不能给自己发送消息哦~ 21028:由于系统升级,暂无法发送,敬请谅解 21035:该类消息暂时无法发送 21037:图片格式不合法,不要调戏接口啦 21041:消息已超期,不能撤回了哦 21042:消息已经撤回了哦 21046:你发消息的频率太高了,请在24小时后再发吧~ 21047:对方主动回复或关注你前,最多发送1条消息~ 25003:因对方隐私设置,暂无法给他发送聊天消息 25005:你已拉黑了对方,请先将对方移出黑名单后才能聊天 700013:已解散QAQ,无法执行此操作 700014:你已不在此同萌中QAQ,无法执行此操作 |
message | str | 错误信息 | 成功时为0 |
ttl | num | 默认为1 | |
data | 有效时:obj 无效时:null |
信息本体 |
data
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
msg_key | num | 消息唯一id | |
e_infos | array | 表情列表 | 仅当请求参数 msg[msg_type] 为 1 ,且私信内容中有表情时有此项 |
msg_content | str | 发送的私信内容 | 一般同请求参数 msg[content] 的值,仅当请求参数 msg[msg_type] 为 1 时有此项 |
key_hit_infos | obj | 触发的提示 | 仅当请求参数 msg[msg_type] 为 1 且 msg[receiver_type] 为 1 时有此项 |
e_infos
数组:
项 | 类型 | 内容 | 备注 |
---|---|---|---|
0 | obj | 表情1 | |
n | obj | 表情(n+1) | |
…… | obj | …… | …… |
e_infos
数组中的对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
text | str | 表情名称 | 包括左右两侧的中括号,如 [tv_doge] |
uri | str | 表情链接 | |
size | num | 表情尺寸 | 1:小 2:大 |
gif_url | str | 表情GIF链接 | 仅部分表情存在此项,如小电视表情 |
key_hit_infos
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
toast | str | 提示信息文字 | 当触发了提示时有此项 |
rule_id | num | 触发的规则id | 当触发了提示时有此项,详细信息有待补充 |
high_text | array | 高亮的文本 | 当触发了提示时有此项 |
high_text
数组:
项 | 类型 | 内容 | 备注 |
---|---|---|---|
0 | obj | 高亮文本1 | 详细信息有待补充 |
n | obj | 高亮文本(n+1) | |
…… | obj | …… | …… |
示例:
给目标用户mid=1
发一条文字私信:
up主你好,
催更[doge]
curl 'https://api.vc.bilibili.com/web_im/v1/web_im/send_msg' \
--data-urlencode 'msg[sender_uid]=293793435' \
--data-urlencode 'msg[receiver_id]=1' \
--data-urlencode 'msg[receiver_type]=1' \
--data-urlencode 'msg[msg_type]=1' \
--data-urlencode 'msg[msg_status]=0' \
--data-urlencode 'msg[dev_id]=372778FD-E359-461D-86A3-EA2BCC6FF52A' \
--data-urlencode 'msg[timestamp]=1626181379' \
--data-urlencode 'msg[new_face_version]=1' \
--data-urlencode 'msg[content]={"content":"up主你好,\n催更[doge]"}' \
--data-urlencode 'csrf=xxx' \
--data-urlencode 'csrf_token=xxx' \
-b 'SESSDATA=xxx'
查看响应示例:
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"msg_key": 6984393491767669026,
"e_infos": [
{
"text": "[doge]",
"url": "https://i0.hdslb.com/bfs/emote/3087d273a78ccaff4bb1e9972e2ba2a7583c9f11.png",
"size": 1
}
],
"msg_content": "{\"content\":\"up主你好,\\n催更[doge]\"}",
"key_hit_infos": {}
}
}
给目标用户mid=1
发一条图片私信:
curl 'https://api.vc.bilibili.com/web_im/v1/web_im/send_msg' \
--data-urlencode 'msg[sender_uid]=293793435' \
--data-urlencode 'msg[receiver_id]=1' \
--data-urlencode 'msg[receiver_type]=1' \
--data-urlencode 'msg[msg_type]=2' \
--data-urlencode 'msg[msg_status]=0' \
--data-urlencode 'msg[dev_id]=372778FD-E359-461D-86A3-EA2BCC6FF52A' \
--data-urlencode 'msg[timestamp]=1626181379' \
--data-urlencode 'msg[content]={"url":"https://i1.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg","height":300,"width":300,"imageType":"jpeg","original":1,"size":54.144}' \
--data-urlencode 'csrf=xxx' \
--data-urlencode 'csrf_token=xxx' \
-b 'SESSDATA=xxx'
查看响应示例:
{
"code": 0,
"message": "0",
"data": {
"msg_key": 6852570013146024354
}
}
给目标用户mid=1
发送会触发提示的私信:
支付宝
curl 'https://api.vc.bilibili.com/web_im/v1/web_im/send_msg' \
--data-urlencode 'msg[sender_uid]=293793435' \
--data-urlencode 'msg[receiver_id]=1' \
--data-urlencode 'msg[receiver_type]=1' \
--data-urlencode 'msg[msg_type]=1' \
--data-urlencode 'msg[msg_status]=0' \
--data-urlencode 'msg[dev_id]=372778FD-E359-461D-86A3-EA2BCC6FF52A' \
--data-urlencode 'msg[timestamp]=1626181379' \
--data-urlencode 'msg[content]={"content":"支付宝"}' \
--data-urlencode 'csrf=xxx' \
--data-urlencode 'csrf_token=xxx' \
-b 'SESSDATA=xxx'
查看响应示例:
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"msg_key": 6984393491767669026,
"msg_content": "{\"content\":\"支付宝\"}",
"key_hit_infos": {
"toast": "【温馨提示】为保障消费者权益,根据平台规则,如创作者在与消费者沟通中进行发布要求非法转账、欺诈转账等违规行为,平台有权对此进行处罚,感谢您的理解。",
"rule_id": 2,
"high_text": [{}]
}
}
}