作品版权登记提交接口
接口编号
BQ99分类知识产权服务 / 作品著作权状态启用1、接口说明
作品版权登记提交接口:开发者沿用旧系统对接文档原字段名(cr_order_no / province / type / cr_name / cr_fifles / ownerid / authorid 等)提交,本接口负责把旧字段映射到新系统作品表(mzy_zuopin)并落库。作品文件与各类文书(代理委托书/权利保证书/登记承诺书等)传公网可下载的 http(s) 地址,由接口自动下载转存到文件平台(库内仅存短串,不存长链)。
2、接口信息
| 请求地址 | https://quanzhou.muzhiyun.com/api/bqadd.do |
| 请求方式 | POST |
| 请求格式 | application/json; charset=utf-8 |
| 响应格式 | application/json; charset=utf-8 |
| 超时时间 | 60 秒(建议) |
| 计费方式 | 免费 |
本接口免费,调用不计费、不扣款。
3、鉴权说明
所有请求必须携带下列三个公共参数,缺一不可。它们既是请求参数,也参与签名。
| 参数名 | 说明 | 类型 | 必填 | 示例 | 备注 |
|---|---|---|---|---|---|
appid | 应用ID | String(32) | 是 | muzhiyun | 开放平台分配的应用标识,调用方身份凭证 |
sendtime | 请求时间戳 | Int | 是 | 1790784000 | Unix 时间戳(秒);与服务器时间相差过大视为过期请求 |
sign | 签名 | String(32) | 是 | BEE42F7A74F4482A9A405EDB229CFB6C | 签名值:参与签名的参数按变量名升序拼接后加密,不含本字段 |
签名算法
1) 取本次请求的全部参数(不含 sign 自身); 2) 按参数名 ASCII 升序排序,拼接成 k1=v1&k2=v2&…; 3) 末尾追加 &key=你的AppKey; 4) 对整串做 MD5 后转大写,即得 sign。
调用示例 · 按本接口真实示例值实算一遍
你的 AppKey(仅本地签名用,不随请求发送):
YOUR_APP_KEY1
参与签名的参数(已剔除 sign 自身,按参数名升序)
agentbook=https://x.com/ab.jpg&agentid=1&appid=muzhiyun&authorid=U0001&cr_adder=张三&cr_desc=本作品为……&cr_desc2=创作过程……&cr_fifles=https://x.com/a.jpg|https://x.com/b.pdf&cr_fiflesshow=https://x.com/s.jpg&cr_name=我的原创作品&cr_order_no=202610180001&cr_phone=13800000000&crgetkind=原始取得&crk_oldauthorid=&crk_oldname=&crkind=原创&crownership=个人作品&finishaddr=贵阳市&finishday=2026-01-01&guarantimg=https://x.com/g.jpg&otherbook=https://x.com/ob.jpg&ownerid=U0001|U0002&province=贵州省&publishAnnex=https://x.com/p.jpg&publishaddr=北京市&publishday=2026-02-01&sendtime=1792521169&type=文字作品&urlcall=https://x.com/notify&ws_CorpWorkProve=https://x.com/cw.jpg&ws_JobWorkProve=https://x.com/jw.jpg&ws_chengnuo=https://x.com/cn.jpg&ws_hezuobook=https://x.com/hz.jpg&ws_otherAreaBook=https://x.com/yd.jpg&ws_weituobook=https://x.com/wt.jpg
2
末尾追加 &key=你的AppKey
agentbook=https://x.com/ab.jpg&agentid=1&appid=muzhiyun&authorid=U0001&cr_adder=张三&cr_desc=本作品为……&cr_desc2=创作过程……&cr_fifles=https://x.com/a.jpg|https://x.com/b.pdf&cr_fiflesshow=https://x.com/s.jpg&cr_name=我的原创作品&cr_order_no=202610180001&cr_phone=13800000000&crgetkind=原始取得&crk_oldauthorid=&crk_oldname=&crkind=原创&crownership=个人作品&finishaddr=贵阳市&finishday=2026-01-01&guarantimg=https://x.com/g.jpg&otherbook=https://x.com/ob.jpg&ownerid=U0001|U0002&province=贵州省&publishAnnex=https://x.com/p.jpg&publishaddr=北京市&publishday=2026-02-01&sendtime=1792521169&type=文字作品&urlcall=https://x.com/notify&ws_CorpWorkProve=https://x.com/cw.jpg&ws_JobWorkProve=https://x.com/jw.jpg&ws_chengnuo=https://x.com/cn.jpg&ws_hezuobook=https://x.com/hz.jpg&ws_otherAreaBook=https://x.com/yd.jpg&ws_weituobook=https://x.com/wt.jpg&key=YOUR_APP_KEY
3
整串做 MD5 后转大写,得到 sign
356FD6BBC16BEAEAD7278B6E69DD042F
4
最终请求参数(JSON 包,作为请求 Body 发送)
{
"agentbook": "https://x.com/ab.jpg",
"agentid": "1",
"appid": "muzhiyun",
"authorid": "U0001",
"cr_adder": "张三",
"cr_desc": "本作品为……",
"cr_desc2": "创作过程……",
"cr_fifles": "https://x.com/a.jpg|https://x.com/b.pdf",
"cr_fiflesshow": "https://x.com/s.jpg",
"cr_name": "我的原创作品",
"cr_order_no": "202610180001",
"cr_phone": "13800000000",
"crgetkind": "原始取得",
"crk_oldauthorid": "",
"crk_oldname": "",
"crkind": "原创",
"crownership": "个人作品",
"finishaddr": "贵阳市",
"finishday": "2026-01-01",
"guarantimg": "https://x.com/g.jpg",
"otherbook": "https://x.com/ob.jpg",
"ownerid": "U0001|U0002",
"province": "贵州省",
"publishAnnex": "https://x.com/p.jpg",
"publishaddr": "北京市",
"publishday": "2026-02-01",
"sendtime": "1792521169",
"type": "文字作品",
"urlcall": "https://x.com/notify",
"ws_CorpWorkProve": "https://x.com/cw.jpg",
"ws_JobWorkProve": "https://x.com/jw.jpg",
"ws_chengnuo": "https://x.com/cn.jpg",
"ws_hezuobook": "https://x.com/hz.jpg",
"ws_otherAreaBook": "https://x.com/yd.jpg",
"ws_weituobook": "https://x.com/wt.jpg",
"sign": "356FD6BBC16BEAEAD7278B6E69DD042F"
}上例 AppKey 写作
YOUR_APP_KEY,请换成你自己的 AppKey 重算 sign —— sign 与 AppKey 绑定,同样的参数换 AppKey 会得到完全不同的 sign。复制本例后,把 YOUR_APP_KEY 替换为你自己的 AppKey,再按 ①②③ 重算 sign 即可直接调用(sendtime 为当前时间戳,300 秒内有效)。排序只按参数名,不看参数值;布尔值按 1/0 参与拼接;数组型参数不参与签名。时间戳要求:
sendtime 为 10 位 Unix 秒级时间戳,与服务器时间相差超过 300 秒 视为过期请求。AppID / AppKey 由开放平台发放,可在「用户管理 → 开发者凭证」中查看。4、请求参数
以下参数通过 Body(application/json) 传递
| 参数名 | 说明 | 类型 | 必填 | 示例 | 备注 |
|---|---|---|---|---|---|
cr_order_no | 订单号 | String(32) | 是 | 202610180001 | 内部订单号,同 AppId 下唯一,6~32 位字母数字组合 |
province | 受理省份 | String(50) | 否 | 贵州省 | 福建省/四川省/贵州省/上海市/陕西省/中国版权保护中心,缺省贵州省 |
type | 作品类型 | String(50) | 是 | 文字作品 | 标准作品类型名称,参照作品字典 BQ02 |
cr_name | 作品名称 | String(50) | 是 | 我的原创作品 | 作品名称 |
cr_desc | 创作说明 | Text | 否 | 本作品为…… | 创作说明 |
cr_desc2 | 创作过程 | Text | 否 | 创作过程…… | 创作过程说明 |
cr_fifles | 作品文件 | String(500) | 是 | https://x.com/a.jpg|https://x.com/b.pdf | 作品文件,多值用 | 分隔,下载转存;支持 jpg/jpeg/png/pdf/mp3/mp4 |
cr_fiflesshow | 展示页图片 | String(500) | 否 | https://x.com/s.jpg | 展示页图片,仅贵州有效,多图用 | 分隔 |
ownerid | 著作权人编号 | String(255) | 是 | U0001|U0002 | 著作权人编号(mzy_user.adminname),多值用 | 分隔,参照 BQ01 |
authorid | 作者编号 | String(255) | 是 | U0001 | 作者编号(mzy_user.adminname),多值用 | 分隔,参照 BQ01 |
finishday | 完成日期 | Date | 否 | 2026-01-01 | 完成日期 yyyy-MM-dd,缺省当日 |
finishaddr | 完成地点 | String(250) | 否 | 贵阳市 | 完成地点 |
publishday | 发表日期 | Date | 否 | 2026-02-01 | 发表日期 yyyy-MM-dd |
publishaddr | 发表地点 | String(250) | 否 | 北京市 | 发表地点 |
publishAnnex | 发表凭证 | String(500) | 否 | https://x.com/p.jpg | 发表凭证文件地址,下载转存为短串 |
crkind | 创作性质 | String(50) | 否 | 原创 | 创作性质,参照字典 BQ07 |
crk_oldname | 原作品名称 | String(50) | 否 | — | 原作品名称(演绎/翻译等) |
crk_oldauthorid | 原作品作者姓名 | String(50) | 否 | — | 原作品作者姓名 |
crownership | 权利归属方式 | String(50) | 否 | 个人作品 | 权利归属方式,参照字典 BQ05 |
crgetkind | 权利取得方式 | String(50) | 否 | 原始取得 | 权利取得方式,参照字典 BQ04 |
cr_adder | 申请联系人 | String(50) | 否 | 张三 | 申请联系人姓名 |
cr_phone | 申请联系电话 | String(20) | 否 | 13800000000 | 申请联系电话 |
agentbook | 代理委托书 | String(500) | 否 | https://x.com/ab.jpg | 代理委托书文件地址,下载转存 |
guarantimg | 权利保证书 | String(500) | 否 | https://x.com/g.jpg | 权利保证书文件地址,下载转存(国作必传) |
ws_chengnuo | 登记承诺书 | String(500) | 否 | https://x.com/cn.jpg | 登记承诺书文件地址,下载转存(国作必传) |
ws_CorpWorkProve | 法人作品声明 | String(500) | 否 | https://x.com/cw.jpg | 法人作品声明文件地址,下载转存 |
ws_JobWorkProve | 职务作品合同 | String(500) | 否 | https://x.com/jw.jpg | 职务作品合同文件地址,下载转存 |
ws_weituobook | 委托创作合同 | String(500) | 否 | https://x.com/wt.jpg | 委托创作合同文件地址,下载转存 |
ws_hezuobook | 合作创作合同 | String(500) | 否 | https://x.com/hz.jpg | 合作创作合同文件地址,下载转存 |
ws_otherAreaBook | 异地授权书 | String(500) | 否 | https://x.com/yd.jpg | 异地授权书文件地址,下载转存 |
otherbook | 其他证明文件 | String(500) | 否 | https://x.com/ob.jpg | 其他证明文件地址,下载转存 |
urlcall | 回调网址 | String(255) | 否 | https://x.com/notify | 登记结果回调网址 |
agentid | 代理商编号 | Int | 否 | 1 | 代理商编号(用户表 ID),缺省 1 |
5、返回结果
接口统一返回 JSON,
ok=1 表示成功、ok=0 表示失败;鉴权或配置类错误同时返回 HTTP 666。| 字段 | 类型 | 说明 |
|---|---|---|
ok | Int | 1=成功,0=失败 |
msg | String | 结果描述 / 失败原因 |
成功响应示例
{
"ok": 1,
"msg": "作品登记成功",
"paycount": 1,
"cr_order_no": "202610180001",
"province": "贵州省"
}ok=1 登记成功;paycount=1 表示存在待结算项(作品登记费);cr_order_no 回显本次订单号;province 回显受理省份。
失败响应示例
{
"ok": 0,
"msg": "请传入作品名称【cr_name】"
}ok=0 失败,msg 给出具体原因(必填缺失 / 类型不在字典 / 主体不存在 / 文件下载失败等)。
余额不足 / 无可用套餐
{
"ok": 0,
"msg": "余额不足,且无可用套餐,请充值后重试。"
}接口已停用
{
"ok": 0,
"msg": "接口【作品版权登记提交接口】已停用,暂停调用,请联系管理员。"
}常见错误提示(msg 原文)
缺少必要的参数【appid、sendtime、sign】请详看开发文档。 AppID不存在,请联系产品经理进行业务开通。 sendtime不是10位的数字。 时间戳超时,请重新请求。 签名校验失败。 余额不足,请充值后重试。 接口【XXX】已停用,暂停调用,请联系管理员。
6、调用示例
下面示例自动计算签名(ksort 后 MD5 大写):复制后只需把
你的AppID / 你的AppKey 换成真实凭证即可运行。Python / PHP 为完整可运行版;cURL、JavaScript 展示请求形态。GET 接口请把参数(含 appid/sendtime/sign)拼到 URL 查询串。cURL
curl -X POST "https://quanzhou.muzhiyun.com/api/bqadd.do" \ -H "Content-Type: application/json" \ -d '{"appid":"你的AppID", "sendtime":"<当前时间戳>", "sign":"<按签名算法计算>", "appid":"muzhiyun","sendtime":"1790784000","cr_order_no":"202610180001","province":"贵州省","type":"文字作品","cr_name":"我的原创作品","cr_desc":"本作品为……","cr_desc2":"创作过程……","cr_fifles":"https:\/\/x.com\/a.jpg|https:\/\/x.com\/b.pdf","cr_fiflesshow":"https:\/\/x.com\/s.jpg","ownerid":"U0001|U0002","authorid":"U0001","finishday":"2026-01-01","finishaddr":"贵阳市","publishday":"2026-02-01","publishaddr":"北京市","publishAnnex":"https:\/\/x.com\/p.jpg","crkind":"原创","crk_oldname":"","crk_oldauthorid":"","crownership":"个人作品","crgetkind":"原始取得","cr_adder":"张三","cr_phone":"13800000000","agentbook":"https:\/\/x.com\/ab.jpg","guarantimg":"https:\/\/x.com\/g.jpg","ws_chengnuo":"https:\/\/x.com\/cn.jpg","ws_CorpWorkProve":"https:\/\/x.com\/cw.jpg","ws_JobWorkProve":"https:\/\/x.com\/jw.jpg","ws_weituobook":"https:\/\/x.com\/wt.jpg","ws_hezuobook":"https:\/\/x.com\/hz.jpg","ws_otherAreaBook":"https:\/\/x.com\/yd.jpg","otherbook":"https:\/\/x.com\/ob.jpg","urlcall":"https:\/\/x.com\/notify","agentid":"1" }'
PHP
<?php $appId = "你的AppID"; // 没有则填 muzhiyun $appKey = "你的AppKey"; $url = "https://quanzhou.muzhiyun.com/api/bqadd.do"; $params = [ 'appid' => 'muzhiyun', 'sendtime' => '1790784000', 'cr_order_no' => '202610180001', 'province' => '贵州省', 'type' => '文字作品', 'cr_name' => '我的原创作品', 'cr_desc' => '本作品为……', 'cr_desc2' => '创作过程……', 'cr_fifles' => 'https://x.com/a.jpg|https://x.com/b.pdf', 'cr_fiflesshow' => 'https://x.com/s.jpg', 'ownerid' => 'U0001|U0002', 'authorid' => 'U0001', 'finishday' => '2026-01-01', 'finishaddr' => '贵阳市', 'publishday' => '2026-02-01', 'publishaddr' => '北京市', 'publishAnnex' => 'https://x.com/p.jpg', 'crkind' => '原创', 'crk_oldname' => '', 'crk_oldauthorid' => '', 'crownership' => '个人作品', 'crgetkind' => '原始取得', 'cr_adder' => '张三', 'cr_phone' => '13800000000', 'agentbook' => 'https://x.com/ab.jpg', 'guarantimg' => 'https://x.com/g.jpg', 'ws_chengnuo' => 'https://x.com/cn.jpg', 'ws_CorpWorkProve' => 'https://x.com/cw.jpg', 'ws_JobWorkProve' => 'https://x.com/jw.jpg', 'ws_weituobook' => 'https://x.com/wt.jpg', 'ws_hezuobook' => 'https://x.com/hz.jpg', 'ws_otherAreaBook' => 'https://x.com/yd.jpg', 'otherbook' => 'https://x.com/ob.jpg', 'urlcall' => 'https://x.com/notify', 'agentid' => '1', ]; // 以下三项由代码自动补,无需手填 $params["appid"] = $appId; $params["sendtime"] = (string)time(); ksort($params); $src = ''; foreach($params as $k=>$v) $src .= $k.'='.$v.'&'; $src .= 'key='.$appKey; $params["sign"] = strtoupper(md5($src)); $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL => $url, CURLOPT_POST => true, CURLOPT_HTTPHEADER => ['Content-Type: application/json'], CURLOPT_POSTFIELDS => json_encode($params, JSON_UNESCAPED_UNICODE), CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 30, ]); $resp = curl_exec($ch); curl_close($ch); echo $resp;
Python
import time, hashlib, json, urllib.request APP_ID = "你的AppID" # 没有则填 muzhiyun APP_KEY = "你的AppKey" URL = "https://quanzhou.muzhiyun.com/api/bqadd.do" params = { "appid": "muzhiyun", "sendtime": "1790784000", "cr_order_no": "202610180001", "province": "贵州省", "type": "文字作品", "cr_name": "我的原创作品", "cr_desc": "本作品为……", "cr_desc2": "创作过程……", "cr_fifles": "https://x.com/a.jpg|https://x.com/b.pdf", "cr_fiflesshow": "https://x.com/s.jpg", "ownerid": "U0001|U0002", "authorid": "U0001", "finishday": "2026-01-01", "finishaddr": "贵阳市", "publishday": "2026-02-01", "publishaddr": "北京市", "publishAnnex": "https://x.com/p.jpg", "crkind": "原创", "crk_oldname": "", "crk_oldauthorid": "", "crownership": "个人作品", "crgetkind": "原始取得", "cr_adder": "张三", "cr_phone": "13800000000", "agentbook": "https://x.com/ab.jpg", "guarantimg": "https://x.com/g.jpg", "ws_chengnuo": "https://x.com/cn.jpg", "ws_CorpWorkProve": "https://x.com/cw.jpg", "ws_JobWorkProve": "https://x.com/jw.jpg", "ws_weituobook": "https://x.com/wt.jpg", "ws_hezuobook": "https://x.com/hz.jpg", "ws_otherAreaBook": "https://x.com/yd.jpg", "otherbook": "https://x.com/ob.jpg", "urlcall": "https://x.com/notify", "agentid": "1", } params["appid"] = APP_ID params["sendtime"] = str(int(time.time())) params = dict(sorted(params.items())) # 参数名升序 sign_src = "&".join(f"{k}={v}" for k, v in params.items()) + "&key=" + APP_KEY params["sign"] = hashlib.md5(sign_src.encode("utf-8")).hexdigest().upper() req = urllib.request.Request( URL, data=json.dumps(params).encode("utf-8"), headers={"Content-Type": "application/json"}, method="POST", ) print(urllib.request.urlopen(req, timeout=30).read().decode("utf-8"))
JavaScript
const url = "https://quanzhou.muzhiyun.com/api/bqadd.do"; const params = { 'appid': 'muzhiyun', 'sendtime': '1790784000', 'cr_order_no': '202610180001', 'province': '贵州省', 'type': '文字作品', 'cr_name': '我的原创作品', 'cr_desc': '本作品为……', 'cr_desc2': '创作过程……', 'cr_fifles': 'https://x.com/a.jpg|https://x.com/b.pdf', 'cr_fiflesshow': 'https://x.com/s.jpg', 'ownerid': 'U0001|U0002', 'authorid': 'U0001', 'finishday': '2026-01-01', 'finishaddr': '贵阳市', 'publishday': '2026-02-01', 'publishaddr': '北京市', 'publishAnnex': 'https://x.com/p.jpg', 'crkind': '原创', 'crk_oldname': '', 'crk_oldauthorid': '', 'crownership': '个人作品', 'crgetkind': '原始取得', 'cr_adder': '张三', 'cr_phone': '13800000000', 'agentbook': 'https://x.com/ab.jpg', 'guarantimg': 'https://x.com/g.jpg', 'ws_chengnuo': 'https://x.com/cn.jpg', 'ws_CorpWorkProve': 'https://x.com/cw.jpg', 'ws_JobWorkProve': 'https://x.com/jw.jpg', 'ws_weituobook': 'https://x.com/wt.jpg', 'ws_hezuobook': 'https://x.com/hz.jpg', 'ws_otherAreaBook': 'https://x.com/yd.jpg', 'otherbook': 'https://x.com/ob.jpg', 'urlcall': 'https://x.com/notify', 'agentid': '1', appid: "你的AppID", sendtime: String(Math.floor(Date.now()/1000)), // sign: 按上文「签名算法」在前端算 md5(ksort(k=v&…)&key=AppKey) 后填入 }; fetch(url, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(params), }).then(r => r.json()).then(console.log);
7、注意事项
1、cr_order_no 同 AppId 下唯一,重复提交会被拦截;
2、type 须为标准作品类型名称(见作品字典 BQ02),否则登记失败;
3、ownerid / authorid 为权利主体登记接口(BQ01)分配的编号(mzy_user.adminname),多值用 | 分隔,未登记的主体会直接失败;
4、文件与文书地址须公网可访问,单文件上限 20MB;
5、本接口免费(jifeimod=0),作品登记费走提交后待支付流程(paycount=1)。
2、type 须为标准作品类型名称(见作品字典 BQ02),否则登记失败;
3、ownerid / authorid 为权利主体登记接口(BQ01)分配的编号(mzy_user.adminname),多值用 | 分隔,未登记的主体会直接失败;
4、文件与文书地址须公网可访问,单文件上限 20MB;
5、本接口免费(jifeimod=0),作品登记费走提交后待支付流程(paycount=1)。
拇指云