BAC DocumentBAC Document
首页
目录
贡献指南
  • QQ交流群(综合技术交流)
  • Telegram交流群(Github Bot推送)
GitHub
首页
目录
贡献指南
  • QQ交流群(综合技术交流)
  • Telegram交流群(Github Bot推送)
GitHub
  • 发布动态

发布动态

为图片动态上传图片

https://api.bilibili.com/x/dynamic/feed/draw/upload_bfs

请求方法: POST

认证方式: Cookie (SESSDATA)

注意: 非日常类型像素宽高必须大于 420

正文参数 (multipart/form-data):

参数名类型内容必要性备注
file_upfile需要上传的图片文件必要格式仅支持 jpg png gif
categorystring图片类型不必要daily: 日常 (动态) (默认)
draw: 绘画 (画友)
cos: 摄影 (COSPLAY)
bizstring不必要new_dyn
csrfstringCSRF Token (即 Cookie 中 bili_jct)必要

JSON 回复:

根对象:

字段类型内容备注
codenumber返回值0: 成功
4100001: 参数错误
-101: 账号未登录
messagestring错误信息默认为 0
dataobject信息本体成功时为有效信息
ttlnumber1

data 对象:

字段类型内容备注
image_urlstring已上传图片 URL
image_widthnumber已上传图片宽度像素
image_heightnumber已上传图片高度像素
img_sizenumber已上传图片大小k

示例:

上传图片 test.png 类型为 日常

curl 'https://api.bilibili.com/x/dynamic/feed/draw/upload_bfs' \
-F 'file_up=@test.png' \
-F 'category=daily' \
-F 'csrf=xxxx' \
-b 'SESSDATA=xxx'
查看响应示例:
{
  "code": 0,
  "message": "0",
  "ttl": 1,
  "data": {
    "image_url": "http://i0.hdslb.com/bfs/new_dyn/8ad5640045a114b62580614cb512bbc32095498218.png",
    "image_width": 73,
    "image_height": 71,
    "img_size": 6.261
  }
}

创建投票

https://api.vc.bilibili.com/vote_svr/v1/vote_svr/create_vote

请求方法: POST

认证方式: Cookie (SESSDATA)

注意: options 最少两个, 下标 n 从 0 开始

正文参数 (multipart/form-data):

参数名类型内容必要性备注
info[title]string投票标题必要
info[desc]string投票描述非必要可为空
info[type]number投票类型必要0: 文字投票
1: 图片投票
info[choice_cnt]number最多选几项必要
info[duration]number投票持续秒数必要常用:
三天: 259200
七天: 604800
三十天: 2592000
info[options][ n ][desc]string第 n 项选项文字内容必要
info[options][ n ][img_url]strin第 n 项选项投票图片非必要
csrfstringCSRF Token (即 Cookie 中 bili_jct)非必要

JSON 回复:

根对象:

字段类型内容备注
codenumber返回值0:成功
5100001: 参数错误
msgstring错误信息成功为空
messagestring错误信息跟上面那个一模一样
dataobject信息本体仅在正确时既code=0时为有效信息

data 对象:

字段类型内容备注
vote_idnumber投票 id
_gt_number0

示例:

创建一个标题为 是否自愿开学 持续七天的纯文本投票

curl -X POST 'https://api.vc.bilibili.com/vote_svr/v1/vote_svr/create_vote' \
--data-urlencode 'info[title]=是否自愿开学' \
--data-urlencode 'info[desc]=问卷调查:自愿开学' \
--data-urlencode 'info[type]=0' \
--data-urlencode 'info[choice_cnt]=1' \
--data-urlencode 'info[duration]=604800' \
--data-urlencode 'info[options][0][desc]=自愿' \
--data-urlencode 'info[options][1][desc]=不自愿' \
-b 'SESSDATA=xxx'
查看响应示例:
{
  "code": 0,
  "msg": "",
  "message": "",
  "data": {
    "vote_id": 4947171,
    "_gt_": 0
  }
}

发表纯文本动态

https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/create

请求方法: POST

认证方式: Cookie (SESSDATA)

正文参数 (multipart/form-data):

参数名类型内容必要性备注
dynamic_idnumber0必要
typenumber4必要
ridnumber0必要
contentstring动态内容必要
up_choose_commentnumber0非必要
up_close_commentnumber0非必要
extensionjson位置信息非必要
at_uidsstring动态中 at 到的用户的 uid非必要使用逗号,分隔
ctrlarray特殊格式控制 (如 at 别人时的蓝字体和链接)非必要
csrf_tokenstringCSRF Token (即 Cookie 中 bili_jct)非必要
csrfstringCSRF Token (即 Cookie 中 bili_jct)非必要

extension 参数值:

