下载接口

通过项目标识(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>