2D → SimReady
Send one or more images of an object and Rigyd reconstructs it as a SimReady USD asset.
| Method | POST |
| Path | /api/conversions/generate |
| Content-type | multipart/form-data |
| Job type | image_to_simready (1 image) · multiview_to_simready (2-4 images) |
| Credits | 3 |
The same endpoint handles single-view and multiview based on the number of images[] you send. Provide multiple angles of the same object for sharper geometry.
Request fields
Section titled “Request fields”| Field | Type | Required | Notes |
|---|---|---|---|
images[] | file (1-4) | yes | .jpg, .jpeg, .png, .webp. Max 10 MB each. |
face_limit | int | no | Cap output mesh face count. |
model_version | string | no | Override generation model (advanced). |
threshold | float | no | CoACD concavity threshold (advanced). |
llm_provider | string | no | Override material-identification LLM (advanced). |
skip_validation | boolean | no | Skip USD schema validation. Default false. |
Examples
Section titled “Examples”Single image
Section titled “Single image”curl -X POST https://api.rigyd.com/api/conversions/generate \ -H "Authorization: Bearer rgyd_live_..." \ -F "images[]=@./toolbox-front.jpg"import fs from 'node:fs';
const form = new FormData();form.append('images[]', new Blob([fs.readFileSync('./toolbox-front.jpg')]), 'toolbox-front.jpg');
const res = await fetch('https://api.rigyd.com/api/conversions/generate', { method: 'POST', headers: { Authorization: `Bearer ${process.env.RIGYD_API_KEY}` }, body: form,});const { data } = await res.json();import os, requests
with open("toolbox-front.jpg", "rb") as f: res = requests.post( "https://api.rigyd.com/api/conversions/generate", headers={"Authorization": f"Bearer {os.environ['RIGYD_API_KEY']}"}, files={"images[]": ("toolbox-front.jpg", f, "image/jpeg")}, )job = res.json()["data"]Multiview (2-4 images)
Section titled “Multiview (2-4 images)”curl -X POST https://api.rigyd.com/api/conversions/generate \ -H "Authorization: Bearer rgyd_live_..." \ -F "images[]=@./front.jpg" \ -F "images[]=@./side.jpg" \ -F "images[]=@./back.jpg"import fs from 'node:fs';
const form = new FormData();for (const name of ['front.jpg', 'side.jpg', 'back.jpg']) { form.append('images[]', new Blob([fs.readFileSync(name)]), name);}
const res = await fetch('https://api.rigyd.com/api/conversions/generate', { method: 'POST', headers: { Authorization: `Bearer ${process.env.RIGYD_API_KEY}` }, body: form,});import os, requests
files = [ ("images[]", (name, open(name, "rb"), "image/jpeg")) for name in ["front.jpg", "side.jpg", "back.jpg"]]res = requests.post( "https://api.rigyd.com/api/conversions/generate", headers={"Authorization": f"Bearer {os.environ['RIGYD_API_KEY']}"}, files=files,)Response — 202 Accepted
Section titled “Response — 202 Accepted”{ "data": { "id": "abc123...", "status": "queued", "filename": "toolbox-front.jpg", "progress": 0, "job_type": "multiview_to_simready", "credits_charged": 3, "createdAt": "2026-05-06T12:00:00.000Z" }}job_type is image_to_simready for a single image and multiview_to_simready for 2-4 images. Both cost 3 credits.
- More views = sharper geometry. Three to four images covering front / side / back / top yield noticeably better reconstructions than a single hero shot.
- Plain backgrounds help — the generation model isolates the object before reconstruction.
- One object per call. If your image contains multiple objects, the result is undefined.