下载接口
通过项目标识(slug,即显示在详情页的 package)查询最新版本与历史版本,获取下载地址、更新说明和 SHA-256 校验值。
项目版本
返回指定项目的全部保留版本,按版本编号从高到低排列,第一项为最新版。查询无需登录。APK 项目仍可使用 Android 包名查询。
GET /api/versions?package=<包名>
文件与校验
读取版本返回的 manifest_url 获取分片清单,按 parts[].index 顺序下载并校验每片的 SHA-256,再合并并校验完整文件的 sha256。download_url 保留完整文件直链,供已有客户端使用。
加密与隐藏项目
后台可给项目设置「下载密码」和「在首页隐藏」。公开接口对两者的处理不同:
- 隐藏项目:不出现在首页和本页列表;访客访问详情、
versions、unlock、下载、清单、分片一律返回404,无法通过接口确认其存在。管理员登录后仍可在后台预览和下载。 - 下载密码:未解锁时下载、清单、分片返回
403,versions返回403且带"protected": true。三种方式解锁,任选其一:
方式一:直接在 URL 里传密码
最简单的脚本用法:在下载或清单地址追加 password。清单返回的 parts[].url 会自动带上 15 分钟有效的 access 令牌,后续分片下载不需要再传密码。
GET /download/<包名>/0?password=<下载密码>
GET /api/download_manifest?package=<包名>&version=<版本编号>&password=<下载密码>
方式二:先换取访问令牌
调用 unlock 校验密码,返回 access(默认 15 分钟有效,改密码后立即失效)。之后在下载、清单、分片地址追加 &access=令牌 即可,无需 Cookie,也不再把密码写在后续请求里。
POST /api/unlock
package=<包名>&password=<下载密码>
返回示例:
{
"ok": true,
"access": "<过期时间>.<签名>",
"expires_in": 900
}
versions 请求带 password 或 access 时,返回里的 download_url、manifest_url 已自带令牌,可直接使用。
方式三:请求头
不方便改 URL 时,可以用请求头传凭据:X-Access-Password: <下载密码> 或 X-Access-Token: <令牌>。
状态码
403:需要下载密码 / 密码错误(响应带"protected": true表示该项目已加密)。404:项目或版本不存在;隐藏项目对访客同样返回 404。429:同一会话 10 分钟内解锁尝试超过 8 次,请稍后再试。
上传接口
网页上传会自动检测 PHP 限制并分片;脚本上传小文件可继续使用 file 和可选的 notes,并以 project(项目标识)或 name(新项目名称)指定归属。大文件依次调用 upload_init、upload_chunk、upload_complete,每片及完整文件都需提供 SHA-256。
POST /api/upload
Authorization: Bearer <API_KEY>