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

# Create Player Statistic Definition

> Adds a new player statistic configuration to the title, optionally allowing the developer to specify a reset interval and an aggregation method.

## Error codes

This operation may return the following PlayFab errors:

| Error | Code |
| --- | --- |
| ProductDisabledForTitle | 1609 |
| StatisticCountLimitExceeded | 1203 |
| StatisticNameConflict | 1196 |




## OpenAPI

````yaml /services/playfab/api-references/rest/admin/admin.openapi.json post /Admin/CreatePlayerStatisticDefinition
openapi: 3.0.0
info:
  version: '260922'
  title: PlayFab Admin API
  description: >-
    APIs for managing title configurations, uploaded Game Server code
    executables, and user data
  termsOfService: https://playfab.com/terms/
  contact:
    url: https://community.playfab.com/index.html
  license:
    name: Apache 2.0
    url: https://github.com/PlayFab/API_Specs/blob/master/LICENSE
servers:
  - url: https://{titleId}.playfabapi.com
    description: PlayFab title endpoint
    variables:
      titleId:
        default: your_title_id
        description: Your PlayFab title ID (hex).
security: []
tags:
  - name: Account Management
    description: Account Management APIs
  - name: Authentication
    description: Authentication APIs
  - name: Characters
    description: Characters APIs
  - name: Content
    description: Content Service APIs
  - name: Custom Server Management
    description: Custom Server Management APIs
  - name: Matchmaking
    description: Matchmaking APIs
  - name: Player Data Management
    description: Player Data Management APIs
  - name: Player Item Management
    description: Player Item Management APIs
  - name: PlayStream
    description: PlayStream Management APIs
  - name: ScheduledTask
    description: Task management APIs
  - name: Segments
    description: Segment management APIs
  - name: Server-Side Cloud Script
    description: Server-Side Cloud Script APIs
  - name: Shared Group Data
    description: Shared Group Data APIs
  - name: Title-Wide Data Management
    description: Title-Wide Data Management APIs
  - name: Xbox Store
    description: Xbox Store APIs
paths:
  /Admin/CreatePlayerStatisticDefinition:
    post:
      tags:
        - Player Data Management
      summary: Create Player Statistic Definition
      description: >
        Adds a new player statistic configuration to the title, optionally
        allowing the developer to specify a reset interval and an aggregation
        method.


        ## Error codes


        This operation may return the following PlayFab errors:


        | Error | Code |

        | --- | --- |

        | ProductDisabledForTitle | 1609 |

        | StatisticCountLimitExceeded | 1203 |

        | StatisticNameConflict | 1196 |
      operationId: CreatePlayerStatisticDefinition
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePlayerStatisticDefinitionRequest'
        description: >-
          Statistics are numeric values, with each statistic in the title also
          generating a leaderboard. The ResetInterval enables automatically
          resetting leaderboards on a specified interval. Upon reset, the
          statistic updates to a new version with no values (effectively
          removing all players from the leaderboard). The previous version's
          statistic values are also archived for retrieval, if needed (see
          GetPlayerStatisticVersions). Statistics not created via a call to
          CreatePlayerStatisticDefinition by default have a
          VersionChangeInterval of Never, meaning they do not reset on a
          schedule, but they can be set to do so via a call to
          UpdatePlayerStatisticDefinition. Once a statistic has been reset
          (sometimes referred to as versioned or incremented), the now-previous
          version can still be written to for up a short, pre-defined period
          (currently 10 seconds), to prevent issues with levels completing
          around the time of the reset. Also, once reset, the historical
          statistics for players in the title may be retrieved using the URL
          specified in the version information (GetPlayerStatisticVersions). The
          AggregationMethod determines what action is taken when a new statistic
          value is submitted - always update with the new value (Last), use the
          highest of the old and new values (Max), use the smallest (Min), or
          add them together (Sum).
      responses:
        '200':
          $ref: '#/components/responses/CreatePlayerStatisticDefinitionResult'
        '400':
          $ref: '#/components/responses/ApiErrorWrapper'
      security:
        - SecretKey: []
