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_KEY

Same 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

FieldTypeDescription
splatId

Required

string

24-character MongoDB ObjectId. Use the `id` returned from `GET /api/v1/splats`.

Example request

SH

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:

FieldTypeDescription
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

StatusCause
401Missing or invalid credentials
404Splat 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