Parts Breakdown
Decompose one reference image into an exploded "parts board" — the subject laid out as separated components on a single canvas.
Give one image — an assetId you already own, an imageUrl, or a multipart image upload. The result is a new image asset with the subject split into parts. Feed that board into Image → 3D to get a mesh whose parts stay spatially separated.
Parameters
| Parameter | Description |
|---|---|
| assetIdCONDITIONAL string | An existing image asset you own to decompose — the same path as the workspace "Decompose to parts" action. Required unless you send an imageUrl or a multipart image file. |
| imageUrlCONDITIONAL string | Source image URL (http/https). Local files go in the multipart image part instead. Required unless you send assetId or a multipart image. |
| licenseOPTIONALdefault private string | License for the generated board. Defaults to private (all-rights-reserved). |
assetId, imageUrl, or a multipart image part. If more than one is set, precedence is multipart image > assetId > imageUrl.Request
curl -X POST https://api.picoberry.ai/v1/images/parts-board \
-H "Authorization: Bearer pb_live_xxx" \
-H "Content-Type: application/json" \
-d '{"assetId":"019abc…"}'r = requests.post("https://api.picoberry.ai/v1/images/parts-board", headers=headers,
json={"assetId": "019abc…"})
board_id = r.json()["data"]["id"]const res = await fetch(`${BASE}/v1/images/parts-board`, {
method: "POST", headers: { ...headers, "Content-Type": "application/json" },
body: JSON.stringify({ assetId: "019abc…" }),
});
const { id } = (await res.json()).data;png, jpeg, webp, or gif, up to 20 MB. URLs are fetched server-side and must be publicly reachable. A clear single subject on a plain background decomposes best.Response
{ "success": true, "data": { "id": "019…", "taskStatus": 0, "type": "image" } }The call returns immediately. Poll GET /v1/assets/{id} until taskStatus is 2; the board image lands in files.image, and the detected subject type is in details.partsBoard.category. Then send that image to POST /v1/models/from-image for a parts-separated mesh.
Upload or URL
No hosted asset? Upload a local file as a multipart image part, or pass a public imageUrl in JSON.
curl -X POST https://api.picoberry.ai/v1/images/parts-board \
-H "Authorization: Bearer pb_live_xxx" \
-F "image=@./hero.png"requests.post("https://api.picoberry.ai/v1/images/parts-board", headers=headers,
files={"image": open("hero.png", "rb")})const fd = new FormData();
fd.append("image", fileBlob, "hero.png");
await fetch(`${BASE}/v1/images/parts-board`, { method: "POST", headers, body: fd });Or point at a hosted image with imageUrl:
curl -X POST https://api.picoberry.ai/v1/images/parts-board \
-H "Authorization: Bearer pb_live_xxx" \
-H "Content-Type: application/json" \
-d '{"imageUrl":"https://…/hero.png"}'Good inputs
- Subjects with clear part structure — robots, mecha, vehicles, armored characters — break down best.
- One subject on a plain background. Busy scenes or multiple objects hurt the split.
- A front or 3/4 view. Extreme angles make parts harder to tell apart.