---
updatedAt: 2026-07-30T11:04:13.000Z
agentTools:
  projectIndex: https://developer.orangelogic.com/llms.txt
---

# Step 5: Complete the upload session

Notify Orange Logic that all of an asset’s chunks have been successfully uploaded

Complete the asset upload process by notifying Orange Logic that all of an asset’s chunks are uploaded. Then, Orange Logic assembles the chunks into the full asset and returns a status, version, and duplication information. Run this call for each asset you upload.

This page shows the <span style="color:#0171C2">**POST**</span> method, but you can also use <span style="color:#0E9B71">**GET**</span>.

## Response

This call returns three pieces of information:

1. `duplicateRecordID`: If Orange Logic detects that the newly-created asset is a duplicate of an asset that already exists in Orange Logic, it returns the [Record ID](https://developer.orangelogic.com/reference/assets#record-id) of the existing asset.
2. `assetVersion`: The version of the asset in Orange Logic. Newly created assets that are ***not*** duplicates of existing assets are listed as version zero. If an asset is a duplicate, however, the asset is not uploaded to Orange Logic. Instead, the returned version number corresponds to the existing version in Orange Logic.
3. `uploadStatus`: The upload status of the asset:

   | Status          | Meaning                                                                                                                                                  |
   | :-------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------- |
   | `Incomplete`    | Either not all of the asset’s file chunks were uploaded successfully, or the server cannot confirm its completion.                                       |
   | `Success`       | All of the asset’s file chunks were uploaded and the upload completed successfully.                                                                      |
   | `AlreadyExists` | The upload was already complete and the asset is being, or has already been, processed. This can happen when a user marks the same asset complete twice. |

   <br />

> ℹ️ **Note**
>
> * This API can return the version, duplicate, and status information beginning in the [Orange Logic Juneau release](https://developer.orangelogic.com/reference/about#orange-logic-api-versioning) .
> * Version and duplicate information are only returned if duplicate detection via checksum is activated. Duplicate detection via checksum is deactivated by default. Submit a support request to activate it.

# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "multi-part-upload-api",
    "version": "1.0"
  },
  "servers": [
    {
      "url": "https://{OrangeLogicURL}/webapi/mediafile/import/upload/",
      "variables": {
        "OrangeLogicURL": {
          "default": "OrangeLogicURL"
        }
      }
    }
  ],
  "components": {
    "securitySchemes": {
      "sec0": {
        "type": "oauth2",
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://example.com/oauth2/token",
            "scopes": {}
          }
        }
      }
    }
  },
  "security": [
    {
      "sec0": []
    }
  ],
  "paths": {
    "/complete_27_v1": {
      "post": {
        "summary": "Step 5: Complete the upload session",
        "description": "Notify Orange Logic that all of an asset’s chunks have been successfully uploaded",
        "operationId": "complete-the-asset-upload",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "uploadItemId",
                  "fileDigitizedDate"
                ],
                "properties": {
                  "uploadItemId": {
                    "type": "string",
                    "description": "<code>uploadItemId</code> or <code>UIRecordID</code> of the upload item created in the <a href= \"https://developer.orangelogic.com/reference/register-upload-assets\">Register upload assets</a> section."
                  },
                  "fileDigitizedDate": {
                    "type": "string",
                    "description": "The current date in the format mm/dd/yyThh:mm:ss.",
                    "format": "date"
                  },
                  "fileDateCreated": {
                    "type": "string",
                    "description": "The date the asset was created locally in the format mm/dd/yyThh:mm:ss.",
                    "format": "date"
                  },
                  "fileDateModified": {
                    "type": "string",
                    "description": "The date the asset was last modified locally in the format mm/dd/yyThh:mm:ss.",
                    "format": "date"
                  },
                  "S3PartList": {
                    "type": "array",
                    "description": "ETags received from S3 multipart upload requests. For more information about ETags, refer to the <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/API/API_Object.html#:~:text=Aws%20S3%20Etag\" target=\"_blank\">AWS S3 documentation</a>.",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": "{\n \"assetVersion\": 0,\n  \"duplicatedRecordID\": null,\n  \"uploadStatus\": \"Success\"\n}\n"
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "assetVersion": {
                      "type": "integer",
                      "example": 0,
                      "default": 0
                    },
                    "duplicatedRecordID": {},
                    "uploadStatus": {
                      "type": "string",
                      "example": "Success"
                    }
                  }
                }
              }
            }
          }
        },
        "deprecated": false
      }
    }
  },
  "x-readme": {
    "headers": [],
    "explorer-enabled": false,
    "proxy-enabled": true
  },
  "x-readme-fauxas": true
}
```