{
  "emoji_type": 1,
  "lbs_cfg": {
    "title": "**市",
    "poi": "156330200",
    "show_title": "**市",
    "type": 1,
    "address": "**市",
    "location": {
      "lng": //显示的经度数值,
      "lat": //显示的纬度数值
    },
    "distance": 0
  },
  "flag_cfg": {},
  "from_cfg": {
    "location": {
      "lat": //用户实际纬度数值,
      "lng": //用户实际经度数值
    }
  }
}

ctrl 数组中的对象:

参数名类型内容备注
locationnumber从全文第几个字开始变蓝
typenumber1可能 1 代表链接到用户 mid
lengthnumber这一段变蓝多少字
datastring链接目标被 at 人的 mid

JSON 回复:

根对象:

字段类型内容备注
codenumber返回值0: 成功
messagestring错误信息成功为空
dataobject数据本体

data 对象:

字段类型内容备注
resultnumber0
errmsgstring像是服务器日志一样的东西
dynamic_idnumber动态 id
create_resultnumber1
dynamic_id_strstring动态 id字符串格式
_gt_number0

示例:

纯文本:
curl 'https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/create' \
	--data-urlencode 'dynamic_id=0' \
	--data-urlencode 'type=4' \
	--data-urlencode 'rid=0' \
	--data-urlencode 'content=Hello Bug~' \
	--data-urlencode 'up_choose_comment=0' \
	--data-urlencode 'up_close_comment=0' \
	--data-urlencode 'extension={"emoji_type":1,"from":{"emoji_type":1},"flag_cfg":{}}' \
	--data-urlencode 'at_uids=' \
	--data-urlencode 'ctrl=[]' \
	--data-urlencode 'csrf_token=de2731532b4ab96bc8536da948932668' \
	--data-urlencode 'csrf=de2731532b4ab96bc8536da948932668' \
    -b 'SESSDATA=******'
{
  "code": 0,
  "msg": "",
  "message": "",
  "data": {
    "result": 0,
    "errmsg": "; Create dynamic:588320531406678918, res:0, result:1; Push create kafka:0; Push create databus:0; Register comment result:0; Add outbox result:1",
    "dynamic_id": 588320531406678918,
    "create_result": 1,
    "dynamic_id_str": "588320531406678918",
    "_gt_": 0
  }
}
at 两个人:

动态正文

[热词系列_神仙UP]@暮光小猿wzt @社会易姐QwQ

at_uids

15858903,293793435

ctrl

[
  { "location": 11, "type": 1, "length": 9, "data": "15858903" },
  { "location": 20, "type": 1, "length": 9, "data": "293793435" }
]

命令

curl 'https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/create' \
    --data-urlencode 'dynamic_id': '0' \
    --data-urlencode 'type': '4' \
    --data-urlencode 'rid': '0' \
    --data-urlencode 'content': '[热词系列_神仙UP]@暮光小猿wzt @社会易姐QwQ ' \
    --data-urlencode 'up_choose_comment': '0' \
    --data-urlencode 'up_close_comment': '0' \
    --data-urlencode 'extension': '{"emoji_type":1,"from":{"emoji_type":1},"flag_cfg":{}}' \
    --data-urlencode 'at_uids': '15858903,293793435' \
    --data-urlencode 'ctrl': '[{"location":11,"type":1,"length":9,"data":"15858903"},{"location":20,"type":1,"length":9,"data":"293793435"}]' \
    --data-urlencode 'csrf_token': 'de2731532b4ab96bc8536da948932668' \
    --data-urlencode 'csrf': 'de2731532b4ab96bc8536da948932668' \
    -b 'SESSDATA=******'

发表复杂动态

https://api.bilibili.com/x/dynamic/feed/create/dyn

请求方法:POST

认证方式:Cookie (SESSDATA)

URL 参数:

参数名类型内容必要性备注
csrfstringCSRF Token (即 Cookie 中 bili_jct)必要

正文参数 (application/json):

根对象:

参数名类型内容必要性备注
dyn_reqobject请求本体必要

dyn_req 对象:

参数名类型内容必要性备注
attach_cardobject特殊卡片非必要如直播预约等
contentobject动态内容非必要
metaobject元信息非必要大概是来源信息
scenenumber动态类型?必要纯文本: 1 (实际同 2)
带图: 2
4: 转发
picsobject[]携带图片非必要最多九个
topicobject话题非必要
optionobject互动设置非必要没有此项时默认开启评论区
upload_idstring客户端生成的非必要内容为发送人mid+当前秒级时间戳+四位随机整数,中间用_隔开

dyn_req.meta 对象:

大概是来源信息, 示例见下

{
  "app_meta": {
    "from": "create.dynamic.web",
    "mobi_app": "web"
  }
}

dyn_req.content 对象:

