开放API
更新时间:2026-08-02
接口总览
POST
/openApi/user/fetchBasicInfo.json
获取当前API用户的基本信息
POST
/openApi/user/authenticate.json
获取本站对用户身份挑战值的RSA签名
POST
/openApi/torrent/fetchTorrentIdWithPiecesHash.json
批量根据piecesHash查询种子ID
POST
/openApi/torrent/fetchOpenTorrentList.json
分页查询公开种子列表
POST
/openApi/torrent/generateDownloadKey.json
生成临时种子下载凭证
认证方式
开放API接口URI均以 /openApi/ 开头。请求Header中的 Authorization 应直接填写API AuthKey,不要添加 Bearer 前缀。
API AuthKey需要在个人详情页创建,有效期为180天,每个用户最多同时保留3个有效AuthKey。用户可以在个人详情页删除AuthKey,删除后立即失效。请勿在URL、日志或公开代码中暴露AuthKey。
调用示例:
// node javascript
fetch("https://www.yemapt.org/openApi/xxxxxxxxx", {
"headers": {
"Authorization": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}
});Cookie中的登录auth不能用于开放API。如果在 Authorization 中传入Cookie auth,接口会返回:
通用响应
除下载种子文件的接口外,开放API均返回 ResultDTO 格式的JSON。业务调用是否成功应以 success 为准,不要只依赖HTTP状态码。
成功响应:
失败响应:
常见错误码:
400
未提供AuthKey,或AuthKey格式异常、签名无效、已经过期
402
当前用户没有访问相关资源的权限
403
使用的不是API AuthKey,或API AuthKey已被删除
1402
当前接口要求用户先完成邮箱验证
2401
请求参数或业务校验不通过,具体原因见 errorMessage
500
系统内部异常;反馈问题时请同时提供响应中的traceId信息
1. 用户
1.1 获取用户基本信息
POST /openApi/user/fetchBasicInfo.json
原 GET /openApi/user/fetchBasicInfo.json 已废弃,仅用于兼容已有对接。
响应结果
主要字段说明:
id
Long
用户ID
name
String
用户名
avatar
String
用户上传头像的完整URL,或系统生成的头像标识
bonus
Long
用户积分
level
Integer
用户等级
status
String
用户状态
invitedNum
Long
已邀请用户数量
availableInviteNum
Long
当前可用邀请数量
registerTime
Date
注册时间,ISO 8601格式
promotionUploadSize
Long
促销上传量,单位为字节
promotionDownloadSize
Long
促销下载量,单位为字节
admin
Boolean
是否为管理员
备注:用户上传头像后,avatar直接返回以 https://img.yemapt.org/avatar/ 开头的完整URL,无需再拼接域名;如果返回的是32位随机字符串,则需要使用 Multiavatar 转换。该组件提供JavaScript、PHP和Python工具包。
1.2 校验是否为本站用户
用于第三方系统校验用户提交的auth是否正常,以及获取对应的uid,此功能采用RSA签名技术。
当前使用的publicKey:
POST /openApi/user/authenticate.json
Header Content-Type: application/json
Body
备注:
publicKey务必使用当前Wiki中展示的Key。公钥可能轮换,接口返回“publicKey已失效”时应重新读取本文档中的最新值。randomContent必须为32个字符。建议每次请求都生成新的随机值,例如使用UUID并移除其中的-。验证方应同时校验RSA签名、返回的
userId和本次提交的randomContent,并避免重复接受相同的随机值。
响应结果
备注:
签名数据使用UTF-8编码,格式为“用户ID、制表符、randomContent”,即:
示例代码:
python:
java:
2. 种子
2.1 根据piecesHash获取种子id
POST /openApi/torrent/fetchTorrentIdWithPiecesHash.json
Header Content-Type: application/json
Body
参数说明:
piecesHashList数组长度不能超过100。空数组会返回空Map,不会返回参数错误。
piecesHash通常是对种子
info.pieces内容计算得到的40位SHA-1十六进制字符串;无匹配种子的Hash不会出现在响应结果中。
响应结果
2.2 查询公开种子列表
此接口与站内页面使用的 /api/torrent/fetchOpenTorrentList 查询能力一致,供第三方系统分页查询已发布的公开种子。
POST /openApi/torrent/fetchOpenTorrentList.json
Header Content-Type: application/json
Body
请求参数说明:
keyword:可选,同时匹配种子标题和副标题,长度必须小于128个字符。categoryId:可选,种子类目ID;查询受限类目时,API auth对应的用户必须拥有相应权限。uploadPromotionType:可选,上传促销类型,可用值为none、one_half、double_upload。downloadPromotionType:可选,下载促销类型,可用值为none、half、free。pageParam:必填;current按页码从1开始,最大为1000;pageSize必须大于0且最大为40。sorter:可选;order可用值为ascend、descend。不传时按照置顶状态和发布时间倒序排列。
sorter.field支持以下值:
id、torrentSize、fileSize、fileNumtorrentCommentNum、torrentViewNum、torrentDownloadNumleechNum、seedNum、completedNum、downloadUserNumstatus、listingTime、gmtCreate、gmtModifieduploadPromotionEndTime、downloadPromotionEndTime、reportNum
响应结果
以下响应仅展示主要字段。实际响应还可能包含当前用户信息、种子媒体属性以及以后新增的兼容字段,对接系统应忽略不认识的字段,并允许可选字段为 null 或不返回。
主要字段说明:
id
Long
种子ID
showName
String
种子标题
shortDesc
String
种子副标题
categoryId
Long
类目ID
categoryKey
String
包含父子层级的类目标识
categoryName
String
类目名称
categoryAvatar
String
类目图标
picture
String
种子预览图路径
fileSize
Long
种子内容总大小,单位为字节
seedNum
Integer
当前做种数量
leechNum
Integer
当前下载数量
listingTime
Date
发布时间,ISO 8601格式;具体时区以响应中的偏移量为准
isTopping
String
是否置顶,枚举值为 y、n
uploadPromotion
String
上传促销类型
uploadPromotionEndTime
Date
上传促销结束时间
downloadPromotion
String
下载促销类型
downloadPromotionEndTime
Date
下载促销结束时间
hrPunishEnable
Boolean
是否启用HR考察
userInfo
Object
发种用户的展示信息;匿名发布时不会暴露真实身份
collect
Boolean
当前API用户是否已收藏
userTorrentInfo
Object
当前API用户对该种子的下载量及做种、下载状态
接口只返回状态为 enable 的种子,目前不提供配套的总数接口。无符合条件的数据或分页参数超出限制时,data返回空数组。对接方可以逐页请求;当返回数量小于 pageSize 时,即可认为已经到达当次查询结果的最后一页。分页期间种子数据可能发生变化,对接方应使用种子 id 去重。
2.3 生成种子下载凭证
第三方系统不能直接使用开放API的 Authorization 下载种子文件,需要先为指定种子生成临时下载凭证,再使用凭证下载 .torrent 文件。
2.3.1 生成凭证
POST /openApi/torrent/generateDownloadKey.json?id={torrentId}
请求参数说明:
id:必填,需要下载的种子ID。请求Header中必须携带开放API的
Authorization。
请求示例:
响应结果
data即种子下载凭证,有效期为30分钟。生成凭证时会校验当前API用户是否拥有该种子的下载权限;种子不存在或没有下载权限时,接口返回失败。
原 GET /openApi/torrent/generateDownloadKey.json 和 GET /openApi/torrent/generateDownloadKey 均已废弃,仅用于兼容已有对接。新接入系统必须使用带 .json 后缀的POST接口。
2.3.2 使用凭证下载种子
GET /api/torrent/download1?token={downloadKey}
此下载接口不需要携带 Authorization。下载凭证是Base64字符串,可能包含 +、/、= 等字符,作为查询参数使用前必须进行URL编码。
JavaScript示例:
cURL示例:
下载成功时,接口返回 application/x-bittorrent 类型的种子文件,而不是JSON。凭证已过期、内容异常、用户被禁用、用户passkey发生变化或下载权限发生变化时,接口返回JSON格式的错误信息。
下载凭证与生成凭证的用户及种子绑定。下载得到的种子文件包含该用户的个人Tracker信息,请勿共享凭证或下载后的种子文件。
变更记录
2026-08-02
增加公开种子列表和种子下载凭证接口说明;新增 /openApi/torrent/generateDownloadKey.json;将 fetchBasicInfo 和 generateDownloadKey.json 调整为POST接口,原GET接口标记为废弃;原无 .json 后缀的下载凭证接口标记为废弃;补充认证、通用响应、错误码、字段与分页规则
最后更新于