Upload local files and supply multiple views
Upload local files asmultipart/form-data; you do not need to host images yourself.
Use the repeated field name files. Let your HTTP client set the multipart boundary
(do not manually set a JSON Content-Type for this request).
201 Created response contains images in upload order. Each item has id,
content_type, size_bytes, width, height, and sha256. Save the returned IDs:
POST /v1/assets. Replace the placeholder IDs with real upload IDs.
Each reference has exactly one of image_id or url. Accepted view labels are
front, back, left, right, top, bottom, perspective, and detail.
Labels are optional user descriptions, not calibrated camera poses. You can supply
several details or perspectives. With both reference fields present, legacy
reference_image_urls come first, followed by reference_images in order.
Limits: 8 files per upload; 8 references per generation; 20 MiB and 40 million
pixels per file; 80 MiB of file content per upload batch. Supported formats are
non-animated PNG, JPEG, and WebP. Invalid files are rejected before the batch is
stored. Original bytes are retained without a mandatory crop or concept redraw;
model-specific resized copies can be derived separately. Uploads with identical
bytes reuse the same ID within your account. Image IDs are private and cannot be
used by another account. Uploads currently remain stored without automatic expiry.
GET /v1/images/{id} reads metadata. GET /v1/images/{id}/content downloads the exact
original bytes. Queued jobs resolve fresh access URLs when they run, so an upload
ID does not expire while a job is waiting. External URLs must remain accessible
when the worker runs; use uploads if you need a durable reference.
Multiple supplied images use the Blender authoring path because the static mesh
backend accepts only a single image. All original views and labels are retained.
reference_intent.requested_views is a separate advanced option for generated
hypotheses; it is not how you attach observed views and is empty by default.
Reference fidelity
Uploaded product photos are preserved for reconstruction by default. For an object inside a scene, the planner keeps the selected original photos and binds them to that object’s name. It does not generate a replacement product shot first. The optionalreference_intent request field selects reconstruct, extract,
modify, or design. Use modify for requested changes to the pictured object,
or design when asking for a new design inspired by the inputs. Your prompt
remains the user instruction. Additional generated views are optional hypotheses,
not measurements of unseen surfaces.
Python: local files and URL references
reference_image_urls or
reference_images: [{"url": "https://your-host/your-image.jpg", "view": "front"}].
Replace all example URLs with accessible images. API keys belong on your server, not in browser bundles.
Reference URLs must serve image bytes directly. Redirect responses are not followed; use the final image URL or upload the local file with POST /v1/images.
Upload reference images · Generate one asset · Generate a batch