Thrixel API

Detailer & 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 retexture an existing result without regenerating from scratch.

Just want fewer triangles?

Remesh the result you already have - it re-decimates the existing mesh and keeps its texture, so it's quicker and cheaper than a second Detailer pass, and you get the same model rather than a new one.

This page covers the detail + texture endpoints:

  • /api/v1/detailer/submit — full detail + texture pass.
  • /api/v1/texture/* — texture-only operations on an existing mesh (generate, rebake).

Which one should I use?

The Detailer rebuilds the mesh, so it can change the shape you gave it. The texture endpoints never touch geometry. Pick by what you need to keep:

What you needUseWhat you get
The geometry exactly as it is, every part and name intactPOST /api/v1/texture/generateGuaranteed. Geometry is untouched; only materials are regenerated
Added geometric detail on a precision or hard-surface modelPOST /api/v1/detailer/submit with adherence_level: 12Best effort. Far more parts survive than at the default, but very small ones can still be lost
A genuine re-sculpt of an organic or sculptural subjectPOST /api/v1/detailer/submit (default adherence_level: 9)The silhouette is expected to be reinterpreted

If the shape is already right, do not detail it

Retexturing costs the same as a detail pass and cannot damage what you have. The Detailer is for when you want the shape itself to gain detail. Measured on one 78-part quadcopter blockout with preserve_parts: true, same seed and same reference image: at the default adherence_level: 9, 28 parts came back and one of the four propellers was missing entirely; at adherence_level: 12, 35 parts came back and all four propellers survived at full size.

The Detailer is strongest on organic and sculptural subjects (creatures, characters, cloth, plants, rock). It is weaker on precise manufactured geometry: an exactly round cylinder, torus or wheel is re-approximated rather than refined, so it returns measurably less round while carrying many times the triangles.

Proportions matter too. A model whose bounding box is far from a cube — a building, a roof, a floor plane, anything long and thin — comes back noticeably worse from both the Detailer and the Sculptor, because the object occupies only a small part of the working volume. For buildings, prefer the texture endpoints.


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

NameTypeDescription
parent_submission_idstring (required)ID of the submission to detail.
imagestringReference image (base64 or HTTPS URL). Auto-generated if omitted.
meshstringOverride source mesh (base64 or URL). Defaults to the parent's GLB.
promptstringText description of the desired appearance.
seedintegerRNG seed. 0-999,999. Omit for a random seed each run (the default). Pin it only to reproduce a previous result: the same seed with the same inputs reproduces it.
texture_sizeintegerOutput texture resolution. Values: 2048, 4096. Default: 2048.
decimation_targetintegerTarget triangle count after decimation. 10,000–250,000. Default: 80000. To lighten a model you already have, Remesh is quicker and cheaper.
adherence_levelintegerHow closely the output adheres to the source mesh geometry. 012. 0 follows the reference image most freely (most creative); 12 returns the source mesh geometry itself, so the pass only adds texture. Default: 9, which stays close to the mesh while still letting the reference image inform detail. Previously named coherence_level, which is still accepted.
preserve_partsbooleanExperimental. Keep the input mesh's separate parts in the output. When false, returns a single merged mesh. Omit to let the server choose: on at adherence_level 9 or above, off below it, where keeping the parts split through a reshaped silhouette produces artifacts.
project_idstringAssign to a project.

Example Request

POST /detailer/submit
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-..."
}

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

NameTypeDescription
parent_submission_idstring (required)ID of a completed submission to retexture.
texture_sizeintegerOutput texture resolution. Values: 2048, 4096. Default: 2048.
imagestringReference image (base64 data URI). Auto-generated from the GLB if omitted.
seedintegerRNG seed. 0-999,999. Omit for a random seed each run (the default). Pin it only to reproduce a previous result: the same seed with the same inputs reproduces it.
apply_to_node_namesstring[]Restrict texturing to specific mesh nodes. Empty = whole mesh.
project_idstringAssign to a project.

Example Request

POST /texture/generate
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

NameTypeDescription
parent_submission_idstring (required)ID of a completed submission.
texture_sizeintegerOutput texture resolution. Values: 1024, 2048, 4096. Default: 2048.
project_idstringAssign to a project.

Example Request

POST /texture/rebake
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

NameTypeDescription
submission_idstring (required)UUID of a Detailer submission.

Example Request

GET /detailer/reference/e5f6a7b8-...
curl -L -o reference.png https://api.thrixel.com/api/v1/detailer/reference/e5f6a7b8-...

On this page