OpenAPI Specification
openapi: 3.0.3
info:
title: Minecraft Services Attributes Textures API
description: Microsoft-managed Minecraft Services API (api.minecraftservices.com). Covers authenticated player profile management, name change, skin and cape management, player attributes (chat, friends, profanity filter), privacy blocklist, friends graph, presence reporting, signature keypair issuance, public-key publication for chat signature verification, and player entitlement / ownership checks. Most endpoints require a Minecraft Bearer access token obtained via the Xbox Live -> XSTS -> Minecraft authentication chain.
version: 1.0.0
contact:
name: Mojang Studios
url: https://www.minecraft.net
license:
name: Mojang Brand and Asset Usage Guidelines
url: https://www.minecraft.net/en-us/usage-guidelines
x-generated-from: documentation
x-last-validated: '2026-05-30'
servers:
- url: https://api.minecraftservices.com
description: Microsoft / Minecraft Services API (production)
security: []
tags:
- name: Textures
description: Player skin and cape texture lookup
paths:
/session/minecraft/profile/{uuid}:
get:
operationId: getSessionProfile
summary: Get Session Profile (Skin and Cape)
description: Returns the player's session profile including the Base64-encoded textures property holding skin and cape URLs. Pass unsigned=false to receive a signed payload that includes Mojang's RSA signature.
tags:
- Textures
parameters:
- name: uuid
in: path
required: true
description: Player UUID (hyphenated or unhyphenated).
example: 853c80ef3c3749fdaa49938b674adae6
schema:
type: string
pattern: ^[0-9a-fA-F-]{32,36}$
- name: unsigned
in: query
required: false
description: Set to false to include the Mojang signature on each property. When omitted, properties are returned without signature.
example: false
schema:
type: boolean
responses:
'200':
description: Session profile with textures property.
content:
application/json:
schema:
$ref: '#/components/schemas/SessionProfile'
'204':
description: UUID has no matching profile.
'400':
description: UUID parameter is not a valid Minecraft UUID.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Rate limit exceeded (per-IP).
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
components:
schemas:
SessionProfile:
type: object
description: A signed session profile with textures and metadata properties.
required:
- id
- name
- properties
properties:
id:
type: string
description: Player UUID without hyphens.
example: 853c80ef3c3749fdaa49938b674adae6
name:
type: string
description: Player username.
example: jeb_
properties:
type: array
description: Signed property list (currently only `textures`).
items:
$ref: '#/components/schemas/SessionProperty'
profileActions:
type: array
description: Sanctions or actions Mojang has taken on the profile.
items:
type: string
example: FORCED_NAME_CHANGE
SessionProperty:
type: object
description: A single signed session-profile property (e.g. textures).
required:
- name
- value
properties:
name:
type: string
description: Property name (typically `textures`).
example: textures
value:
type: string
description: Base64-encoded JSON payload (skin / cape URLs and metadata).
example: ewogICJ0aW1lc3RhbXAiIDogMTcwMDAwMDAwMDAwMCwKICAicHJvZmlsZUlkIiA6IC4uLgp9
signature:
type: string
description: Mojang RSA signature of `value`. Present only when the request included `unsigned=false`.
example: a1b2c3d4...==
Error:
type: object
description: Standard Mojang error envelope.
properties:
error:
type: string
description: Error class name.
example: ForbiddenOperationException
errorMessage:
type: string
description: Human-readable error description.
example: Invalid token.
cause:
type: string
description: Optional cause classification.
example: UserMigratedException
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: 'Minecraft access token issued by /authentication/login_with_xbox. Used as `Authorization: Bearer {token}`.'