OpenAPI Specification
openapi: 3.0.3
info:
title: Minecraft Services Attributes Keys 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: Keys
description: Signature keypairs and Mojang public keys
paths:
/player/certificates:
post:
operationId: getPlayerCertificates
summary: Get Player Certificates
description: Issue an RSA keypair plus Mojang signatures for use in signing the player's outbound chat. Keys rotate roughly every 48 hours.
tags:
- Keys
security:
- bearerAuth: []
responses:
'200':
description: Player keypair and signature material.
content:
application/json:
schema:
$ref: '#/components/schemas/PlayerCertificates'
'401':
description: Missing or invalid access token.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/publickeys:
get:
operationId: getPublicKeys
summary: Get Mojang Public Keys
description: Return the current Mojang public keys used to verify profile property signatures, player chat-signing certificates, and authentication artefacts.
tags:
- Keys
responses:
'200':
description: Public-key bundle.
content:
application/json:
schema:
$ref: '#/components/schemas/PublicKeys'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
components:
schemas:
PlayerCertificates:
type: object
description: Player keypair payload returned by /player/certificates.
properties:
keyPair:
type: object
description: PEM-encoded RSA keypair.
properties:
privateKey:
type: string
example: '-----BEGIN RSA PRIVATE KEY-----...'
publicKey:
type: string
example: '-----BEGIN RSA PUBLIC KEY-----...'
publicKeySignature:
type: string
description: Mojang signature over the public key (legacy).
example: a1b2c3...
publicKeySignatureV2:
type: string
description: Mojang signature including player UUID (v2).
example: a1b2c3...
expiresAt:
type: string
format: date-time
description: Keypair expiry time.
example: '2026-06-01T00:00:00Z'
refreshedAfter:
type: string
format: date-time
description: Earliest time the client should re-request the keypair.
example: '2026-05-31T12:00:00Z'
PublicKeyEntry:
type: object
description: A single Base64-encoded DER public key entry.
required:
- publicKey
properties:
publicKey:
type: string
description: Base64-encoded DER public key.
example: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC...
PublicKeys:
type: object
description: Mojang public keys for verifying signatures.
properties:
profilePropertyKeys:
type: array
description: Keys used to verify session-profile property signatures.
items:
$ref: '#/components/schemas/PublicKeyEntry'
playerCertificateKeys:
type: array
description: Keys used to verify player chat-signature certificates.
items:
$ref: '#/components/schemas/PublicKeyEntry'
authenticationKeys:
type: array
description: Keys used to verify Mojang authentication tokens.
items:
$ref: '#/components/schemas/PublicKeyEntry'
Error:
type: object
description: Standard Minecraft Services error envelope.
properties:
path:
type: string
description: Request path that produced the error.
example: /minecraft/profile/lookup/name/zzzzzzzzzzzzzz
errorType:
type: string
description: Mojang error class.
example: NOT_FOUND
error:
type: string
description: Short error name.
example: NOT_FOUND
errorMessage:
type: string
description: Human-readable description.
example: Couldn't find any profile with name zzzzzzzzzzzzzz
developerMessage:
type: string
description: Optional developer-facing message.
example: Couldn't find any profile with name zzzzzzzzzzzzzz
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: 'Minecraft access token issued by /authentication/login_with_xbox. Used as `Authorization: Bearer {token}`.'