1. 上传 (Upload)
Milracle-v2
  • 认证 (Auth)
    • 重定向认证操作 (OIDC / GitHub OAuth 回调)
      GET
    • 认证操作
      POST
  • 谱面 (Charts)
    • 获取谱面列表或详情
      GET
    • 删除谱面
      DELETE
    • 删除谱面 (兼容旧客户端,使用 POST 代替 DELETE)
      POST
    • Studio 管理:获取审核队列(支持待审核 / 上架申请 / 已通过 / 已上架 / 已拒绝等)
      GET
    • Studio 操作:投票 / 申请上架 / 处理上架
      POST
  • 成绩 (Scores)
    • 获取成绩
      GET
    • 上传成绩
      POST
  • 游玩记录 (Records)
    • 获取游玩记录
      GET
    • 上传游玩记录
      POST
  • 资源包 (Resource Packs)
    • 获取资源包列表/详情或下载资源包
      GET
    • 上传资源包或审核资源包
      POST
  • 用户 (User)
    • 获取用户信息或用户列表
      GET
    • 用户操作(某些操作需管理员权限,例如修改其他用户)
      POST
  • 管理员 (Admin)
    • 管理员查询
      GET
    • 管理员更新
      PUT
  • 内容 (Content)
    • 获取内容
      GET
    • 创建内容
      POST
    • 更新内容
      PUT
    • 删除内容
      DELETE
  • 上传 (Upload)
    • 获取 presigned 上传地址 / 头像代理
      GET
    • 文件上传
      POST
  • 工具 (Utils)
    • 获取谱面元数据(不再服务端打包 zip)
  • 工单 (Tickets)
    • 工单: 列表 / 详情 / 统计
    • 工单: 创建 / 回复 / 认领 / 结案 / 驳回
  • 数据模型
    • User
    • Chart
    • ChartAsset
    • Error
    • Score
    • Record
    • ResourcePack
    • RecordProperties
  1. 上传 (Upload)

文件上传

POST
/api/v2/upload
上传文件、头像或谱面。谱面上传成功后,服务端会失效相关缓存。type=chart-zip:服务端在内存中解包 zip,逐文件上传到 R2 包前缀 charts/{packageId}/... —— meta.json 始终上传;若存在 extra.json,其本体以及它引用的文件都会上传;zip 内其余资源全部保留(零丢失)。服务端不再保存/生成原始整包 zip,也不再写 file_url;资源清单写入 assets_manifest。成功响应为 { message, id, packageId, warning? }(zip 内缺 meta.json 时带 warning)。

请求参数

Authorization
JWT Bearer
在 Header 添加参数
Authorization
示例:
Authorization: ********************
or
Query 参数

Body 参数multipart/form-data必填

请求示例代码

Shell
JavaScript
Java
Swift
Go
PHP
Python
HTTP
C
C#
Objective-C
Ruby
OCaml
Dart
R
请求示例请求示例
Shell
JavaScript
Java
Swift
curl --location 'https://api.xhsr.org.cn/api/v2/upload?type=&filename=' \
--header 'Authorization: Bearer <token>' \
--form 'file=@""' \
--form 'title=""' \
--form 'artist=""' \
--form 'charter=""' \
--form 'difficulty=""' \
--form 'level=""' \
--form 'bpm=""' \
--form 'offset=""' \
--form 'description=""' \
--form 'allow_ai_learning="false"'

返回响应

🟢200
application/json
上传成功。type=chart-zip 返回谱面团包结果 { message, id, packageId, warning? };type=avatar / type=file 返回 { url }(公开访问地址)。
Bodyapplication/json

示例
{
    "message": "Upload successful",
    "id": 42,
    "packageId": "1765342698163-ab12cd",
    "warning": "meta.json not found in zip; chart/audio/cover resolved by type. A backfill may be needed."
}
🟢201
🟠401
🟠403
🔴500
修改于 2026-10-07 10:19:10
上一页
获取 presigned 上传地址 / 头像代理
下一页
获取谱面元数据(不再服务端打包 zip)
Built with