Detail & Texture
Detailer + texture endpoints — high-resolution mesh refinement and retexturing.
The Detailer takes a completed submission as the source mesh and produces a high-resolution textured model. You can also remesh or retexture an existing result without regenerating from scratch.
Endpoints split across two groups:
/api/v1/detailer/*— full detail + texture pass, geometry-only operations (remesh)./api/v1/texture/*— texture-only operations on an existing mesh (generate, rebake).
Detail and texture a model
POST /api/v1/detailer/submit
Requires API key.
Generate a high-resolution textured mesh from a parent submission. A reference image and prompt guide the texture style; if omitted, they are auto-generated from the parent.
Request Body
| Name | Type | Description |
|---|---|---|
parent_submission_id | string (required) | ID of the submission to detail. |
image | string | Reference image (base64 or HTTPS URL). Auto-generated if omitted. |
mesh | string | Override source mesh (base64 or URL). Defaults to the parent's GLB. |
prompt | string | Text description of the desired appearance. |
image_model | string | Model for the auto-generated reference image: gpt-image-2 (default) or nano-banana-2. Ignored when image is provided. |
seed | integer | Random seed for reproducibility. 0–999,999. Default: 42. |
texture_size | integer | Output texture resolution. Values: 2048, 4096. Default: 2048. |
decimation_target | integer | Target triangle count after decimation. 10,000–500,000. Default: 160000. |
preserve_parts | boolean | Experimental. Keep the input mesh's separate parts in the output. When false, returns a single merged mesh. Default: true. |
project_id | string | Assign to a project. |
Example Request
curl -X POST https://api.thrixel.com/api/v1/detailer/submit \
-H "Authorization: Bearer sk-thrixel-<YOUR_KEY>" \
-H "Content-Type: application/json" \
-d '{
"parent_submission_id": "a1b2c3d4-...",
"prompt": "weathered bronze, green patina",
"texture_size": 2048
}'Example Response
{
"submission_id": "e5f6a7b8-...",
"status": "queued",
"created_at": "2026-04-20T14:45:30Z",
"reference_image_url": "https://api.thrixel.com/api/v1/detailer/reference/e5f6a7b8-..."
}
Re-decimate a detailed mesh
POST /api/v1/detailer/remesh
Requires API key.
Produce a new triangle count from an existing detailer result without regenerating the texture. Fast.
Two modes:
- Whole-mesh (default) — leave
focus_on_node_namesempty and the newdecimation_targetis spread across every part of the model. - Part-focused — pass one or more part names in
focus_on_node_namesand the budget is applied only to those parts. Every other part keeps its current resolution, so you can lighten (or refine) a single component without touching the rest.
Part-focused remesh is only supported on part-preserving detailer results
(created with preserve_parts: true). A merged or Sculptor-based parent has no
per-part data and returns 400.
Request Body
| Name | Type | Description |
|---|---|---|
parent_submission_id | string (required) | ID of a completed Detailer submission. |
decimation_target | integer | Target triangle count. 1,000–500,000. Default: 200000. Whole-mesh when focus_on_node_names is empty; otherwise the budget applied to each focused part. |
remesh | boolean | Run quad remeshing before decimation. Default: true. |
focus_on_node_names | string[] | Restrict the new budget to these named parts. Empty = whole mesh. Part-preserving detailer parents only. |
project_id | string | Assign to a project. |
Example Request
curl -X POST https://api.thrixel.com/api/v1/detailer/remesh \
-H "Authorization: Bearer sk-thrixel-<YOUR_KEY>" \
-H "Content-Type: application/json" \
-d '{
"parent_submission_id": "e5f6a7b8-...",
"decimation_target": 80000
}'Generate textures for an existing mesh
POST /api/v1/texture/generate
Requires API key.
Produce fresh PBR textures from a reference image. Geometry is preserved; only materials change. Works on any completed submission, not just Detailer output. Image priority: user-supplied → cached parent input → auto-generated from the GLB.
Request Body
| Name | Type | Description |
|---|---|---|
parent_submission_id | string (required) | ID of a completed submission to retexture. |
texture_size | integer | Output texture resolution. Values: 2048, 4096. Default: 2048. |
image | string | Reference image (base64 data URI). Auto-generated from the GLB if omitted. |
image_model | string | Model for the auto-generated reference image: gpt-image-2 (default) or nano-banana-2. Ignored when image is provided. |
seed | integer | RNG seed for reproducibility. 0–999,999. Default: 42. Change it for a different texture variation. |
apply_to_node_names | string[] | Restrict texturing to specific mesh nodes. Empty = whole mesh. |
project_id | string | Assign to a project. |
Example Request
curl -X POST https://api.thrixel.com/api/v1/texture/generate \
-H "Authorization: Bearer sk-thrixel-<YOUR_KEY>" \
-H "Content-Type: application/json" \
-d '{
"parent_submission_id": "e5f6a7b8-...",
"texture_size": 2048
}'Rebake textures at a new resolution
POST /api/v1/texture/rebake
Requires API key.
Re-bake the existing texture at a different resolution. Picks the fastest available method automatically.
Request Body
| Name | Type | Description |
|---|---|---|
parent_submission_id | string (required) | ID of a completed submission. |
texture_size | integer | Output texture resolution. Values: 1024, 2048, 4096. Default: 2048. |
project_id | string | Assign to a project. |
Example Request
curl -X POST https://api.thrixel.com/api/v1/texture/rebake \
-H "Authorization: Bearer sk-thrixel-<YOUR_KEY>" \
-H "Content-Type: application/json" \
-d '{
"parent_submission_id": "e5f6a7b8-...",
"texture_size": 2048
}'Fetch reference image
GET /api/v1/detailer/reference/{submission_id}
Public.
Returns the user-provided or auto-generated reference image used to guide the detailing. PNG.
Path Parameters
| Name | Type | Description |
|---|---|---|
submission_id | string (required) | UUID of a Detailer submission. |
Example Request
curl -L -o reference.png \
https://api.thrixel.com/api/v1/detailer/reference/e5f6a7b8-...