Mojang Presence API

Online / playing presence reporting

OpenAPI Specification

mojang-presence-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Minecraft Services Attributes Presence 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: Presence
  description: Online / playing presence reporting
paths:
  /presence:
    post:
      operationId: reportPresence
      summary: Report Presence
      description: Publish the player's online / playing presence. Returns the current presence of every online friend.
      tags:
      - Presence
      security:
      - bearerAuth: []
      requestBody:
        required: true
        description: Presence payload.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PresenceReport'
      responses:
        '200':
          description: Friends' presence snapshot.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PresenceEntry'
        '401':
          description: Missing or invalid access token.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  schemas:
    PresenceReport:
      type: object
      description: Body for POST /presence.
      required:
      - status
      properties:
        status:
          type: string
          enum:
          - OFFLINE
          - ONLINE
          - PLAYING_OFFLINE
          - PLAYING_HOSTED_SERVER
          - PLAYING_REALMS
          - PLAYING_SERVER
          example: PLAYING_SERVER
        joinInfo:
          type: object
          additionalProperties: true
          description: Optional server / realm join metadata.
    PresenceEntry:
      type: object
      description: A friend's current presence.
      properties:
        profileId:
          type: string
          description: Friend UUID.
          example: 853c80ef3c3749fdaa49938b674adae6
        status:
          type: string
          enum:
          - OFFLINE
          - ONLINE
          - PLAYING_OFFLINE
          - PLAYING_HOSTED_SERVER
          - PLAYING_REALMS
          - PLAYING_SERVER
          example: PLAYING_SERVER
        lastUpdated:
          type: string
          format: date-time
          example: '2026-05-30T12:00:00Z'
    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}`.'