Work with this as data
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/mojang-profile-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
OpenAPI Specification
openapi: 3.2.0
info:
title: Mojang Profile API
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'
description: 'Operations tagged Profile across 2 of this provider''s published API definitions: mojang-minecraft-services-openapi.yml, mojang-public-api-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.minecraftservices.com
description: Microsoft / Minecraft Services API (production)
- url: https://api.mojang.com
description: Mojang public API (production)
security: []
tags:
- name: Profile
description: Authenticated profile and name management
paths:
/minecraft/profile:
get:
operationId: getAuthenticatedProfile
summary: Get Authenticated Profile
description: Return the signed-in player's own profile including UUID, name, owned skins, and owned capes.
tags:
- Profile
security:
- bearerAuth: []
responses:
'200':
description: Authenticated profile.
content:
application/json:
schema:
$ref: '#/components/schemas/AuthenticatedProfile'
'401':
description: Missing or invalid access token.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
servers:
- url: https://api.minecraftservices.com
description: Microsoft / Minecraft Services API (production)
/minecraft/profile/namechange:
get:
operationId: getNameChangeInfo
summary: Get Name Change Info
description: Returns the player's name-change cooldown state — last-change date, creation date, and whether a change is currently allowed.
tags:
- Profile
security:
- bearerAuth: []
responses:
'200':
description: Name-change information.
content:
application/json:
schema:
$ref: '#/components/schemas/NameChangeInfo'
'401':
description: Missing or invalid access token.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
servers:
- url: https://api.minecraftservices.com
description: Microsoft / Minecraft Services API (production)
/minecraft/profile/name/{name}/available:
get:
operationId: checkNameAvailability
summary: Check Name Availability
description: Check whether a desired username is available, duplicate, or otherwise not allowed. Rate-limited to roughly 20 requests per five minutes per account.
tags:
- Profile
security:
- bearerAuth: []
parameters:
- name: name
in: path
required: true
description: Candidate username.
example: NewName123
schema:
type: string
responses:
'200':
description: Availability response.
content:
application/json:
schema:
$ref: '#/components/schemas/NameAvailability'
'429':
description: Rate limit exceeded.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
servers:
- url: https://api.minecraftservices.com
description: Microsoft / Minecraft Services API (production)
/minecraft/profile/name/{name}:
put:
operationId: changeName
summary: Change Name
description: Change the authenticated player's username.
tags:
- Profile
security:
- bearerAuth: []
parameters:
- name: name
in: path
required: true
description: New username.
example: NewName123
schema:
type: string
responses:
'200':
description: Updated profile.
content:
application/json:
schema:
$ref: '#/components/schemas/AuthenticatedProfile'
'400':
description: Invalid name supplied.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Name already taken or change not currently allowed.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Rate limit exceeded.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
servers:
- url: https://api.minecraftservices.com
description: Microsoft / Minecraft Services API (production)
/user/profiles/{uuid}/names:
get:
operationId: getNameHistory
summary: Get Name History (Deprecated)
description: Returns the full name-change history for the player identified by UUID. Deprecated and disabled by Mojang on 13 September 2022 — the endpoint now returns 410 Gone for all callers. Documented for historical reference and archival research.
tags:
- Profile
deprecated: true
parameters:
- name: uuid
in: path
required: true
description: Player UUID (with or without hyphens).
example: 853c80ef3c3749fdaa49938b674adae6
schema:
type: string
pattern: ^[0-9a-fA-F-]{32,36}$
responses:
'200':
description: Historical response; no longer issued.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/NameChange'
'410':
description: Endpoint disabled by Mojang.
content:
application/json:
schema:
$ref: '#/components/schemas/Error_2'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
servers:
- url: https://api.mojang.com
description: Mojang public API (production)
/orders/statistics:
post:
operationId: getSaleStatistics
summary: Get Sale Statistics
description: Returns aggregate sale and revenue statistics across one or more Mojang product SKUs (Minecraft, Minecraft Realms, Minecraft Bedrock, Cobalt, etc.). Public, unauthenticated.
tags:
- Profile
requestBody:
required: true
description: SKU filter.
content:
application/json:
schema:
$ref: '#/components/schemas/SaleStatisticsRequest'
responses:
'200':
description: Aggregate sale statistics.
content:
application/json:
schema:
$ref: '#/components/schemas/SaleStatistics'
'400':
description: Invalid metric key supplied.
content:
application/json:
schema:
$ref: '#/components/schemas/Error_2'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
servers:
- url: https://api.mojang.com
description: Mojang public API (production)
components:
schemas:
NameChangeInfo:
type: object
description: Name-change cooldown information.
properties:
changedAt:
type: string
format: date-time
description: ISO 8601 timestamp of the most recent name change.
example: '2025-04-12T18:30:00Z'
createdAt:
type: string
format: date-time
description: ISO 8601 timestamp of the player profile's creation.
example: '2014-11-19T12:42:43Z'
nameChangeAllowed:
type: boolean
description: True if a name change is currently allowed.
example: true
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
Skin:
type: object
description: A skin owned by the authenticated player.
required:
- id
- state
- url
- variant
properties:
id:
type: string
description: Skin UUID.
example: cd9a82a0-0b9c-4f10-8c2a-1b1f87b2af80
state:
type: string
enum:
- ACTIVE
- INACTIVE
example: ACTIVE
url:
type: string
format: uri
description: Texture URL.
example: https://textures.minecraft.net/texture/abc123...
textureKey:
type: string
description: Texture content hash.
example: abc123def456...
variant:
type: string
enum:
- CLASSIC
- SLIM
example: CLASSIC
alias:
type: string
description: Skin alias / nickname.
example: Steve
AuthenticatedProfile:
type: object
description: The authenticated player's own profile with skins and capes.
required:
- id
- name
properties:
id:
type: string
description: Player UUID without hyphens.
example: 853c80ef3c3749fdaa49938b674adae6
name:
type: string
description: Current username.
example: jeb_
skins:
type: array
description: All skins owned by the player; one is marked ACTIVE.
items:
$ref: '#/components/schemas/Skin'
capes:
type: array
description: All capes owned by the player; one may be marked ACTIVE.
items:
$ref: '#/components/schemas/Cape'
profileActions:
type: array
description: Sanctions in effect on the profile (e.g. FORCED_NAME_CHANGE).
items:
type: string
example: []
Cape:
type: object
description: A cape owned by the authenticated player.
required:
- id
- state
- url
properties:
id:
type: string
description: Cape UUID.
example: 1981aad373fa9754
state:
type: string
enum:
- ACTIVE
- INACTIVE
example: ACTIVE
url:
type: string
format: uri
description: Cape texture URL.
example: https://textures.minecraft.net/texture/cape123...
alias:
type: string
description: Cape display name.
example: Migrator
NameAvailability:
type: object
description: Response from the name-availability check.
required:
- status
properties:
status:
type: string
enum:
- AVAILABLE
- DUPLICATE
- NOT_ALLOWED
example: AVAILABLE
NameChange:
type: object
description: A historical name-change entry (deprecated endpoint).
required:
- name
properties:
name:
type: string
description: Player username at the time of the change.
example: jeb_
changedToAt:
type: integer
format: int64
description: Unix epoch milliseconds at which the player changed to this name. Absent for the original account name.
example: 1417597263000
Error_2:
type: object
description: Standard Mojang error envelope.
properties:
error:
type: string
description: Error class name.
example: IllegalArgumentException
errorMessage:
type: string
description: Human-readable error description.
example: Path /users/profiles/minecraft/ is invalid.
SaleStatistics:
type: object
description: Aggregate sale figures.
properties:
total:
type: integer
description: Total units sold across the requested SKUs.
example: 41000000
last24h:
type: integer
description: Units sold in the last 24 hours.
example: 75000
saleVelocityPerSeconds:
type: number
format: float
description: Recent average sales per second.
example: 0.85
SaleStatisticsRequest:
type: object
description: Filter for the /orders/statistics request.
required:
- metricKeys
properties:
metricKeys:
type: array
description: SKUs to aggregate.
items:
type: string
enum:
- item_sold_minecraft
- prepaid_card_redeemed_minecraft
- item_sold_cobalt
- item_sold_scrolls
- item_sold_dungeons
example:
- item_sold_minecraft
- prepaid_card_redeemed_minecraft
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: 'Minecraft access token issued by /authentication/login_with_xbox. Used as `Authorization: Bearer {token}`.'
x-refined-from:
- mojang-minecraft-services-openapi.yml
- mojang-public-api-openapi.yml