---
title: "Complete a resumable upload and publish the splat"
method: POST
path: "/v1/splats/uploads/{uploadId}/complete"
tags: ["Uploads"]
---

# Complete a resumable upload and publish the splat

`POST /v1/splats/uploads/{uploadId}/complete`

## Request

- Base URL: `https://playcanvas.com/api/supersplat`
- URL: `https://playcanvas.com/api/supersplat/v1/splats/uploads/{uploadId}/complete`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/playcanvas/apis/supersplat-api/docs/v1/splats/uploads/:uploadId/complete/post.ts> (a function with typed inputs; its response is checked against the schema)

Completes the multipart upload and creates a splat. Use the returned `splatId` to fetch the splat representation; it can remain `processing` while PlayCanvas prepares the final viewer assets.

## Path parameters

- `uploadId` string, required: Opaque resumable upload session id.

## Request body

- CompleteUploadRequest: Request body for completing a resumable upload and queuing splat processing.
  - `parts` object[], required: Uploaded parts to commit. Include each uploaded part number and its S3 ETag.
    - `partNumber` integer, required: One-based part number in the multipart upload.
    - `etag` string, required: ETag returned by S3 after uploading this part.

## Response `200`

Upload was already completed

- CompleteUploadResponse: Upload completion result. Use the returned `splatId` to fetch the splat representation.
  - `uploadId` string, required: Resumable upload session id.
  - `status` 'completed', required: Upload session status after completion.
  - `splatId` string, required: Opaque public splat id. Use `GET /v1/splats/{splatId}` to retrieve the splat representation.
  - `editUrl` string, required: URL where the creator can continue editing the splat after upload completion.

## Other responses

- `201`: Upload completed and splat queued for processing
- `400`: Bad request
- `401`: Authentication required
- `403`: Forbidden
- `404`: Not found
- `409`: Conflict
- `413`: Upload limit exceeded
- `429`: Rate limited

---

[API](https://skmtc.dev/playcanvas/apis/supersplat-api.md) - [All operations](https://skmtc.dev/playcanvas/apis/supersplat-api/llms.txt) - [OpenAPI document](https://skmtc.dev/playcanvas/apis/supersplat-api/revisions/a0f996dcea93?raw)
