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).

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: 160000. 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

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

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

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

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

On this page