# AI3D API v2 model: worldlabs2-chisel Render a scene from a prompt, target cameras, and optional depth blockout. - AI3D provider: `worldlabs2` (World Labs Atlas / Marble 2 beta). - Provider task: `atlasChisel`. - Task category: `depth_to_image`. - Availability: appears in `GET /v2/models` when `WORLDLABS2_ENABLED=true`. - Access: operator API keys only during beta. Customer keys and mobile tokens are rejected before submission. Customer prices and measured API usage are not yet available; the beta rate card must be verified before customer billing is enabled. Operator keys with `track_provider_cost` also cannot create new beta jobs until pricing is supported. ## Evidence-first Chisel tutorial One More Step: . The primary experiment turns Chisel-generated RGBD into an SPZ world with the separate worldlabs2-images-to-splat task, then fits an extension using the exact base RGBD inputs plus additional views. Supporting examples retain the original layout, posed-reference, mask and point-cloud experiments. Published results need no key; new jobs require an eligible AI3D operator key and consume provider credits. The three core runs keep the exact caption, target camera, seed 42, 30 sampling steps, voxel size 0.1, and enhancePrompt=false fixed. The prompt-only baseline has contextFrames=[]; each guided case has one aligned depth map. Their promptUsed values match the submitted caption. Depth moves the broad furniture layout, but does not enforce object counts or lock appearance. These are one-seed examples, not a benchmark. The masked example changes known regions less than open regions, but is not pixel-identical and misses the requested sage-green color. Portable reproduction requests: - prompt-only: - layout-a: - layout-b: - posed reference views: - masked preservation: Use the public requests directly, or upload each locally rendered depth PNG unchanged through POST /v2/uploads as multipart field image. Pair its HTTPS image_url with its measured zMin/zMax and exact camera; context and target cameras retain their order. sourceFrames must be posed views registered in the same scene, not unposed style images. Known RGB and maskAsset must be supplied on every context frame or none; white mask pixels mark known content and black permits regeneration. Do not add a sourceFrame that would anchor the old appearance in a region being deliberately changed. ## Submit and poll Send `POST https://api.ai3d.dev/v2/jobs` with an AI3D operator bearer key and a stable `Idempotency-Key`. Never send the World Labs provider credential to a client. This uses the new beta credential, independently of the existing `worldlabs` and `worldlabs-draft` models. ```json { "model": "worldlabs2-chisel", "publish": false, "input": { "contextFrames": [ { "camera": { "extrinsics": { "position": [ 0, 1.45, 0.8 ], "quaternion": [ 0, 0, 0, 1 ], "coordinateSystem": "rub" }, "intrinsics": { "fx": 900, "fy": 900, "cx": 640, "cy": 360, "width": 1280, "height": 720 } }, "depth": { "logDepthAsset": { "url": "https://api.ai3d.dev/v2/demos/chisel/assets/layout-a-input-depth-1-23cea59508f1.png" }, "zMin": 3.5, "zMax": 8.800000190734863 } } ], "targetCameras": [ { "extrinsics": { "position": [ 0, 1.45, 0.8 ], "quaternion": [ 0, 0, 0, 1 ], "coordinateSystem": "rub" }, "intrinsics": { "fx": 900, "fy": 900, "cx": 640, "cy": 360, "width": 1280, "height": 720 } } ], "prompt": "Scene: a small, quiet kitchen with one wooden table, one wooden chair and an open doorway to a hall. Materials: worn honey-colored oak furniture, pale warm plaster walls, scuffed natural oak floorboards. Lighting: soft late-afternoon daylight, warm gentle shadows. Mood: the last peaceful afternoon before moving out, restrained everyday detail. Style: photorealistic architectural interior. No people, no extra furniture, no text.", "enhancePrompt": false, "voxelSize": 0.1, "voxelGridOrientation": "world", "returnDepth": false, "modelParameters": { "seed": 42, "numSteps": 30 } } } ``` Poll the returned authenticated job URL until `succeeded` or `failed`, then download the job's archived artifacts. The worker persists the beta operation ID and deduplicates transport retries by AI3D job ID. It never uses blocking `wait=true` submissions. ## Inputs and outputs Task fields use the provider's camelCase spellings inside `input`. Only `worldlabs2-images-to-rgbd` accepts a top-level `image_url`; alternatively provide its `input.frames` array, with one `imageAsset` per frame. Other tasks receive cameras, frames, or `splatAsset` in `input`. `source_job_id`, `model_url`, and `video_url` are not accepted for these tasks. Each asset is either `{"assetId":"asset_..."}` from the same beta project or `{"url":"https://..."}` with a public HTTPS URL. Inline base64, provider webhook fields, and unknown settings are rejected. Input settings retain the common 16 KiB limit. At most 32 frames or target views are accepted for generate, inpaint and splat requests. Chisel accepts up to 128 target cameras within its weighted view limit (3 per context frame, 1 per source frame and 1 per target camera, 128 in total), but the 16 KiB input limit is reached first, at about 80 prompt-only target cameras; explicit splat-to-mesh camera lists accept up to 512, subject to that JSON size limit. A failed job's `error` names World Labs' stable reason when it gives one, for example `Atlas beta task failed: CONTENT_POLICY`, `THROTTLED`, `EXECUTION_FAILED`, `EXECUTION_TIMEOUT` or `INVALID_INPUT`. The `atlas-response.json` artifact preserves cameras, depth ranges, resolved prompts, seeds when returned, and durable beta asset IDs. Expiring read URLs are omitted beside asset IDs. Downloaded files are archived separately with `source_path` links such as `frames[0].depth.depthAsset.url`; depth, confidence, mask, image, and mesh outputs retain their roles. JSON references can be reused in another beta job while the assets remain in the provider project. AI3D archives do not depend on the provider's retention window. Publishing a pose job also publishes its normalized image output, which derives from the source photograph. This tutorial uses Chisel depth guidance directly; images-to-RGBD and atlasGenerate are separate tasks and are not called. Chisel requires 1280 x 720 target cameras and matching depth grids. With depth context, supply one context frame per target in identical camera order. Camera poses are camera-to-world, quaternions use XYZW order, and RUB cameras look along -Z. Use the same distance unit for camera positions and planar optical-axis depth. Depth input is either a single-channel linear EXR (depth.depthAsset), or an 8-bit single-channel grayscale inverted-log PNG (depth.logDepthAsset, zMin, zMax). For finite positive surface z, encode round(255 * (1 - ln(z/zMin)/ln(zMax/zMin))), clamped to 1..255. Pixel 0 means no surface. Do not upload a display-normalized RGB depth visualization or resize the raster independently of its camera. AI3D /v2/uploads preserves the original PNG bytes. The example uses one camera and returnDepth=false. To request reconstructed output depth, provide at least two translated target cameras, each with its own aligned context depth, and set returnDepth=true. A pure rotation rig has no translation baseline for reliable depth scale. Output depth is reconstructed from generated views, not copied from the input maps. Optional sourceFrames hold posed RGB photographs in the same world frame to anchor appearance. They have imageAsset and camera, without depth or mask. Leave them empty for a geometry-led blockout demonstration. voxelSize is measured in the normalized scene gauge, not metres. Start at 0.1 with voxelGridOrientation=world for a blockout, or use 0 to retain unquantized depth. Keep the seed, camera set, and prompt fixed when comparing one geometry change. This task returns posed images, optionally with depth; it does not create a Gaussian splat or mesh. Other context-frame shapes that World Labs documents are accepted. A frame carries its camera plus depth, a known `imageAsset`, or both (at least one), with an optional `maskAsset` (white where the frame is known). A frame with an image and no depth keeps the image inside the mask and generates the geometry; leave `voxelSize` unset for those frames. An optional `depth.maskAsset` (white where the depth is known) masks the depth apart from the image. Send each of these fields on every context frame or on none, because World Labs rejects mixed frames. `styleReferenceImageAsset` is accepted, but World Labs does not apply it yet, so it has no effect today. Do not send `depth.confidenceAsset` to Chisel; World Labs rejects it. ## Provider reference - https://atlas-beta.worldlabs.ai/docs/api-reference/atlas-chisel - https://atlas-beta.worldlabs.ai/docs/web-quickstart - https://atlas-beta.worldlabs.ai/docs/cameras-and-posed-images - https://atlas-beta.worldlabs.ai/docs/billing