components:
  schemas:
    CreatePlayerStatisticDefinitionRequest:
      description: >-
        Statistics are numeric values, with each statistic in the title also
        generating a leaderboard. The ResetInterval enables automatically
        resetting leaderboards on a specified interval. Upon reset, the
        statistic updates to a new version with no values (effectively removing
        all players from the leaderboard). The previous version's statistic
        values are also archived for retrieval, if needed (see
        GetPlayerStatisticVersions). Statistics not created via a call to
        CreatePlayerStatisticDefinition by default have a VersionChangeInterval
        of Never, meaning they do not reset on a schedule, but they can be set
        to do so via a call to UpdatePlayerStatisticDefinition. Once a statistic
        has been reset (sometimes referred to as versioned or incremented), the
        now-previous version can still be written to for up a short, pre-defined
        period (currently 10 seconds), to prevent issues with levels completing
        around the time of the reset. Also, once reset, the historical
        statistics for players in the title may be retrieved using the URL
        specified in the version information (GetPlayerStatisticVersions). The
        AggregationMethod determines what action is taken when a new statistic
        value is submitted - always update with the new value (Last), use the
        highest of the old and new values (Max), use the smallest (Min), or add
        them together (Sum).
      type: object
      properties:
        AggregationMethod:
          allOf:
            - $ref: '#/components/schemas/StatisticAggregationMethod'
          description: >-
            the aggregation method to use in updating the statistic (defaults to
            last)
        CustomTags:
          description: >-
            The optional custom tags associated with the request (e.g. build
            number, external trace identifiers, etc.).
          type: object
        StatisticName:
          description: unique name of the statistic
          type: string
        VersionChangeInterval:
          allOf:
            - $ref: '#/components/schemas/StatisticResetIntervalOption'
          description: >-
            interval at which the values of the statistic for all players are
            reset (resets begin at the next interval boundary)
      required:
        - StatisticName
      example:
        StatisticName: headshots
        VersionChangeInterval: Never
    StatisticAggregationMethod:
      type: string
      enum:
        - Last
        - Min
        - Max
        - Sum
    StatisticResetIntervalOption:
      type: string
      enum:
        - Never
        - Hour
        - Day
        - Week
        - Month
    CreatePlayerStatisticDefinitionResult:
      type: object
      properties:
        Statistic:
          allOf:
            - $ref: '#/components/schemas/PlayerStatisticDefinition'
          description: created statistic definition
      example:
        Statistic:
          StatisticName: headshots
          CurrentVersion: 2
          VersionChangeInterval: Day
    ApiErrorWrapper:
      description: The basic wrapper around every failed API response
      type: object
      properties:
        code:
          description: Numerical HTTP code
          type: integer
        status:
          description: String HTTP code
          type: string
        error:
          description: Playfab error code
          type: string
        errorCode:
          description: Numerical PlayFab error code
          type: integer
        errorMessage:
          description: Description for the PlayFab errorCode
          type: string
        errorDetails:
          description: Detailed description of individual issues with the request object
          type: object
      required:
        - code
        - errorCode
    PlayerStatisticDefinition:
      type: object
      properties:
        AggregationMethod:
          allOf:
            - $ref: '#/components/schemas/StatisticAggregationMethod'
          description: >-
            the aggregation method to use in updating the statistic (defaults to
            last)
        CurrentVersion:
          description: >-
            current active version of the statistic, incremented each time the
            statistic resets
          type: number
          x-actualtype: uint32
        StatisticName:
          description: unique name of the statistic
          type: string
        VersionChangeInterval:
          allOf:
            - $ref: '#/components/schemas/StatisticResetIntervalOption'
          description: >-
            interval at which the values of the statistic for all players are
            reset automatically
      required:
        - CurrentVersion
      example:
        StatisticName: headshots
        CurrentVersion: 2
        VersionChangeInterval: Day
  responses:
    CreatePlayerStatisticDefinitionResult:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              code:
                type: integer
                description: >-
                  The Http status code. If X-ReportErrorAsSuccess header is set
                  to true, this will report the actual http error code.
              status:
                type: string
                description: The Http status code as a string.
              data:
                $ref: '#/components/schemas/CreatePlayerStatisticDefinitionResult'
            example:
              code: 200
              status: OK
              data:
                Statistic:
                  StatisticName: headshots
                  CurrentVersion: 2
                  VersionChangeInterval: Day
    ApiErrorWrapper:
      description: This is the outer wrapper for all responses with errors
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiErrorWrapper'
  securitySchemes:
    SecretKey:
      type: apiKey
      in: header
      name: X-SecretKey
      description: >-
        This API requires a title secret key, available to title admins, from
        PlayFab Game Manager.

````

## Related topics

- [Create Player Statistic Definition](/services/playfab/api-references/rest/admin/player-data-management/create-player-statistic-definition.md)
- [Get Player Statistic Definitions](/services/playfab/api-references/rest/admin/player-data-management/get-player-statistic-definitions.md)
- [Using player statistics](/services/playfab/community/leaderboards/tournaments-leaderboards/using-player-statistics.md)
- [Update Player Statistic Definition](/api-reference/player-data-management/update-player-statistic-definition.md)
- [Using resettable statistics and leaderboards](/services/playfab/community/leaderboards/tournaments-leaderboards/using-resettable-statistics-and-leaderboards.md)
