# Batch Complete Upload

```
POST 
/v1/:slug/assets/batch_upload_complete
```

**Final Step of Batch Asset Upload Process**

Completes a batch upload by creating Asset records for all uploaded files. Each asset is created individually — a failure mid-batch does not roll back previously created assets.

## Request[​](#request "Direct link to Request")

```
{

  "batch": {

    "batch_id": "uuid-from-batch_upload_prepare",

    "collection_token": "optional-collection-token",

    "assets": [

      {

        "uuid": "client-uuid-1",

        "signed_gcs_id": "value-from-prepare",

        "title": "photo.jpg",

        "media_type": "image/jpeg",

        "width": 1920,

        "height": 1080

      }

    ]

  }

}
```

## Important[​](#important "Direct link to Important")

* `signed_gcs_id` must be the exact value from `batch_upload_prepare`
* `batch_id` is optional but recommended — it releases the upload reservation
* For Backblaze multipart uploads, include `multipart_upload_id`
* Maximum 100 assets per batch

## Request[​](#request "Direct link to request")

## Responses[​](#responses "Direct link to Responses")

* 200
* 401
* 404
* 422

batch upload completed

unauthenticated

file not found in storage

invalid signed\_gcs\_id
