Mojang Public API

Legacy public Mojang API (api.mojang.com) covering username-to-UUID lookup, batch UUID resolution, and historical profile endpoints. Most operations are being migrated to api.minecraftservices.com but remain live for backward compatibility.

OpenAPI Specification

mojang-public-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Mojang Public API
  description: >-
    Legacy public Mojang API (api.mojang.com). Covers username-to-UUID lookup,
    batch UUID resolution, and historical profile endpoints. Most authenticated
    operations have been migrated to api.minecraftservices.com; the public
    lookups remain in service for backwards compatibility.
  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.mojang.com
    description: Mojang public API (production)
tags:
  - name: Identity
    description: Player identity (UUID, username, profile)
  - name: Profile
    description: Player profile records and history
paths:
  /users/profiles/minecraft/{username}:
    get:
      operationId: getProfileByUsername
      summary: Get Profile by Username
      description: >-
        Look up a Minecraft player's UUID and profile metadata by their
        case-insensitive username. Returns 204 / 404 when the username is not
        currently in use by any account.
      tags:
        - Identity
      parameters:
        - name: username
          in: path
          required: true
          description: Case-insensitive Minecraft username.
          example: jeb_
          schema:
            type: string
      responses:
        '200':
          description: Profile found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Profile'
        '204':
          description: No profile matched the requested username.
        '400':
          description: Invalid username supplied.
          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
  /profiles/minecraft:
    post:
      operationId: getProfilesByUsernamesBulk
      summary: Get Profiles by Usernames (Bulk)
      description: >-
        Resolve a list of up to ten Minecraft usernames to their profiles in a
        single request. Names with no matching account are omitted from the
        response array.
      tags:
        - Identity
      requestBody:
        required: true
        description: JSON array of up to ten usernames.
        content:
          application/json:
            schema:
              type: array
              minItems: 1
              maxItems: 10
              items:
                type: string
              example:
                - jeb_
                - Dinnerbone
                - Notch
      responses:
        '200':
          description: Resolved profiles for the supplied usernames.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Profile'
        '400':
          description: Empty array or more than ten usernames supplied.
          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
  /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'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /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'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  schemas:
    Profile:
      type: object
      description: A Minecraft player profile (id / name pair).
      required:
        - id
        - name
      properties:
        id:
          type: string
          description: Player UUID without hyphens.
          example: 853c80ef3c3749fdaa49938b674adae6
        name:
          type: string
          description: Current player username (case-preserving).
          example: jeb_
        legacy:
          type: boolean
          description: True if the account has not yet been migrated to Mojang.
          example: false
        demo:
          type: boolean
          description: True if the account is a free demo account.
          example: false
    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
    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
    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
    Error:
      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.
  securitySchemes: {}
security: []