# Complete Upload

This section allows you to complete the multi-part upload and start processing

## Complete Video Upload

> Send metadata of the multi-part uploads to complete the upload and begin processing the video.\
> \
> Optionally include the MD5 hash of the source video file to validate successful upload before processing.\
> \
> \## Request body\
> \
> \| \*\*Property\*\*    | \*\*Type\*\*         | \*\*Description\*\*                                                                                         |\
> \|-----------------|------------------|---------------------------------------------------------------------------------------------------------|\
> \| \*\*uploadResults\*\*           | Array   | An array of part number and ETag pairs of the uploaded parts. ETags are returned by S3 upon upload of the part. |\
> \| \*\*uploadResults.\*.partNum\*\* | Integer | Part number of the uploaded part, starting from 1                                                      |\
> \| \*\*uploadResults.\*.eTag\*\*    | String  | eTag value returned by S3 upon upload of the part   <br>

```json
{"openapi":"3.0.3","info":{"title":"Video API","version":"1.0.0"},"tags":[{"name":"Complete Upload","description":"This section allows you to complete the multi-part upload and start processing\n"}],"servers":[{"url":"https://api.topazlabs.com","description":"Production API base URL"}],"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","in":"header","name":"X-API-Key"}},"requestBodies":{"CompleteUpload":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["uploadResults"],"properties":{"md5Hash":{"type":"string","description":"MD5 hash of the source video file in hex"},"uploadResults":{"type":"array","description":"An array of part number and ETag pairs of the uploaded parts. ETags are returned by S3 upon upload of the part.","items":{"type":"object","required":["partNum","eTag"],"properties":{"partNum":{"type":"integer","description":"Part number of the uploaded part, starting from 1"},"eTag":{"type":"string","description":"eTag value returned by S3 upon upload of the part"}}}}}}}}}},"responses":{"BadRequest":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"Forbidden":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"NotFound":{"description":"Enhancement request with the provided ID not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"InternalServerError":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"paths":{"/video/{requestId}/complete-upload/":{"patch":{"tags":["Complete Upload"],"summary":"Complete Video Upload","operationId":"CompleteVideoUpload","description":"Send metadata of the multi-part uploads to complete the upload and begin processing the video.\n\nOptionally include the MD5 hash of the source video file to validate successful upload before processing.\n\n## Request body\n\n| **Property**    | **Type**         | **Description**                                                                                         |\n|-----------------|------------------|---------------------------------------------------------------------------------------------------------|\n| **uploadResults**           | Array   | An array of part number and ETag pairs of the uploaded parts. ETags are returned by S3 upon upload of the part. |\n| **uploadResults.*.partNum** | Integer | Part number of the uploaded part, starting from 1                                                      |\n| **uploadResults.*.eTag**    | String  | eTag value returned by S3 upon upload of the part   \n","parameters":[{"in":"path","name":"requestId","schema":{"type":"string","format":"uuid"},"required":true}],"requestBody":{"$ref":"#/components/requestBodies/CompleteUpload"},"responses":{"202":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```
