API Reference
/
GET /v1/splats/{id}
GET /api/v1/splats/{splatId}
Fetch a single splat by ID, including the full viewer state (levelData) and asset folder key.
GET
https://moshpit.studio/api/v1/splats/{splatId}
Auth
Plain
Authorization: Bearer msk_YOUR_SECRET_KEY
X-Moshpit-Public-Key: mpk_YOUR_PUBLIC_KEYSame as GET /v1/splats — both keys are required.
Include X-Moshpit-External-User-Id to require the splat to belong to that
delegated product user, unless the splat is public within the same product
integration.
REST API access
REST API access is included on Free, Pro, and Enterprise. Storage, Scene counts, and integration limits still apply.
Path parameters
| Field | Type | Description |
|---|---|---|
splatId Required | string | 24-character MongoDB ObjectId. Use the `id` returned from `GET /api/v1/splats`. |
Example request
Bash
curl "https://moshpit.studio/api/v1/splats/65f1a2b3c4d5e6f7a8b9c0d1" \
-H "Authorization: Bearer msk_YOUR_SECRET_KEY" \
-H "X-Moshpit-Public-Key: mpk_YOUR_PUBLIC_KEY" \
-H "X-Moshpit-External-User-Id: host_user_123"Success response — 200 OK
JSON
{
"status": "success",
"splat": {
"id": "65f1a2b3c4d5e6f7a8b9c0d1",
"title": "Living room scan",
"description": "",
"imageUrl": "https://...",
"splatUrl": "https://...",
"visibility": "public",
"allowEmbed": true,
"allowComments": true,
"allowReactions": true,
"allowClone": true,
"remixedFrom": null,
"splatType": "lod",
"externalUserId": "host_user_123",
"productSlug": "moshpit.studio",
"isOwner": true,
"viewCount": 42,
"likeCount": 3,
"createdAt": "2026-04-12T18:30:00.000Z",
"updatedAt": "2026-04-15T09:14:21.000Z",
"levelData": { "...": "..." },
"lodFolderKey": "splats/abc123/lod"
}
}The fields are the same as GET /api/v1/splats, with two additions:
| Field | Type | Description |
|---|---|---|
levelData | object | null | The full viewer state — camera position, lighting, annotations, post-processing, etc. Treat as opaque unless you have a specific reason to inspect it. Used internally by the viewer to render the scene exactly as the author saved it. |
lodFolderKey | string | null | For `splatType: "lod"` scenes, the S3 folder key containing the level-of-detail manifest and tiles. `null` for single-file splats. |
Error responses
| Status | Cause |
|---|---|
| 401 | Missing or invalid credentials |
| 404 | Splat doesn't exist, or exists but isn't owned by your integration/external user |
404 is intentional for both not-found and not-owned. Moshpit doesn't disclose existence — if a splat ID happens to belong to a different integration, you can't tell that from the response.
What's next
- GET /v1/splats — list all splats first.
- POST embed-sessions — mint a session and embed the splat.