Skip to main content
Available with Personal and Team keys. Upload and generate within the same account.

Upload local files and supply multiple views

Upload local files as multipart/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).
The 201 Created response contains images in upload order. Each item has id, content_type, size_bytes, width, height, and sha256. Save the returned IDs:
Send that JSON to 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 optional reference_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

For URL-only generation, omit the upload and use 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