输入用户名开始查询,例如、、
每行一个用户名(或用英文逗号分隔),调用官方POST /api/minecraft/batch接口批量解析 UUID。
OAuth2 Authorization Code Flow
点击下方按钮将跳转到 LittleSkin 授权页面。完成登录并授权后, 浏览器会自动回跳到 https://mcapi.nekoshizuku.cc.cd/,无需手动操作。
申请权限:User.Read · Player.ReadWrite · Closet.ReadWrite · offline_access
所有接口均由本中转站代理,避免跨域、提供缓存、隐藏凭证。状态码 200 表示成功;404 表示用户不存在;502 表示上游故障。
/api/minecraft/all/[username]一键获取全部信息:UUID、皮肤、披风、签名、头像、3D 模型。只记得用户名即可。
/api/minecraft/all/myndlp
{
"ok": true,
"info": {
"username": "myndlp",
"uuid": "d5d2a02a769d4f62b62a19d90e79b2d2",
"uuidDashed": "d5d2a02a-769d-4f62-b62a-19d90e79b2d2",
"name": "myndlp",
"skinUrl": "http://textures.minecraft.net/...",
"skinModel": "slim",
"capeUrl": null,
"signature": "...",
"avatars": { "avatar": {...}, "helm": {...}, "body": {...}, "skin": "..." }
}
}/api/minecraft/uuid/[username]通过用户名查询 UUID(Mojang 官方接口代理)。
/api/minecraft/uuid/myndlp
{
"ok": true,
"id": "d5d2a02a769d4f62b62a19d90e79b2d2",
"name": "myndlp"
}/api/minecraft/profile/[uuid]通过 UUID 获取皮肤/披风/签名等完整 profile(session server 代理)。
/api/minecraft/profile/d5d2a02a769d4f62b62a19d90e79b2d2
{
"ok": true,
"id": "d5d2a02a769d4f62b62a19d90e79b2d2",
"name": "myndlp",
"properties": [{ "name": "textures", "value": "base64...", "signature": "..." }]
}/api/minecraft/batch批量 UUID 查询,一次最多 10 个用户名。
POST /api/minecraft/batch
Content-Type: application/json
{ "usernames": ["myndlp", "Notch", "jeb_"] }{
"ok": true,
"count": 3,
"profiles": [
{ "id": "...", "name": "myndlp" },
...
]
}/api/minecraft/avatar/[username]?size=128&variant=avatar|helm|body|skinMinotar 头像 / 全身渲染代理。size 支持 32/64/128/256/512。返回图片。
/api/minecraft/avatar/myndlp?size=128&variant=helm
/api/littleskin/auth/authorizeOAuth2 授权码流入口。生成 state cookie 后 302 跳转到 https://littleskin.cn/oauth/authorize,回调地址固定为 https://mcapi.nekoshizuku.cc.cd/api/littleskin/auth/callback。默认 scope: User.Read Player.ReadWrite Closet.ReadWrite offline_access。可选 query: scope(自定义权限), returnPath(授权后回跳路径)。
/api/littleskin/auth/authorize # 或带自定义 scope: /api/littleskin/auth/authorize?scope=User.Read%20Player.ReadWrite
HTTP 302 → https://littleskin.cn/oauth/authorize?client_id=1483&redirect_uri=https%3A%2F%2Fmcapi.nekoshizuku.cc.cd%2Fapi%2Flittleskin%2Fauth%2Fcallback&response_type=code&scope=User.Read+Player.ReadWrite+Closet.ReadWrite+offline_access&state=<random>
/api/littleskin/auth/callbackOAuth2 授权码流回调端点。LittleSkin 在用户授权后重定向到这里,后端校验 state cookie,然后用 code + client_secret 换取 access_token 并写入 HTTP-only cookie,最后 302 跳回 returnPath(默认 /)。
/api/littleskin/auth/callback?code=<授权码>&state=<state> # 失败时跳回: /?littleskin_error=<错误信息>
/api/littleskin/auth/deviceOAuth2 设备码流入口。后端调用 LittleSkin /oauth/device_code,返回 user_code + verification_uri_complete。device_code 由后端保存在 cookie 中,前端不可见。注意:设备码流需要 LittleSkin 后台将应用加入白名单,未加白名单会返回 invalid_client 错误,此时请改用授权码登录。
POST /api/littleskin/auth/device
Content-Type: application/json
{}{
"ok": true,
"user_code": "ABCD-EFGH",
"verification_uri": "https://open.littleskin.cn/oauth/link",
"verification_uri_complete": "https://open.littleskin.cn/oauth/link?user_code=ABCD-EFGH",
"expires_in": 300,
"interval": 5
}/api/littleskin/auth/poll设备码流轮询。用 cookie 中的 device_code 调用 LittleSkin /oauth/token。返回 authenticated=true 表示成功(token 已写入 cookie);返回 pending=true 表示继续轮询;其他 error 为终态。
POST /api/littleskin/auth/poll
{
"ok": true,
"authenticated": true,
"expires_in": 259200,
"has_refresh_token": true
}
# 或:
{ "ok": true, "authenticated": false, "pending": true }/api/littleskin/auth/refresh用 cookie 中的 refresh_token 手动刷新 access_token。前端检测到 401 时可主动调用。
POST /api/littleskin/auth/refresh
{ "ok": true, "expires_in": 259200 }/api/littleskin/auth/logout清除所有 LittleSkin auth cookie(access_token / refresh_token / device_code / state)。
POST /api/littleskin/auth/logout
{ "ok": true }/api/littleskin/auth/status检查当前是否已登录(不调用上游,只读 cookie)。前端首屏时调用以决定显示登录按钮还是用户面板。
/api/littleskin/auth/status
{ "ok": true, "authenticated": true, "has_refresh_token": true }/api/littleskin/me获取当前登录用户的 LittleSkin 基本信息(Blessing Skin API /api/user)。需要 User.Read 权限。
/api/littleskin/me
{ "ok": true, "status": 200, "data": { "uid": 12345, "nickname": "...", "email": "...", "score": 100 } }/api/littleskin/players?include=closet列出当前用户名下所有角色(Player)。可选 ?include=closet 一并返回衣柜。需要 Player.Read 权限。
/api/littleskin/players
{ "ok": true, "status": 200, "data": [ { "pid": 1, "name": "myndlp", "textures": { "skin": "hash", "cape": null } } ] }/api/littleskin/players/[pid]/textures为指定角色设置 skin / cape。Body 为 JSON,任一字段可省略,传空字符串表示清除。需要 Player.ReadWrite 权限。
POST /api/littleskin/players/1/textures
Content-Type: application/json
{
"skin": "0a2b3c... 或 http://...",
"cape": "hash 或 URL",
"skin_model": "slim"
}/api/littleskin/upload上传本地 PNG 皮肤/披风到 LittleSkin 衣柜。Body 为 multipart/form-data,字段:name, type(skin|cape), model(default|slim, 仅 skin), file。需要 Closet.ReadWrite 权限。
POST /api/littleskin/upload Content-Type: multipart/form-data; boundary=... --... Content-Disposition: form-data; name="name" 我的皮肤 --... Content-Disposition: form-data; name="type" skin --... Content-Disposition: form-data; name="model" slim --... Content-Disposition: form-data; name="file"; filename="skin.png" Content-Type: image/png <binary> --...--
/api/littleskin/closet列出当前用户衣柜中所有已上传的材质。需要 Closet.Read 权限。
/api/littleskin/closet
{ "ok": true, "status": 200, "data": [ { "tid": 1, "name": "我的皮肤", "type": "skin", "hash": "0a2b3c...", "model": "slim" } ] }/api/littleskin/announcements获取 LittleSkin 站点公告列表。无需鉴权,可直接调用。
/api/littleskin/announcements
{ "ok": true, "status": 200, "data": [ { "title": "...", "content": "<p>...</p>", "severity": "info", "timestamp": 1706369054 } ] }/api/littleskin/proxy/[...upstream-path]?<query>通用 LittleSkin API 代理(逃生舱)。任何没有专用路由的端点都可从这里走:access_token 从 cookie 读取并转发为 Bearer。支持 GET / POST / DELETE。POST 时 body 可以是 JSON / form / multipart。
GET /api/littleskin/proxy/user/notifications # 或 POST: POST /api/littleskin/proxy/user/notifications/read
/api/shizuku?img=xn猫羽雫随机图背景代理。302 重定向到上游,或 type=proxy 返回图片字节。
/api/shizuku?img=xn