> ## 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.

# Update Character Data

> Creates and updates the title-specific custom data for the user's character which is readable and writable by the client

## Error codes

This operation may return the following PlayFab errors:

| Error | Code |
| --- | --- |
| CharacterNotFound | 1135 |




## OpenAPI

````yaml post /Client/UpdateCharacterData
openapi: 3.0.0
info:
  version: '260922'
  title: PlayFab Client API
  description: >-
    APIs which provide the full range of PlayFab features available to the
    client - authentication, account and data management, inventory, friends,
    matchmaking, reporting, and platform-specific functionality
  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: Advertising
    description: Advertising APIs
  - name: Analytics
    description: Analytics APIs
  - name: Authentication
    description: Authentication APIs
  - name: Character Data
    description: Character Data APIs
  - name: Characters
    description: Characters APIs
  - name: Content
    description: Content Service APIs
  - name: Friend List Management
    description: Friend List Management APIs
  - name: Matchmaking
    description: Matchmaking APIs
  - name: Platform Specific Methods
    description: Platform Specific Methods 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: 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: Trading
    description: Trading Management APIs
paths:
  /Client/UpdateCharacterData:
    post:
      tags:
        - Character Data
      summary: Update Character Data
      description: >
        Creates and updates the title-specific custom data for the user's
        character which is readable and writable by the client


        ## Error codes


        This operation may return the following PlayFab errors:


        | Error | Code |

        | --- | --- |

        | CharacterNotFound | 1135 |
      operationId: UpdateCharacterData
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateCharacterDataRequest'
        description: >-
          This function performs an additive update of the arbitrary strings
          containing the custom data for the character. In updating the custom
          data object, keys which already exist in the object will have their
          values overwritten, while keys with null values will be removed. New
          keys will be added, with the given values. No other key-value pairs
          will be changed apart from those specified in the call.
      responses:
        '200':
          $ref: '#/components/responses/UpdateCharacterDataResult'
        '400':
          $ref: '#/components/responses/ApiErrorWrapper'
      security:
        - SessionTicket: []
components:
  schemas:
    UpdateCharacterDataRequest:
      description: >-
        This function performs an additive update of the arbitrary strings
        containing the custom data for the character. In updating the custom
        data object, keys which already exist in the object will have their
        values overwritten, while keys with null values will be removed. New
        keys will be added, with the given values. No other key-value pairs will
        be changed apart from those specified in the call.
      type: object
      properties:
        CharacterId:
          description: Unique PlayFab assigned ID for a specific character owned by a user
          type: string
        CustomTags:
          description: >-
            The optional custom tags associated with the request (e.g. build
            number, external trace identifiers, etc.).
          type: object
        Data:
          description: >-
            Key-value pairs to be written to the custom data. Note that keys are
            trimmed of whitespace, are limited in size, and may not begin with a
            '!' character or be null.
          type: object
        KeysToRemove:
          description: >-
            Optional list of Data-keys to remove from UserData. Some SDKs cannot
            insert null-values into Data due to language constraints. Use this
            to delete the keys directly.
          type: array
          items:
            type: string
        Permission:
          allOf:
            - $ref: '#/components/schemas/UserDataPermission'
          description: >-
            Permission to be applied to all user data keys written in this
            request. Defaults to "private" if not set.
      required:
        - CharacterId
      example:
        CharacterId: '98765456'
        Data:
          Class: Fighter
          Gender: Female
          Icon: Guard 3
          Theme: Colorful
        Permission: Public
    UserDataPermission:
      description: >-
        Indicates whether a given data key is private (readable only by the
        player) or public (readable by all players). When a player makes a
        GetUserData request about another player, only keys marked Public will
        be returned.
      type: string
      enum:
        - Private
        - Public
    UpdateCharacterDataResult:
      type: object
      properties:
        DataVersion:
          description: >-
            Indicates the current version of the data that has been set. This is
            incremented with every set call for that type of data (read-only,
            internal, etc). This version can be provided in Get calls to find
            updated data.
          type: number
          x-actualtype: uint32
      required:
        - DataVersion
      example:
        DataVersion: 5
    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
  responses:
    UpdateCharacterDataResult:
      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/UpdateCharacterDataResult'
            example:
              code: 200
              status: OK
              data:
                DataVersion: 5
    ApiErrorWrapper:
      description: This is the outer wrapper for all responses with errors
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiErrorWrapper'
  securitySchemes:
    SessionTicket:
      type: apiKey
      in: header
      name: X-Authorization
      description: >-
        This API requires a client session ticket, available from any Client
        Login function.

````

## Related topics

- [Update Character Data](/services/playfab/api-references/rest/server/character-data/update-character-data.md)
- [Profile Writes Meter API Description](/services/playfab/pricing/meters/profile-writes.md)
- [Entities migration information](/services/playfab/live-service-management/game-configuration/entities/migration-information.md)
- [Update Character Internal Data](/services/playfab/api-references/rest/server/character-data/update-character-internal-data.md)
- [Update Character Read Only Data](/services/playfab/api-references/rest/server/character-data/update-character-read-only-data.md)
