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

# Finalize File Uploads

> Finalize file uploads to an entity's profile.

## Error codes

This operation may return the following PlayFab errors:

| Error | Code |
| --- | --- |
| FileNotFound | 1045 |
| NoEntityFileOperationPending | 1351 |




## OpenAPI

````yaml /services/playfab/api-references/rest/data/data.openapi.json post /File/FinalizeFileUploads
openapi: 3.0.0
info:
  version: '260922'
  title: PlayFab Data API
  description: >-
    Store arbitrary data associated with an entity. Objects are small (~1KB)
    JSON-compatible objects which are stored directly on the entity profile.
    Objects are made available for use in other PlayFab contexts, such as
    PlayStream events and CloudScript functions. Files can efficiently store
    data of any size or format. Both objects and files support a flexible
    permissions system to control read and write access by other entities.
  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: File
    description: File Management APIs
  - name: Object
    description: Entity Object Management APIs
paths:
  /File/FinalizeFileUploads:
    post:
      tags:
        - File
      summary: Finalize File Uploads
      description: |
        Finalize file uploads to an entity's profile.

        ## Error codes

        This operation may return the following PlayFab errors:

        | Error | Code |
        | --- | --- |
        | FileNotFound | 1045 |
        | NoEntityFileOperationPending | 1351 |
      operationId: FinalizeFileUploads
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FinalizeFileUploadsRequest'
        description: >-
          Finalizes the upload of the requested files. Verifies that the files
          have been successfully uploaded and moves the file pointers from
          pending to live.
      responses:
        '200':
          $ref: '#/components/responses/FinalizeFileUploadsResponse'
        '400':
          $ref: '#/components/responses/ApiErrorWrapper'
      security:
        - EntityToken: []
components:
  schemas:
    FinalizeFileUploadsRequest:
      description: >-
        Finalizes the upload of the requested files. Verifies that the files
        have been successfully uploaded and moves the file pointers from pending
        to live.
      type: object
      properties:
        CustomTags:
          description: >-
            The optional custom tags associated with the request (e.g. build
            number, external trace identifiers, etc.).
          type: object
        Entity:
          allOf:
            - $ref: '#/components/schemas/EntityKey'
          description: The entity to perform this action on.
        FileNames:
          description: >-
            Names of the files to be finalized. Restricted to a-Z, 0-9, '(',
            ')', '_', '-' and '.'
          type: array
          items:
            type: string
        ProfileVersion:
          description: >-
            Field used for concurrency control. By specifying the previously
            returned ProfileVersion value from the InitiateFileUploads API, you
            can ensure that the file upload finalization is performed only if
            the profile has not been updated since you last loaded that version.
            If the profile for the same entity has been updated, the operation
            will fail with an EntityProfileVersionMismatch error. The
            conflicting update can be caused by any operation that modifies the
            entity profile, including SetObjects, FinalizeFileUploads, and
            UpdateStatistics.
          type: number
          x-actualtype: int32
      required:
        - ProfileVersion
        - FileNames
        - Entity
      example:
        FileNames:
          - avatar
          - game_state
        Entity:
          Id: ID
          Type: title_player_account
          TypeString: title_player_account
    EntityKey:
      description: >-
        Combined entity type and ID structure which uniquely identifies a single
        entity.
      type: object
      properties:
        Id:
          description: Unique ID of the entity.
          type: string
        Type:
          description: >-
            Entity type. See
            https://learn.microsoft.com/gaming/playfab/features/data/entities/available-built-in-entity-types
          type: string
      required:
        - Id
    FinalizeFileUploadsResponse:
      type: object
      properties:
        Entity:
          allOf:
            - $ref: '#/components/schemas/EntityKey'
          description: The entity id and type.
        Metadata:
          allOf:
            - $ref: '#/components/schemas/GetFileMetadata'
          description: Collection of metadata for the entity's files
        ProfileVersion:
          description: >-
            The current version of the profile, can be used for concurrency
            control during updates.
          type: number
          x-actualtype: int32
      required:
        - ProfileVersion
    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
    GetFileMetadata:
      type: object
      properties:
        Checksum:
          description: >-
            Checksum value for the file, can be used to check if the file on the
            server has changed.
          type: string
        DownloadUrl:
          description: Download URL where the file can be retrieved
          type: string
        FileName:
          description: Name of the file
          type: string
        LastModified:
          description: Last UTC time the file was modified
          type: string
        Size:
          description: Storage service's reported byte count
          type: number
          x-actualtype: int32
      required:
        - Size
        - LastModified
  responses:
    FinalizeFileUploadsResponse:
      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/FinalizeFileUploadsResponse'
    ApiErrorWrapper:
      description: This is the outer wrapper for all responses with errors
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiErrorWrapper'
  securitySchemes:
    EntityToken:
      type: apiKey
      in: header
      name: X-EntityToken
      description: >-
        This API requires an Entity Session Token, available from the Entity
        GetEntityToken method.

````

## Related topics

- [Finalize File Uploads](/services/playfab/api-references/rest/data/file/finalize-file-uploads.md)
- [PFDataFinalizeFileUploadsAsync](/services/playfab/api-references/c/pfdata/functions/pfdatafinalizefileuploadsasync.md)
- [PFDataFinalizeFileUploadsRequest](/services/playfab/api-references/c/pfdatatypes/structs/pfdatafinalizefileuploadsrequest.md)
- [PFDataFinalizeFileUploadsResponse](/services/playfab/api-references/c/pfdatatypes/structs/pfdatafinalizefileuploadsresponse.md)
- [PFDataFinalizeFileUploadsGetResult](/services/playfab/api-references/c/pfdata/functions/pfdatafinalizefileuploadsgetresult.md)
