diff --git a/user/contract.md b/user/contract.md
new file mode 100644
index 0000000..7080164
--- /dev/null
+++ b/user/contract.md
@@ -0,0 +1,131 @@
+# 加入老粉计划
+
+> https://api.bilibili.com/x/v1/contract/add_contract
+
+*请求方式:POST*
+
+是否需要登录:`是`
+
+认证方式:Cookie(SESSDATA)
+
+**正文参数 (application/x-www-form-urlencoded):**
+
+| 参数名 | 类型 | 内容 | 必要性 | 备注 |
+|----------|-----|--------|-----|-----|
+| aid | str | `空串` | | |
+| up_mid | str | UP主UID | 必要 | |
+| source | str | `4` | | |
+| scene | str | `105` | | |
+| platform | str | `web` | | |
+| mobi_app | str | `pc` | | |
+| csrf | str | 用户csrf | 必要 | |
+
+**json回复:**
+
+根对象:
+
+| 字段名 | 类型 | 内容 | 备注 |
+|---------|-----|------|-------------------------|
+| code | num | 响应码 | 0:成功
158001:`不满足条件` |
+| message | str | 0 | |
+| ttl | num | 1 | |
+| data | obj | 信息本体 | |
+
+`data`对象
+
+| 字段名 | 类型 | 内容 | 备注 |
+|---------------|------|-----------------------------------|-----|
+| allow_message | bool | `true` | |
+| input_text | str | `UP主加油!看好你噢` | |
+| input_title | str | `感谢你对UP主的特别支持,“老粉”可期!私信留言鼓励下TA吧 ` | |
+
+**示例:**
+
+```shell
+curl --location --request POST 'https://api.bilibili.com/x/v1/contract/add_contract' \
+--header 'Cookie: SESSDATA=xxx' \
+--header 'Content-Type: application/x-www-form-urlencoded' \
+--data-urlencode 'up_mid=2' \
+--data-urlencode 'csrf=xxx'
+```
+
+
+点击查看
+
+```json
+{
+ "code": 0,
+ "message": "0",
+ "ttl": 1,
+ "data": {
+ "allow_message": true,
+ "input_text": "UP主加油!看好你噢",
+ "input_title": "感谢你对UP主的特别支持,“老粉”可期!私信留言鼓励下TA吧 "
+ }
+}
+```
+
+
+
+# 老粉计划发送留言
+
+> https://api.bilibili.com/x/v1/contract/add_message
+
+*请求方式:POST*
+
+认证方式:Cookie (SESSDATA)
+
+**正文参数 (application/x-www-form-urlencoded):**
+
+| 参数名 | 类型 | 内容 | 必要性 | 备注 |
+|---------|-----|--------|-----|-----|
+| aid | str | `空串` | | |
+| up_mid | str | UP主UID | 必要 | |
+| source | str | `4` | | |
+| scene | str | `105` | | |
+| content | str | 留言内容 | 必要 | |
+| csrf | str | 用户csrf | 必要 | |
+
+**json回复:**
+
+根对象:
+
+| 字段名 | 类型 | 内容 | 备注 |
+|---------|-----|------|------------------------------|
+| code | num | 响应码 | 0:成功
158005:您跟up主还不是契约关系 |
+| message | str | 0 | |
+| ttl | num | 1 | |
+| data | obj | 信息本体 | |
+
+`data`对象
+
+| 字段名 | 类型 | 内容 | 备注 |
+|---------------|-----|------------------|-----|
+| success_toast | str | `提交成功,UP主已收到留言~` | |
+
+**示例:**
+
+```shell
+curl --location --request POST 'https://api.bilibili.com/x/v1/contract/add_message' \
+--header 'Cookie: SESSDATA=xxx' \
+--header 'Content-Type: application/x-www-form-urlencoded' \
+--data-urlencode 'up_mid=2' \
+--data-urlencode 'content=..' \
+--data-urlencode 'csrf=xxx'
+```
+
+
+点击查看
+
+```json
+{
+ "code": 0,
+ "message": "0",
+ "ttl": 1,
+ "data": {
+ "success_toast": "提交成功,UP主已收到留言~"
+ }
+}
+```
+
+
\ No newline at end of file
diff --git a/user/info.md b/user/info.md
index 1dbb6b3..120c143 100644
--- a/user/info.md
+++ b/user/info.md
@@ -36,44 +36,45 @@
`data`对象:
-| 字段 | 类型 | 内容 | 备注 |
-|------------------|------|------------|---------------------------------------------------------------|
-| mid | num | mid | |
-| name | str | 昵称 | |
-| sex | str | 性别 | 男/女/保密 |
-| face | str | 头像链接 | |
-| face_nft | num | 是否为 nft 头像 | `0`不是nft头像
`1`是 nft 头像 |
-| face_nft_type | num | | 0,1 |
-| sign | str | 签名 | |
-| rank | num | 用户权限等级 | 目前应该无任何作用
5000:0级未答题
10000:普通会员
20000:字幕君
25000:VIP
30000:真·职人
32000:管理员 |
-| level | num | 当前等级 | 0-6级 |
-| jointime | num | 注册时间 | 此接口返回恒为`0` |
-| moral | num | 节操值 | 此接口返回恒为`0` |
-| silence | num | 封禁状态 | 0:正常
1:被封 |
-| coins | num | 硬币数 | 需要登录(Cookie)
只能查看自己的
默认为0 |
-| fans_badge | bool | 是否具有粉丝勋章 | false:无
true:有 |
-| fans_medal | obj | 粉丝勋章信息 | |
-| official | obj | 认证信息 | |
-| vip | obj | 会员信息 | |
-| pendant | obj | 头像框信息 | |
-| nameplate | obj | 勋章信息 | |
-| user_honour_info | obj | | |
-| is_followed | bool | 是否关注此用户 | true:已关注
false:未关注
需要登录(Cookie)
未登录恒为false |
-| top_photo | str | 主页头图链接 | |
-| theme | obj | 空 | **作用尚不明确** |
-| sys_notice | obj | 系统通知 | 无内容则为空对象
主要用于展示如用户争议、纪念账号等等 |
-| live_room | obj | 直播间信息 | |
-| birthday | str | 生日 | MM-DD
如设置隐私为空 |
-| school | obj | 学校 | |
-| profession | obj | 专业资质信息 | |
-| tags | null | 个人标签 | |
-| series | obj | | |
-| is_senior_member | num | 是否为硬核会员 | 0:否
1:是 |
-| mcn_info | null | | |
-| gaia_res_type | num | | |
-| gaia_data | null | | |
-| is_risk | bool | | |
-| elec | obj | 充电信息 | |
+| 字段 | 类型 | 内容 | 备注 |
+|------------------|------|------------|--------------------------------------------------------------------------------------------------|
+| mid | num | mid | |
+| name | str | 昵称 | |
+| sex | str | 性别 | 男/女/保密 |
+| face | str | 头像链接 | |
+| face_nft | num | 是否为 nft 头像 | `0`不是nft头像
`1`是 nft 头像 |
+| face_nft_type | num | | 0,1 |
+| sign | str | 签名 | |
+| rank | num | 用户权限等级 | 目前应该无任何作用
5000:0级未答题
10000:普通会员
20000:字幕君
25000:VIP
30000:真·职人
32000:管理员 |
+| level | num | 当前等级 | 0-6级 |
+| jointime | num | 注册时间 | 此接口返回恒为`0` |
+| moral | num | 节操值 | 此接口返回恒为`0` |
+| silence | num | 封禁状态 | 0:正常
1:被封 |
+| coins | num | 硬币数 | 需要登录(Cookie)
只能查看自己的
默认为0 |
+| fans_badge | bool | 是否具有粉丝勋章 | false:无
true:有 |
+| fans_medal | obj | 粉丝勋章信息 | |
+| official | obj | 认证信息 | |
+| vip | obj | 会员信息 | |
+| pendant | obj | 头像框信息 | |
+| nameplate | obj | 勋章信息 | |
+| user_honour_info | obj | | |
+| is_followed | bool | 是否关注此用户 | true:已关注
false:未关注
需要登录(Cookie)
未登录恒为false |
+| top_photo | str | 主页头图链接 | |
+| theme | obj | 空 | **作用尚不明确** |
+| sys_notice | obj | 系统通知 | 无内容则为空对象
主要用于展示如用户争议、纪念账号等等 |
+| live_room | obj | 直播间信息 | |
+| birthday | str | 生日 | MM-DD
如设置隐私为空 |
+| school | obj | 学校 | |
+| profession | obj | 专业资质信息 | |
+| tags | null | 个人标签 | |
+| series | obj | | |
+| is_senior_member | num | 是否为硬核会员 | 0:否
1:是 |
+| mcn_info | null | | |
+| gaia_res_type | num | | |
+| gaia_data | null | | |
+| is_risk | bool | | |
+| elec | obj | 充电信息 | |
+| contract | obj | 是否显示老粉计划 | |
`rank`示例
@@ -311,6 +312,13 @@
| icon | str | `空串` | |
| jump_url | str | `空串` | |
+`data`中的`contract`对象:
+
+| 字段名 | 类型 | 内容 | 备注 |
+|-------------------|------|-----------|---------------------------|
+| is_display | bool | | true/false
在页面中未使用此字段 |
+| is_follow_display | bool | 是否在显示老粉计划 | true:显示
false:不显示 |
+
**示例:**
查询用户`mid=2`的详细信息