参数名类型内容必要性备注
contentsobject[]动态组件对象有序数组必要

dyn_req.content.contents[] 对象:

参数名类型内容必要性备注
raw_textstring文本必要
typenumber组件类型 id不必要参见 富文本节点类型
biz_idstring动态组件的内容id转字符串不必要参见 富文本节点类型

dyn_req.topic 对象:

参数名类型内容必要性备注
from_sourcestring来源id?不必要网页版直接选为 dyn.web.list
from_topic_idnumber0不必要
idnumber话题id必要
namestring话题名不必要

dyn_req.pics[] 对象:

参数名类型内容必要性备注
img_heightnumber图高非必要这个东西会直接原封不动传到前端,比如你都写 0 在网页上就看不见了, 但是还会加载
img_widthnumber图宽非必要同上
img_sizefloat图片文件大小(KB)非必要
img_srcstring图片 URL必要

dyn_req.option 对象:

参数名类型内容必要性备注
up_choose_commentnumber精选评论flag非必要1: 开启
close_commentnumber关闭评论flag非必要同上, 上二选一

dyn_req.topic 对象:

参数名类型内容必要性备注
from_sourcestringdyn.web.list非必要作用不明
from_topic_idnumber0非必要作用不明
idnumber话题id必要
namestring话题名非必要

JSON 回复:

根对象:

字段类型内容备注
codenumber返回值0: 成功
-101: 账号未登录
4126021: 你没有绑定手机,无法发布动态
messagestring错误信息成功为空
dataobject数据本体

data 对象:

字段类型内容备注
resultnumber0
messagestring错误信息
dyn_idnumber动态 id
dyn_id_strstring动态 id字符串格式
dyn_typenumber动态类型1: 转发
2: 图文
share_windowobject分享提示当 Cookie 不存在 buvid3 时存在

data.share_window 对象:

字段类型内容备注
main_titlestring分享后会获得更多曝光,快去分享吧

示例:

Cookie 带 `buvid3`:

动态正文

Test礼堂丁真,鉴定为一眼丁真

带两张一样的图:

http://i0.hdslb.com/bfs/new_dyn/322acd0fa92cfa59c0ad70e95ab95476470310172.png

然后关闭评论区

命令

curl -X POST 'https://api.bilibili.com/x/dynamic/feed/create/dyn?csrf=xxxxx' \
-b 'buvid3=114514;SESSDATA=xxxxx;' \
--header 'Content-Type: application/json' \
--data-raw '{
    "dyn_req": {
        "content": {
            "contents": [
                {
                    "raw_text": "Test",
                    "type": 1,
                    "biz_id": ""
                },
                {
                    "raw_text": "礼堂丁真,鉴定为一眼丁真",
                    "type": 2,
                    "biz_id": "1463028352"
                }
            ]
        },
        "pics": [
            {
                "img_src": "http://i0.hdslb.com/bfs/new_dyn/322acd0fa92cfa59c0ad70e95ab95476470310172.png",
                "img_width": 1368,
                "img_height": 1500,
                "img_size": 662.6005859375
            },
            {
                "img_src": "http://i0.hdslb.com/bfs/new_dyn/322acd0fa92cfa59c0ad70e95ab95476470310172.png",
                "img_width": 1368,
                "img_height": 1500,
                "img_size": 662.6005859375
            }
        ],
        "option": {
            "close_comment": 1
        },
        "scene": 2
    }
}'

响应:

{
  "code": 0,
  "message": "0",
  "ttl": 1,
  "data": {
    "dyn_id": 755402172521250838,
    "dyn_id_str": "755402172521250838",
    "dyn_type": 2,
    "dyn_rid": 221621773
  }
}

立即发布定时动态

https://api.vc.bilibili.com/dynamic_draft/v1/dynamic_draft/publish_now

请求方法: POST

认证方式: Cookie (SESSDATA)

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

参数名类型内容必要性备注
draft_idfile定时动态(草稿)id必要
csrfstringCSRF Token(即 Cookie 中 bili_jct)必要

JSON 回复:

根对象:

字段类型内容备注
codenumber返回值0: 成功
dataobject信息本体正常为空对象
messagestring错误消息正常为 0
ttlnumber1
查看示例
curl -X POST 'https://api.vc.bilibili.com/dynamic_draft/v1/dynamic_draft/publish_now' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'draft_id=755409289278914611' \
--data-urlencode 'csrf=xxx'
-b 'SESSDATA=xxxx;'
{
  "code": 0,
  "message": "0",
  "ttl": 1,
  "data": {}
}
在 GitHub 上编辑此页
最近更新: 2025/7/21 04:54
Contributors: SocialSisterYi, wuziqian211, SessionHu
Copyright © 2020-2025 SocialSisterYi | CC-BY-NC-4.0 Licensed