MC API 中转站

Minecraft UUID · 皮肤 · 3D 渲染 一站式查询

skinview3d
一键查询 · 全栈整合 · 3D 渲染

只需用户名,获取一切

整合 Mojang 官方 API、Minotar 头像服务、skinview3d 3D 渲染、 LittleSkin API 与猫羽雫随机背景,打造最完整的 Minecraft 玩家信息查询体验。

只需用户名即可获取 UUID · 皮肤 · 披风 · 签名 · 头像 · 3D 渲染

输入用户名开始查询,例如

批量查询 UUID(Mojang 单次最多 10 个)

每行一个用户名(或用英文逗号分隔),调用官方POST /api/minecraft/batch接口批量解析 UUID。

LittleSkin API 服务检查中

OAuth2 Authorization Code Flow

点击下方按钮将跳转到 LittleSkin 授权页面。完成登录并授权后, 浏览器会自动回跳到 https://mcapi.nekoshizuku.cc.cd/,无需手动操作。

申请权限:User.Read · Player.ReadWrite · Closet.ReadWrite · offline_access

开放 API 文档(原 API + 我们的 API)

所有接口均由本中转站代理,避免跨域、提供缓存、隐藏凭证。状态码 200 表示成功;404 表示用户不存在;502 表示上游故障。

GET/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": "..." }
  }
}
GET/api/minecraft/uuid/[username]

通过用户名查询 UUID(Mojang 官方接口代理)。

/api/minecraft/uuid/myndlp
{
  "ok": true,
  "id": "d5d2a02a769d4f62b62a19d90e79b2d2",
  "name": "myndlp"
}
GET/api/minecraft/profile/[uuid]

通过 UUID 获取皮肤/披风/签名等完整 profile(session server 代理)。

/api/minecraft/profile/d5d2a02a769d4f62b62a19d90e79b2d2
{
  "ok": true,
  "id": "d5d2a02a769d4f62b62a19d90e79b2d2",
  "name": "myndlp",
  "properties": [{ "name": "textures", "value": "base64...", "signature": "..." }]
}
POST/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" },
    ...
  ]
}
GET/api/minecraft/avatar/[username]?size=128&variant=avatar|helm|body|skin

Minotar 头像 / 全身渲染代理。size 支持 32/64/128/256/512。返回图片。

/api/minecraft/avatar/myndlp?size=128&variant=helm
GET/api/littleskin/auth/authorize

OAuth2 授权码流入口。生成 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>
GET/api/littleskin/auth/callback

OAuth2 授权码流回调端点。LittleSkin 在用户授权后重定向到这里,后端校验 state cookie,然后用 code + client_secret 换取 access_token 并写入 HTTP-only cookie,最后 302 跳回 returnPath(默认 /)。

/api/littleskin/auth/callback?code=<授权码>&state=<state>
# 失败时跳回:
/?littleskin_error=<错误信息>
POST/api/littleskin/auth/device

OAuth2 设备码流入口。后端调用 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
}
POST/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 }
POST/api/littleskin/auth/refresh

用 cookie 中的 refresh_token 手动刷新 access_token。前端检测到 401 时可主动调用。

POST /api/littleskin/auth/refresh
{ "ok": true, "expires_in": 259200 }
POST/api/littleskin/auth/logout

清除所有 LittleSkin auth cookie(access_token / refresh_token / device_code / state)。

POST /api/littleskin/auth/logout
{ "ok": true }
GET/api/littleskin/auth/status

检查当前是否已登录(不调用上游,只读 cookie)。前端首屏时调用以决定显示登录按钮还是用户面板。

/api/littleskin/auth/status
{ "ok": true, "authenticated": true, "has_refresh_token": true }
GET/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 } }
GET/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 } } ] }
POST/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"
}
POST/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>
--...--
GET/api/littleskin/closet

列出当前用户衣柜中所有已上传的材质。需要 Closet.Read 权限。

/api/littleskin/closet
{ "ok": true, "status": 200, "data": [ { "tid": 1, "name": "我的皮肤", "type": "skin", "hash": "0a2b3c...", "model": "slim" } ] }
GET/api/littleskin/announcements

获取 LittleSkin 站点公告列表。无需鉴权,可直接调用。

/api/littleskin/announcements
{ "ok": true, "status": 200, "data": [ { "title": "...", "content": "<p>...</p>", "severity": "info", "timestamp": 1706369054 } ] }
GET/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
GET/api/shizuku?img=xn

猫羽雫随机图背景代理。302 重定向到上游,或 type=proxy 返回图片字节。

/api/shizuku?img=xn