Minecraft skin renders from a URL
Give Proteus a username or UUID and it returns a face, head, bust or full-body PNG. Put the URL in an img tag and leave it there.
A Java username, a UUID, or ~gamertag for Bedrock.
https://skins.sona.gg /face/jeb_ /head/jeb_ /bust/jeb_ /body/jeb_ Every render type
Each one is a GET request. Swap the name for any player and add parameters for size, background, angle and pose.
/face/<id>
The front of the head, flat: 8 by 8 skin pixels scaled up, hat layer on top.
https://skins.sona.gg/face/jeb_ /head/<id>
The head in true isometric 3D.
https://skins.sona.gg/head/jeb_ /bust/<id>
Head and torso in 3D, front three-quarter view.
https://skins.sona.gg/bust/jeb_ /body/<id>
The whole player in 3D, front three-quarter view, standing or in a named pose.
https://skins.sona.gg/body/jeb_ /skin/<id>
The raw 64x64 skin PNG. Legacy 64x32 skins are upgraded to 64x64.
https://skins.sona.gg/skin/jeb_ /cape/<id>
The raw cape PNG, or a 404 when the player has no cape.
https://skins.sona.gg/cape/jeb_ Six poses for the body
default walking crouching crossed relaxing marching Why this exists
Proteus was built for Clover Client's friends lists and profile pages. It is open to everyone, because a skin render should be one URL and not a project.
- URLs that stay put
- Same input, same bytes. Every image carries an ETag and an hour of cache lifetime, so browsers and CDNs do most of the serving.
- Up when Mojang is not
- Profiles and textures are kept for days. A player Proteus has seen before keeps rendering through a Mojang outage.
- Pixels stay pixels
- Skin pixels are never blurred. Only the outline of the model is anti-aliased, at any size from 8 to 1024 pixels.
- Java and Bedrock
- Usernames, UUIDs and Bedrock gamertags share one URL shape. No key is needed for up to 300 requests a minute.