Change your account's skin

This endpoint allows an authenticated user to set their skin.

Request

  • Method: POST
  • Endpoint: /minecraft/profile/skins
  • Full URL: https://api.minecraftservices.com/minecraft/profile/skins
  • Headers:
    • Authorization: Bearer [JWT/auth token here]
    • Content-Type: multipart/form-data (set skin via file) OR Content-Type: application/json (set skin via URL)

The POST body must be similar to this:

variant: [slim / classic (alex / steve)]
file: [binary file]

Or, if applying via URL, similar to this:

{
  "url" : "https://texture.namemc.com/15/07/1507b8e973f684f7.png", // skin URL
  "variant" : "slim" // model of skin. slim - alex, classic - steve
}

Response

200: OK

Set skin successfully. Profile information is sent as a response. Sample response:

{
  "id" : "cdb5aee80f904fdda63ba16d38cd6b3b", // UUID of account
  "name" : "lukethehacker23", // username
  "skins" : [ {
    "id" : "7800ee13-f75d-40e5-a5b2-9197c3e0125a", // skin ID - always will be the same for this skin
    "state" : "ACTIVE", // if skin is enabled or not
    "url" : "http://textures.minecraft.net/texture/3b60a1f6d562f52aaebbf1434f1de147933a3affe0e764fa49ea057536623cd3", // skin texture URL
    "variant" : "SLIM", // model of skin (steve/alex aka CLASSIC/SLIM)
    "alias" : "ALEX" // assuming this is only for STEVE/ALEX skin. doesn't show up for some reason for some accounts.
  } ],
  "capes" : [ {
    "id" : "2d4de64a-da1b-4196-8e37-20740f6941ad", // cape ID - always will be the same for this cape
    "state" : "ACTIVE", // if cape is enabled or not (inactive = disabled)
    "url" : "http://textures.minecraft.net/texture/a2e8d97ec79100e90a75d369d1b3ba81273c4f82bc1b737e934eed4a854be1b6", // cape texture URL
    "alias" : "Minecon2012" // cape name
  } ]
}

401: Unauthorized

You provided an invalid Bearer token or neglected to fill in the Authorization header entirely.

{
  "path" : "/minecraft/profile/skins",
  "errorType" : "UnauthorizedOperationException",
  "error" : "UnauthorizedOperationException",
  "errorMessage" : "Unauthorized",
  "developerMessage" : "Unauthorized"
}