OPENAPI 3.1 · REST · BEARER

把 MusicArk,
接进你的应用。

从账号连接、曲库发现到直放、转码、封面、歌词和个人状态同步,一套契约完成第三方播放器的完整接入。

一次认证,后续只发送 Token

播放器用 MusicArk 用户名和密码建立连接。验证成功后,服务端返回随机的 mak_… Bearer Token;密码不再随曲库、图片或媒体请求发送。

01 · 建立播放器连接
curl -sS -X POST \
  'http://设备IP:13038/api/core/v1/player/session' \
  -H 'Content-Type: application/json' \
  --data '{
    "username": "alice",
    "password": "your-password",
    "client_name": "客厅播放器",
    "device_id": "living-room-player-01"
  }'
02 · 携带 Bearer Token
BASE_URL='http://设备IP:13038/api/core/v1'
PLAYER_TOKEN='mak_...'

curl -sS "$BASE_URL/catalog/tracks?limit=50" \
  -H "Authorization: Bearer $PLAYER_TOKEN"
设备身份

每个客户端安装应生成并持久保存独立的 device_id。同一账号和设备再次登录会轮换密钥并立即使旧密钥失效,不会累积多个有效令牌。

按能力授权,不共享账户边界

普通用户连接默认获得四项播放器权限。管理员可以额外获得或显式签发 library:write;普通用户即使取得同名 Scope 也不能执行管理员维护操作。

catalog:read

浏览曲库

曲目、专辑、艺术家、文件夹、搜索、首页、推荐、封面、歌词和个人列表读取。

playback:stream

读取音频

查询转码 Profile,创建 ListeningSession,读取直放、渐进转码或 HLS。

playback:control

管理播放状态

维护个人转码偏好、共享队列、收藏和歌单。

playback:report

同步设备进度

按设备读取和上报进度,并通过稳定 playback_id 保证播放统计幂等。

library:write

管理员曲库维护

编辑标签与封面、写回文件、整理、扫描和受保护的文件操作。

发现、播放、同步,保持同一条资源路径

客户端必须使用服务端返回的不透明资源 ID、分页游标、媒体 URL 与实际 MIME。不能从名称推导 ID,也不能把长期 Token 放进 URL。

01

发现与搜索

GET /catalog/tracksGET /catalog/query?q=

使用 limitafter 进行游标分页。

02

读取内容

GET /catalog/tracks/{id}GET /images/{id}?size=512

封面和歌词同样要求 Bearer Token,并支持 ETag 缓存。

03

协商播放能力

GET /transcode-profilesPOST /listening-sessions

提交客户端真实支持的 MIME/codec,按响应决定直放、转码或 HLS。

04

读取与 Seek

GET /listening-sessions/{id}/stream

直放支持单段 Range;转码 Seek 使用新的 start_ms 重建会话。

05

上报与恢复

POST /player/progressGET /player/progress

建议播放中每 10–15 秒上报,并在暂停、切歌和完成时补报。

06

同步个人数据

GET/PUT /me/playback-queueGET/POST /playlists

收藏、歌单、队列和设备进度始终绑定 Token 所属用户。

契约、实例文档与接入验证

静态契约适合预先生成类型;客户端上线前还应使用目标 MusicArk 实例提供的同镜像契约进行校验。

ERROR MODEL

根据状态码与稳定 code 分支

所有 API 错误使用 application/problem+json。客户端不应根据本地化的标题或详情判断逻辑。

{
  "status": 403,
  "code": "API_TOKEN_SCOPE_REQUIRED",
  "detail": "当前接口需要 catalog:read 权限。",
  "request_id": "req_01..."
}

Token 是设备凭证,不是分享链接

远程连接应通过可信 HTTPS 入口;密码只用于建立连接,Token 只存入系统安全存储。