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

# How one of your projects is doing

> Its plays, views, likes and remixes day by day for the range (`all`: since it came out), its releases, its first days against your other projects of its kind, and its records. For its team only.



## OpenAPI

````yaml /api-reference/openapi.json get /projects/{owner}/{slug}/analytics
openapi: 3.1.0
info:
  title: Patch API
  version: 1.0.0
  description: >-
    The public API behind patch.gg, the desktop app and pch. Changes within v1
    are additive only. Errors are { error: { code, message, details } }; branch
    on code.
servers:
  - url: https://patch.gg/api/v1
security: []
paths:
  /projects/{owner}/{slug}/analytics:
    get:
      tags:
        - Analytics
      summary: How one of your projects is doing
      description: >-
        Its plays, views, likes and remixes day by day for the range (`all`:
        since it came out), its releases, its first days against your other
        projects of its kind, and its records. For its team only.
      parameters:
        - schema:
            type: string
          required: true
          name: owner
          in: path
        - schema:
            type: string
          required: true
          name: slug
          in: path
        - schema:
            type: string
            enum:
              - '7'
              - '28'
              - '90'
              - all
            default: '7'
            description: >-
              The last 7, 28 or 90 days, today included, or `all`: since your
              first release (for one project, since it came out).
          required: false
          description: >-
            The last 7, 28 or 90 days, today included, or `all`: since your
            first release (for one project, since it came out).
          name: range
          in: query
        - schema:
            type: string
            maxLength: 64
            description: >-
              Your time zone, IANA's name for it (e.g. `Europe/Berlin`): days
              start at its midnight. UTC when left out, unknown, an offset or an
              abbreviation.
            example: Europe/Berlin
          required: false
          description: >-
            Your time zone, IANA's name for it (e.g. `Europe/Berlin`): days
            start at its midnight. UTC when left out, unknown, an offset or an
            abbreviation.
          name: tz
          in: query
      responses:
        '200':
          description: The project's analytics
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectAnalytics'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Not signed in
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not allowed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - bearer: []
components:
  schemas:
    ProjectAnalytics:
      type: object
      properties:
        range:
          type: string
          enum:
            - '7'
            - '28'
            - '90'
            - all
        tz:
          type: string
        today:
          type: string
          example: '2026-11-12'
          description: A day, YYYY-MM-DD
        days:
          type: array
          items:
            type: string
            example: '2026-11-12'
            description: A day, YYYY-MM-DD
        project:
          type: object
          properties:
            handle:
              type: string
              example: mira/lantern-run
            owner:
              type: string
            slug:
              type: string
            name:
              type: string
            kind:
              type: string
              enum:
                - game
                - block
              description: A game's public number is its plays; a block's, its views.
            category:
              type:
                - string
                - 'null'
            cover_url:
              type:
                - string
                - 'null'
            cover_levels:
              $ref: '#/components/schemas/MediaLevels'
            out_since:
              type: string
              example: '2026-11-12'
              description: The day its first release came out
            stats:
              type: object
              properties:
                plays:
                  type: integer
                views:
                  type: integer
                likes:
                  type: integer
                remixes:
                  type: integer
              required:
                - plays
                - views
                - likes
                - remixes
              description: Its public stats, all time
          required:
            - handle
            - owner
            - slug
            - name
            - kind
            - category
            - cover_url
            - cover_levels
            - out_since
            - stats
        plays:
          $ref: '#/components/schemas/AnalyticsSeries'
        views:
          $ref: '#/components/schemas/AnalyticsSeries'
        likes:
          allOf:
            - $ref: '#/components/schemas/AnalyticsSeries'
            - description: Likes a day, by when each was given
        remixes:
          allOf:
            - $ref: '#/components/schemas/AnalyticsSeries'
            - description: Remixes a day, by when each copy was made
        releases:
          type: array
          items:
            type: object
            properties:
              version:
                type: string
              day:
                type: string
                example: '2026-11-12'
                description: A day, YYYY-MM-DD
            required:
              - version
              - day
        first_days:
          type: object
          properties:
            days:
              type: integer
            mine:
              type: array
              items:
                type:
                  - integer
                  - 'null'
              description: >-
                Its public number so far after each of its first days; null for
                days still to come
            low:
              type: array
              items:
                type:
                  - integer
                  - 'null'
              description: >-
                Your other projects of its kind, the lower edge of their middle
                half
            high:
              type: array
              items:
                type:
                  - integer
                  - 'null'
            rank:
              type: integer
            of:
              type: integer
          required:
            - days
            - mine
            - low
            - high
            - rank
            - of
        records:
          type: object
          properties:
            best_day:
              type:
                - object
                - 'null'
              properties:
                day:
                  type: string
                  example: '2026-11-12'
                  description: A day, YYYY-MM-DD
                'n':
                  type: integer
              required:
                - day
                - 'n'
            milestone:
              type:
                - object
                - 'null'
              properties:
                'n':
                  type: integer
                day:
                  type: string
                  example: '2026-11-12'
                  description: A day, YYYY-MM-DD
              required:
                - 'n'
                - day
              description: 'The last step its public number passed: 10, 25, 50, 100, 250…'
            next:
              type: integer
          required:
            - best_day
            - milestone
            - next
      required:
        - range
        - tz
        - today
        - days
        - project
        - plays
        - views
        - likes
        - remixes
        - releases
        - first_days
        - records
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              example: version_exists
            message:
              type: string
            details: {}
          required:
            - code
            - message
      required:
        - error
    MediaLevels:
      type: array
      items:
        type: object
        properties:
          width:
            type: integer
          url:
            type: string
        required:
          - width
          - url
      description: >-
        Smaller copies of a picture (WebP) or a clip (MP4, H.264, without
        sound), smallest first, each at its own address that never changes. Show
        the smallest that's sharp where it goes. Empty for animated pictures,
        for flat art and short clips with no smaller copy, and for media from
        before Patch made copies until theirs are made: then use the file
        itself.
    AnalyticsSeries:
      type: object
      properties:
        days:
          type: array
          items:
            type: integer
          description: One number a day, as `days` lists them
        before:
          type:
            - array
            - 'null'
          items:
            type: integer
          description: The period before, day by day; null for `all`
        usual:
          type:
            - number
            - 'null'
          description: >-
            The mean of up to six periods before this one, counting only whole
            periods: ones that start on or after your first release (for one
            project, the day it came out). Null when the period just before
            isn't whole: then don't compare.
      required:
        - days
        - before
        - usual
      description: Your games' plays a day
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
      description: An API key (pch_...) or the token from pch login.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.