Mojang Friends API

Friends graph (list, add, remove)

OpenAPI Specification

mojang-friends-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Minecraft Services Attributes Friends 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: Friends
  description: Friends graph (list, add, remove)
paths:
  /friends:
    get:
      operationId: getFriends
      summary: Get Friends
      description: Return the authenticated player's friends list plus incoming and outgoing friend requests. Supports If-None-Match for ETag caching.
      tags:
      - Friends
      security:
      - bearerAuth: []
      parameters:
      - name: If-None-Match
        in: header
        required: false
        description: Conditional ETag — return 304 if unchanged.
        example: '"a1b2c3"'
        schema:
          type: string
      responses:
        '200':
          description: Friends list.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FriendsList'
        '304':
          description: Not modified — supplied ETag still current.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    put:
      operationId: updateFriends
      summary: Update Friends
      description: Add or remove a friend by profile name or UUID.
      tags:
      - Friends
      security:
      - bearerAuth: []
      requestBody:
        required: true
        description: Friend update payload.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FriendUpdateRequest'
      responses:
        '200':
          description: Updated friends list.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FriendsList'
        '400':
          description: Constraint violation (self-add, blocked, missing, etc.).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Player has friends disabled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  schemas:
    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
    FriendUpdateRequest:
      type: object
      description: Body for PUT /friends.
      required:
      - updateType
      properties:
        profileName:
          type: string
          description: Friend's username (mutually exclusive with profileId).
          example: Dinnerbone
        profileId:
          type: string
          description: Friend's UUID (mutually exclusive with profileName).
          example: 853c80ef3c3749fdaa49938b674adae6
        updateType:
          type: string
          enum:
          - ADD
          - REMOVE
          example: ADD
    FriendsList:
      type: object
      description: Friends and pending friend requests for the authenticated player.
      properties:
        friends:
          type: array
          description: Confirmed friends.
          items:
            $ref: '#/components/schemas/Friend'
        incomingRequests:
          type: array
          description: Pending inbound friend requests.
          items:
            $ref: '#/components/schemas/Friend'
        outgoingRequests:
          type: array
          description: Pending outbound friend requests.
          items:
            $ref: '#/components/schemas/Friend'
        empty:
          type: boolean
          description: Convenience flag — true if no friends or requests.
          example: false
    Friend:
      type: object
      description: A friend or pending friend.
      required:
      - profile
      properties:
        profile:
          $ref: '#/components/schemas/Profile'
        addedAt:
          type: string
          format: date-time
          description: When the friendship was established.
          example: '2025-04-12T18:30:00Z'
    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.
          example: jeb_
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'Minecraft access token issued by /authentication/login_with_xbox. Used as `Authorization: Bearer {token}`.'