Thrixel API

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

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.
image_modelstringModel for the auto-generated reference image: gpt-image-2 (default) or nano-banana-2. Ignored when image is provided.
seedintegerRandom seed for reproducibility. 0–999,999. Default: 42.
texture_sizeintegerOutput texture resolution. Values: 2048, 4096. Default: 2048.
decimation_targetintegerTarget triangle count after decimation. 10,000–500,000. Default: 160000.
preserve_partsbooleanExperimental. Keep the input mesh's separate parts in the output. When false, returns a single merged mesh. Default: true.
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-..."
}

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_names empty and the new decimation_target is spread across every part of the model.
  • Part-focused — pass one or more part names in focus_on_node_names and 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

NameTypeDescription
parent_submission_idstring (required)ID of a completed Detailer submission.
decimation_targetintegerTarget 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.
remeshbooleanRun quad remeshing before decimation. Default: true.
focus_on_node_namesstring[]Restrict the new budget to these named parts. Empty = whole mesh. Part-preserving detailer parents only.
project_idstringAssign 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

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.
image_modelstringModel for the auto-generated reference image: gpt-image-2 (default) or nano-banana-2. Ignored when image is provided.
seedintegerRNG seed for reproducibility. 0–999,999. Default: 42. Change it for a different texture variation.
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-...