Post-process

UV Unwrap

POST/v1/assets/{id}/uv-unwrap

Re-unwrap an asset's UVs into a clean, editable layout — geometry and appearance stay the same, the texture coordinates get rebuilt.

When to use it

Generated meshes usually arrive with UVs that render correctly but are awkward to edit by hand — overlapping or fragmented islands. This endpoint re-parameterizes the mesh and re-bakes the source textures onto the new layout, so the model looks identical in a viewer while becoming workable in Blender, Substance Painter, or a game engine's texture tooling.

Base color, metallic/roughness (ORM) and normal maps are all carried over. The normal map is re-expressed in the new UV's tangent space rather than resampled, so surface detail survives the change.

Input limit

The source must have fewer than 30,000 faces. A larger mesh is rejected with invalid_input and no credits are consumed — run Remesh first to reduce it, then unwrap the result.

Parameters

ParameterDescription
engine
string
hunyuan-uv. Optional — omit for the default. List: GET /v1/models?category=uv-unwrap.
license
string
Output license. Defaults to all-rights-reserved (private).

Request

request
curl -X POST https://api.picoberry.ai/v1/assets/019…/uv-unwrap \
  -H "Authorization: Bearer pb_live_xxx" -H "Content-Type: application/json" \
  -d '{}'
requests.post(f"{BASE}/v1/assets/{id}/uv-unwrap", headers=headers, json={})
await fetch(`${BASE}/v1/assets/${id}/uv-unwrap`, { method: "POST",
  headers: { ...headers, "Content-Type": "application/json" },
  body: JSON.stringify({}) });

Returns a new asset — poll it like any generation.

Where it fits

The usual order is generate → remesh → UV unwrap → texture. Remesh rebuilds topology (and drops the old UVs with it), so unwrapping afterwards is what makes the result editable. Rigged assets are not accepted as a source: re-parameterizing the mesh does not carry skinning weights, so unwrap before you rig.