MineSkin API icon

MineSkin API

Client implementations:

COMMUNITYBEARER0 INSTALLS
API Docs
OpenAPI Specificationv3.0
{
  "openapi": "3.0.3",
  "servers": [
    {
      "url": "https://api.mineskin.org"
    }
  ],
  "info": {
    "contact": {
      "email": "info@mineskin.org",
      "name": "inventivetalent",
      "url": "https://discord.gg/nzAdvPc"
    },
    "description": "Client implementations: \nJava: https://github.com/InventivetalentDev/MineskinClient\nNodeJS: https://github.com/InventivetalentDev/mineskin-client\n\nExamples: https://github.com/MineSkin/examples\n",
    "license": {
      "name": "MIT",
      "url": "https://github.com/MineSkin/api.mineskin.org/blob/master/LICENSE"
    },
    "title": "MineSkin API",
    "version": "1.0.0",
    "x-logo": {
      "url": "https://api.apis.guru/v2/cache/logo/https_mineskin.org_img_mineskin-x256.png"
    },
    "x-origin": [
      {
        "format": "openapi",
        "url": "https://api.mineskin.org/openapi.yml",
        "version": "3.0"
      }
    ],
    "x-providerName": "mineskin.org"
  },
  "tags": [
    {
      "name": "generate"
    },
    {
      "name": "get"
    },
    {
      "name": "util"
    }
  ],
  "paths": {
    "/generate/upload": {
      "post": {
        "parameters": [
          {
            "$ref": "#/components/parameters/userAgent"
          }
        ],
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/GenerateOptions"
                  },
                  {
                    "properties": {
                      "file": {
                        "format": "binary",
                        "type": "string"
                      }
                    }
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/GeneratedSkin"
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitResponse"
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse"
          }
        },
        "security": [
          {
            "apiKey": [],
            "bearerAuth": []
          }
        ],
        "tags": [
          "generate"
        ]
      }
    },
    "/generate/url": {
      "post": {
        "parameters": [
          {
            "$ref": "#/components/parameters/userAgent"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/GenerateOptions"
                  },
                  {
                    "properties": {
                      "url": {
                        "type": "string"
                      }
                    }
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/GeneratedSkin"
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitResponse"
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse"
          }
        },
        "security": [
          {
            "apiKey": [],
            "bearerAuth": []
          }
        ],
        "tags": [
          "generate"
        ]
      }
    },
    "/generate/user": {
      "post": {
        "parameters": [
          {
            "$ref": "#/components/parameters/userAgent"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/GenerateOptions"
                  },
                  {
                    "properties": {
                      "uuid": {
                        "maxLength": 36,
                        "minLength": 32,
                        "type": "string"
                      }
                    }
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/GeneratedSkin"
          },
          "400": {
            "$ref": "#/components/responses/ErrorResponse"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitResponse"
          },
          "500": {
            "$ref": "#/components/responses/ErrorResponse"
          }
        },
        "security": [
          {
            "apiKey": [],
            "bearerAuth": []
          }
        ],
        "tags": [
          "generate"
        ]
      }
    },
    "/get/delay": {
      "get": {
        "parameters": [
          {
            "$ref": "#/components/parameters/userAgent"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/DelayInfo"
          }
        },
        "security": [
          {
            "apiKey": [],
            "bearerAuth": []
          }
        ],
        "tags": [
          "get"
        ]
      }
    },
    "/get/id/{id}": {
      "get": {
        "description": "Deprecated. Use /get/uuid instead.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "integer",
              "type": "number"
            }
          },
          {
            "$ref": "#/components/parameters/userAgent"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkinInfo"
                }
              }
            },
            "description": "Skin Info"
          }
        },
        "tags": [
          "get"
        ]
      }
    },
    "/get/list/{page}": {
      "get": {
        "parameters": [
          {
            "description": "For reference pagination, the uuid of the last skin in the previous page. For numeric pagination (deprecated), the page number or 'start'.",
            "in": "path",
            "name": "page",
            "required": true,
            "schema": {
              "format": "integer",
              "type": "number"
            }
          },
          {
            "$ref": "#/components/parameters/userAgent"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "filter": {
                      "type": "string"
                    },
                    "page": {
                      "properties": {
                        "amount": {
                          "type": "integer"
                        },
                        "index": {
                          "type": "integer"
                        },
                        "total": {
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "skins": {
                      "items": {
                        "$ref": "#/components/schemas/PartialSkinInfo"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "skins",
                    "page"
                  ]
                }
              }
            },
            "description": "Skin Info List"
          }
        },
        "tags": [
          "get"
        ]
      }
    },
    "/get/uuid/{uuid}": {
      "get": {
        "parameters": [
          {
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/userAgent"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkinInfo"
                }
              }
            },
            "description": "Skin Info"
          }
        },
        "tags": [
          "get"
        ]
      }
    },
    "/validate/name/{name}": {
      "get": {
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/userAgent"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserValidation"
                }
              }
            },
            "description": "Validation info about the requested user"
          }
        },
        "tags": [
          "util"
        ]
      }
    },
    "/validate/uuid/{uuid}": {
      "get": {
        "parameters": [
          {
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/userAgent"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserValidation"
                }
              }
            },
            "description": "Validation info about the requested user"
          }
        },
        "tags": [
          "util"
        ]
      }
    }
  },
  "components": {
    "parameters": {
      "userAgent": {
        "description": "Custom User-Agent for your application, see [user-agent.dev](https://user-agent.dev/) for implementation examples",
        "example": "ExampleApp/v1.0",
        "in": "header",
        "name": "User-Agent",
        "required": true,
        "schema": {
          "type": "string"
        }
      }
    },
    "responses": {
      "DelayInfo": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "delay": {
                  "type": "integer"
                },
                "next": {
                  "type": "integer"
                },
                "nextRelative": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "description": "Delay info for the requesting client"
      },
      "ErrorResponse": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "error": {
                  "description": "Error message",
                  "type": "string"
                },
                "errorCode": {
                  "description": "Consistent error code, see [AuthError](https://github.com/MineSkin/api.mineskin.org/blob/793a926cbe4b90887ed8164c9eccfcb542fdeadb/src/generator/Authentication.ts#L580) & [GenError](https://github.com/MineSkin/api.mineskin.org/blob/47a5f51dc664e0f730b0073f70b2fc295e14ca3b/src/generator/Generator.ts#L1093)",
                  "type": "string"
                }
              },
              "required": [
                "error"
              ]
            }
          }
        },
        "description": "Response if an error occured"
      },
      "GeneratedSkin": {
        "content": {
          "application/json": {
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/SkinInfo"
                },
                {
                  "properties": {
                    "duplicate": {
                      "type": "boolean"
                    },
                    "nextRequest": {
                      "type": "integer"
                    }
                  }
                }
              ]
            }
          }
        },
        "description": "Successfully generated skin info"
      },
      "RateLimitResponse": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "delay": {
                  "description": "The API's current delay in seconds",
                  "type": "integer"
                },
                "error": {
                  "description": "Error message",
                  "type": "string"
                },
                "nextRequest": {
                  "description": "Unix timestamp when the next request is allowed",
                  "type": "integer"
                }
              },
              "required": [
                "error"
              ]
            }
          }
        },
        "description": "Response if the client sent a request too soon"
      }
    },
    "schemas": {
      "GenerateOptions": {
        "properties": {
          "model": {
            "default": "steve",
            "deprecated": true,
            "enum": [
              "steve",
              "slim"
            ],
            "type": "string"
          },
          "name": {
            "maxLength": 20,
            "type": "string"
          },
          "variant": {
            "description": "Skin variant - automatically determined based on the image if not specified",
            "enum": [
              "classic",
              "slim"
            ],
            "type": "string"
          },
          "visibility": {
            "default": 0,
            "description": "Visibility of the generated skin. 0 for public, 1 for private",
            "enum": [
              0,
              1
            ],
            "type": "integer"
          }
        },
        "type": "object"
      },
      "PartialSkinInfo": {
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "time": {
            "type": "integer"
          },
          "url": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "url",
          "time"
        ],
        "type": "object"
      },
      "SkinData": {
        "properties": {
          "texture": {
            "$ref": "#/components/schemas/TextureInfo"
          },
          "uuid": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "SkinInfo": {
        "properties": {
          "account": {
            "type": "integer"
          },
          "accountId": {
            "deprecated": true,
            "type": "integer"
          },
          "data": {
            "$ref": "#/components/schemas/SkinData"
          },
          "duration": {
            "type": "number"
          },
          "id": {
            "type": "integer"
          },
          "idStr": {
            "type": "string"
          },
          "model": {
            "deprecated": true,
            "enum": [
              "slim",
              "steve",
              "unknown"
            ],
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "private": {
            "type": "boolean"
          },
          "server": {
            "type": "string"
          },
          "timestamp": {
            "type": "number"
          },
          "uuid": {
            "type": "string"
          },
          "variant": {
            "enum": [
              "classic",
              "slim"
            ],
            "type": "string"
          },
          "views": {
            "type": "number"
          }
        },
        "required": [
          "id",
          "model",
          "data"
        ],
        "type": "object"
      },
      "Stats": {
        "properties": {
          "delay": {
            "type": "number"
          },
          "server": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "TextureInfo": {
        "properties": {
          "signature": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "UserValidation": {
        "properties": {
          "name": {
            "type": "string"
          },
          "uuid": {
            "type": "string"
          },
          "valid": {
            "type": "boolean"
          }
        },
        "required": [
          "valid"
        ],
        "type": "object"
      }
    },
    "securitySchemes": {
      "apiKey": {
        "description": "Get your key from https://mineskin.org/apikey",
        "in": "query",
        "name": "key",
        "type": "apiKey"
      },
      "bearerAuth": {
        "description": "Get your key from https://mineskin.org/apikey",
        "scheme": "bearer",
        "type": "http"
      }
    }
  }
}