Skip to main content
Scene reconstruction turns images or a video into a scene with individually modeled items. Submit your references and describe the region to model, then use the returned project ID to track progress and download the scene. Use your Moonlake API key for authentication. Set MOONLAKE_API_BASE_URL to the API base URL for your account, including /api/v1. See the scene API reference for request and response schemas.

Choose a budget

Set config.budget_credits for appearance and geometry reconstruction. This budget does not cover physics or articulation. Optional item lifts are quoted and purchased separately. Use these ranges as starting points for the region you want modeled: Choose within each range based on the number of distinct objects, their geometric detail, and the area you want reconstructed. A long video of one object may need less work than a short video of a densely furnished room. Video inputs must still fit the media limits. These ranges are starting points, not quality guarantees. Choose a budget that reflects the scope and detail you need. Include additional references when important surfaces or measurements are missing.

Define the region to model

When the scope is ambiguous, state exactly which region or area belongs in the reconstruction. Identify its physical boundaries and the distant, background, or non-focal areas to exclude. Do not rely on camera framing alone to communicate which visible objects matter. Include the intended use, the most important items, and any known dimensions with units. Call out features that must be preserved, such as a box cavity, shelf spacing, or a curved profile. Distinguish measured dimensions from estimates. Describe appearance and geometry requirements separately from any later physics or articulation work. For example, set input.prompt to:
Name the items that matter most to your task and describe the detail each needs. Include walls, fixtures, and other structures explicitly when they belong in the requested region. State whether people or animals should be included.

Prepare useful references

Use one image, overlapping views of the same scene, or one video. Do not combine images and video in a request. For multiple views, include angles that reveal object placement, important profiles, and occluded features. Avoid unrelated images that describe different environments. A single image leaves hidden surfaces and absolute scale uncertain. Provide additional views and known dimensions when those details matter to your task.

Submit the reconstruction

Send multipart form data for local files. Each attached reference names its matching file field. This shell example uses a local image and a new idempotency key:
The API returns 202 with a project_id and reserves the scene credits. Save that ID for polling, downloads, cancellation, and optional lifts. Scene creation creates its own project; do not create or pass a separate project ID. If a request times out, retry the same payload with the same idempotency key. If an error response includes a project ID, poll that project before submitting anything new.

Track and download the scene

Poll the project, for example every 30–60 seconds:
Use status to determine the outcome and phase for progress display. A downloadable scene result is partially_completed: the scene is available, and optional item lifts remain possible. You do not need to request a lift to download the scene. Read result.artifacts for the scene and item downloads. The published formats are Blender, GLB, USDZ, and ZIP bundles. The initial result represents appearance and geometry reconstruction; it does not certify physics or articulation. Review the output against your intended use and references.

Quote and lift selected items

Retrieve the catalog with GET /api/v1/scenes/PROJECT_ID/items. Select the returned item_id values and give each item its own enhancement prompt. The default lift mode returns an itemized quote without starting generation:
Send this body to POST /api/v1/scenes/PROJECT_ID/lift. Replace the example item ID with one from your catalog. To proceed, send mode: "generate" and a new Idempotency-Key. Generation evaluates the price again; a quote is not a price lock. Accepted lift prices appear in the project’s pricing field. Continue polling the same project. You can request lifts for different items while other lifts are in progress. Wait until an active item finishes before requesting another lift for that item. Completed lifts become available in a new scene version. Earlier versions remain downloadable through the version endpoints.