# 弹幕操作 ## 发送视频弹幕 > http://api.bilibili.com/x/v2/dm/post *方式:POST* 需要登录(SESSDATA) **参数( application/x-www-form-urlencoded ):** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | -------- | ---- | ---------------------- | ------ | ------------------------------------------------------------ | | type | data | 1 | 必要 | | | oid | data | 视频CID | 必要 | | | msg | data | 弹幕内容 | 必要 | 长度小于100字符 | | bvid | data | 视频bvID | 非必要 | avID与bvID任选一个 | | aid | data | 视频avID | 非必要 | avID与bvID任选一个 | | progress | data | 弹幕出现在视频内的时间 | 非必要 | 单位为毫秒
默认为0 | | color | data | 弹幕颜色设置 | 非必要 | 详见[「弹幕」中的属性 p](danmaku.md#属性 p)
默认为16777215(#FFFFFF)白色 | | fontsize | data | 弹幕字号设置 | 非必要 | 详见[「弹幕」中的属性 p](danmaku.md#属性 p)
默认为25 | | pool | data | 弹幕池选择 | 非必要 | 0:普通弹幕
1:字幕弹幕
默认为0 | | mode | data | 弹幕类型选择 | 必要 | 详见[「弹幕」中的属性 p](danmaku.md#属性 p) | | rnd | data | 16位10进制随机数 | 非必要 | **若无此项,则发送弹幕冷却时间限制为90s**
若有此项,则发送弹幕冷却时间限制为5s | | csrf | data | cookies中的bili_jct | 必要 | | **json回复:** 根对象: | 字段 | 类型 | 内容 | 备注 | | ------- | ---- | -------- | ------------------------------------------------------------ | | code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-111:csrf校验失败
-400:请求错误
-404:无此项
36702:弹幕长度大于100
36703:发送频率过快
36711:该视频禁止发送弹幕
36714:弹幕出现时刻超过视频总时长
**(其他错误码有待补充)** | | message | str | 错误信息 | 默认为0 | | ttl | num | 1 | 作用尚不明确 | | data | obj | 信息本体 | | `data`对象: | 字段 | 类型 | 内容 | 备注 | | -------- | ---- | ------ | ------------ | | action | str | 空 | 作用尚不明确 | | dmid | num | 弹幕ID | | | dmid_str | str | 弹幕ID | 字串形式 | | visible | bool | true | 作用尚不明确 | **示例:** 为视频`av2`/`BV1xx411c7mD`(CID为`62131`)的5s位置发送一条弹幕`前来考古`(颜色为#FFFFFF,字号25,普通弹幕,游动弹幕) curl -b "SESSDATA=xxx" -d "type=1&oid=62131&msg=%e5%89%8d%e6%9d%a5%e8%80%83%e5%8f%a4&aid=2&progress=5000&color=16777215&fontsize=25&pool=0&mode=1&rnd=3456789987654321&csrf=xxx" "http://api.bilibili.com/x/v2/dm/post" 同curl -b "SESSDATA=xxx" -d "type=1&oid=62131&msg=%e5%89%8d%e6%9d%a5%e8%80%83%e5%8f%a4&bvid=BV1xx411c7mD&progress=5000&color=16777215&fontsize=25&pool=0&mode=1&rnd=3456789987654321&csrf=xxx" "http://api.bilibili.com/x/v2/dm/post" ```json { "code":0, "message":"0", "ttl":1, "data":{ "action":"", "dmid":32161968826613767, "dmid_str":"32161968826613767", "visible":true } } ``` ## 撤回弹幕 > http://api.bilibili.com/x/dm/recall *方式:POST* 仅能撤回自己两分钟内的弹幕,且每天只有3次机会 需要登录(SESSDATA) **参数( application/x-www-form-urlencoded ):** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ------ | ---- | ------------------- | ------ | ---- | | dmid | data | 弹幕ID | 必要 | | | cid | data | 视频CID | 必要 | | | csrf | data | cookies中的bili_jct | 必要 | | **json回复:** 根对象: | 字段 | 类型 | 内容 | 备注 | | ------- | ---- | -------- | ------------------------------------------------------------ | | code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-111:csrf校验失败
-400:请求错误
-404:无此项
36301:撤回失败,弹幕发送已过2分钟
36302:撤回失败,弹幕已经被删除或撤回
36303:撤回失败,今天撤回的机会已经用完
**(其他错误码有待补充)** | | message | str | 错误信息 | 成功后显示剩余次数 | | ttl | num | 1 | 作用尚不明确 | **示例:** 撤回视频CID为`168901231`弹幕ID为`32310301474947077`的弹幕 curl -b "SESSDATA=xxx" -d "dmid=32310301474947077&cid=168901231&csrf=xxx" "http://api.bilibili.com/x/dm/recall" ```json { "code": 0, "message": "撤回成功,你还有3次撤回机会" } ```