> ## Documentation Index
> Fetch the complete documentation index at: https://docs.punchplay.tv/llms.txt
> Use this file to discover all available pages before exploring further.

# Get a public user profile payload



## OpenAPI

````yaml /openapi.yaml get /api/public/v1/users/{username}
openapi: 3.1.0
info:
  title: PunchPlay API
  version: 1.0.0-beta.3
  description: >-
    Complete beta contract for native and third-party clients, plus the stable
    read-only public profile API. OAuth access tokens use explicit per-operation
    scopes.
  summary: Platform and public API surface for PunchPlay developers.
servers:
  - url: https://punchplay.tv
    description: Production
  - url: http://localhost:3000
    description: Local development
security: []
tags:
  - name: Authentication
  - name: Profile
  - name: Titles
  - name: History
  - name: Ratings
  - name: Lists
  - name: Collection
  - name: Playback
  - name: Calendar
  - name: Community
  - name: Notifications
  - name: Trophies
  - name: Public Catalog
  - name: Public Users
paths:
  /api/public/v1/users/{username}:
    get:
      tags:
        - Public Users
      summary: Get a public user profile payload
      operationId: getPublicUser
      parameters:
        - name: username
          in: path
          required: true
          schema:
            type: string
        - name: historyLimit
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 20
            default: 8
      responses:
        '200':
          description: Public user data.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicUserResponse'
        '400':
          description: Invalid username or query parameter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicError'
        '404':
          description: User not found or not public.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicError'
        '429':
          description: Too many requests.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicError'
      security: []
components:
  schemas:
    PublicUserResponse:
      type: object
      required:
        - version
        - profile
        - stats
        - recentWatchHistory
      properties:
        version:
          type: string
          enum:
            - v1
        profile:
          type: object
          required:
            - avatarUrl
            - bio
            - displayName
            - donationCount
            - isDonor
            - isOnline
            - isSubscriber
            - memberSince
            - username
            - xp
          properties:
            avatarUrl:
              type: string
              nullable: true
            bio:
              type: string
              nullable: true
            displayName:
              type: string
              nullable: true
            donationCount:
              type: integer
            isDonor:
              type: boolean
            isOnline:
              type: boolean
            isSubscriber:
              type: boolean
            memberSince:
              type: string
              format: date-time
              nullable: true
            username:
              type: string
            xp:
              type: integer
        stats:
          type: object
          required:
            - watched
            - topGenre
            - tv
            - movies
          properties:
            watched:
              type: integer
            topGenre:
              type: string
              nullable: true
            genreCounts:
              type: object
              additionalProperties:
                type: integer
            tv:
              type: object
              required:
                - totalMinutes
                - plays
                - unique
                - episodes
                - shows
              properties:
                totalMinutes:
                  type: integer
                plays:
                  type: integer
                unique:
                  type: integer
                episodes:
                  type: integer
                shows:
                  type: integer
            movies:
              type: object
              required:
                - totalMinutes
                - plays
                - unique
              properties:
                totalMinutes:
                  type: integer
                plays:
                  type: integer
                unique:
                  type: integer
        recentWatchHistory:
          type: array
          items:
            type: object
            additionalProperties: true
    PublicError:
      type: object
      required:
        - message
      properties:
        message:
          type: string

````