Download OpenAPI specification:Download
Use this API to upload Gaussian splat scenes and list the scenes owned by the authenticated user.
Typical upload flow:
processing while processing finishes.Returns a paginated list of splats owned by the authenticated user. The response uses visibility; there is no separate listed boolean in this API.
| limit | integer [ 1 .. 128 ] Default: 50 Examples: limit=50 Maximum number of splats to return. |
| skip | integer [ 0 .. 100000 ] Default: 0 Examples: skip=0 Number of splats to skip. |
{- "data": [
- {
- "id": "a1b2c3d4",
- "title": "garden-scan",
- "description": "",
- "status": "processing",
- "visibility": "unlisted",
- "format": null,
- "size": 0,
- "createdAt": "2026-01-01T00:00:00.000Z",
- "updatedAt": "2026-01-01T00:00:00.000Z",
- "completedAt": null
}
], - "pagination": {
- "skip": 0,
- "limit": 50,
- "total": 1
}
}Returns a single splat owned by the authenticated user. Newly completed uploads may return status: "processing" until processing finishes.
| splatId required | string [ 1 .. 100 ] characters Examples: a1b2c3d4 Opaque public splat id. |
{- "id": "a1b2c3d4",
- "title": "garden-scan",
- "description": "",
- "status": "processing",
- "visibility": "unlisted",
- "format": null,
- "size": 0,
- "createdAt": "2026-01-01T00:00:00.000Z",
- "updatedAt": "2026-01-01T00:00:00.000Z",
- "completedAt": null
}Starts a multipart upload and returns a resumable upload session. title is optional; when omitted, PlayCanvas assigns a default title. New splats are unlisted by default. Use softwareTools to explicitly attribute catalogue software IDs to the created splat.
| Idempotency-Key | string [ 1 .. 200 ] characters Examples: upload-garden-scan-2026-01-01 Optional key for retrying create-upload requests safely. Reusing the same key returns the existing upload session. |
integer or null Total source file size in bytes. Optional but strongly recommended; when provided, PlayCanvas can reject over-limit uploads before S3 multipart upload starts. | |
| sourceFormat required | string Enum: "ply" "sog" "ssog" "lcc" Format of the file being uploaded. Use |
| title | string [ 1 .. 100 ] characters Optional display title for the splat. If omitted, PlayCanvas assigns a default title. |
| description | string <= 5000 characters Optional display description for the splat. |
object (UploadClient) Optional application details for the client creating the upload. | |
| softwareTools | Array of strings <= 6 items unique [ items [ 1 .. 64 ] characters ^[a-z0-9][a-z0-9-]{0,63}$ ] Optional software catalogue IDs to attribute to the created splat. Use the software catalogue endpoint to discover currently supported IDs; this field is not an OpenAPI enum because the catalogue may grow over time. |
Create an upload session with a known file size.
{- "sourceFormat": "ply",
- "contentLength": 125829120,
- "title": "Garden scan"
}{- "id": "upl_0123456789abcdef01234567",
- "status": "created",
- "contentLength": 125829120,
- "sourceFormat": "ply",
- "title": "Garden scan",
- "description": "",
- "partSize": 67108864,
- "uploadedParts": [ ],
- "expiresAt": "2026-01-01T00:00:00.000Z"
}Returns upload session state and any parts already observed by the server. Use this to resume an interrupted upload.
| uploadId required | string [ 1 .. 200 ] characters Examples: upl_0123456789abcdef01234567 Opaque resumable upload session id. |
{- "id": "upl_0123456789abcdef01234567",
- "status": "uploading",
- "contentLength": 125829120,
- "sourceFormat": "ply",
- "title": "Garden scan",
- "description": "",
- "partSize": 67108864,
- "uploadedParts": [
- {
- "partNumber": 1,
- "etag": "\"abc123\"",
- "size": 67108864
}
], - "expiresAt": "2026-01-01T00:00:00.000Z"
}Returns signed URLs for the requested part numbers. Upload each file part to its URL with HTTP PUT, then keep the returned ETag for completion.
| uploadId required | string [ 1 .. 200 ] characters Examples: upl_0123456789abcdef01234567 Opaque resumable upload session id. |
| parts required | Array of integers [ 1 .. 100 ] items [ items [ 1 .. 10000 ] ] One-based part numbers to create signed upload URLs for. Calculate these by splitting the source file using the upload session |
{- "parts": [
- 1,
- 2
]
}{- "uploadId": "upl_0123456789abcdef01234567",
- "partSize": 67108864,
- "urls": [
- {
- "partNumber": 1,
- "expiresAt": "2026-01-01T00:20:00.000Z"
}, - {
- "partNumber": 2,
- "expiresAt": "2026-01-01T00:20:00.000Z"
}
]
}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.
| uploadId required | string [ 1 .. 200 ] characters Examples: upl_0123456789abcdef01234567 Opaque resumable upload session id. |
required | Array of objects [ 1 .. 10000 ] items Uploaded parts to commit. Include each uploaded part number and its S3 ETag. | ||||
Array ([ 1 .. 10000 ] items)
| |||||
{- "parts": [
- {
- "partNumber": 1,
- "etag": "\"abc123\""
}
]
}{- "uploadId": "upl_0123456789abcdef01234567",
- "status": "completed",
- "splatId": "a1b2c3d4",
}