Thrixel API

Generation

Generation endpoints — Phase 1 (create), Phase 2 (auto-refine), Phase 3 (edit), Phase 5 (upload).

Generate a model from a text prompt, images, or an existing mesh. All four endpoints return a submission_id that you track via the endpoints on Track Progress.


Create a model

POST /api/v1/phase1/submit

Requires API key.

Start a new generation from a text prompt, a reference image, or up to six images. At least one of task, image, or images is required.

Request Body

NameTypeDescription
taskstringNatural-language description of the model to create.
imagestringSingle reference image — base64 data URL or HTTPS URL.
imagesstring[]Up to 6 reference images (base64 or HTTPS URLs). Mutually exclusive with image.
modelstringLLM model override. Leave unset to use the default.
project_idstringGroup the submission under a project.
adaptive_thinkingbooleanEnable deeper reasoning pass. Slower but higher quality. Default: false.

Example Request

curl -X POST https://api.thrixel.com/api/v1/phase1/submit \
  -H "Authorization: Bearer sk-thrixel-<YOUR_KEY>" \
  -H "Content-Type: application/json" \
  -d '{"task": "a small stone gargoyle holding a lantern"}'

Example Response

{
  "submission_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "status": "queued",
  "created_at": "2026-04-20T14:32:11Z"
}

Auto-refine

POST /api/v1/phase2/submit

Requires API key.

Run a vision-critique pass on a completed Phase 1 or Phase 2 submission. The backend inspects the result and produces an improved version.

Request Body

NameTypeDescription
parent_submission_idstring (required)ID of a completed Phase 1 or Phase 2 submission.
project_idstringInherit or override the parent's project.
adaptive_thinkingbooleanEnable deeper reasoning pass. Default: false.

Example Request

curl -X POST https://api.thrixel.com/api/v1/phase2/submit \
  -H "Authorization: Bearer sk-thrixel-<YOUR_KEY>" \
  -H "Content-Type: application/json" \
  -d '{"parent_submission_id": "a1b2c3d4-..."}'

Example Response

{
  "submission_id": "b2c3d4e5-...",
  "status": "queued",
  "created_at": "2026-04-20T14:35:22Z"
}

Modify a model

POST /api/v1/phase3/submit

Requires API key.

Apply a natural-language edit to an existing model. Example: "make the lantern glow blue".

Request Body

NameTypeDescription
parent_submission_idstring (required)ID of the submission to modify.
modification_requeststring (required)Description of the change to apply.
project_idstringInherit or override the parent's project.
adaptive_thinkingbooleanEnable deeper reasoning pass. Default: false.
focus_on_node_namesstring[]Part names from the parent mesh to scope the edit to. Every part outside the list is held bit-identical. Empty/omitted = whole-mesh edit. Get part names from /api/v1/{submission_id}/hierarchy.

Example Request

curl -X POST https://api.thrixel.com/api/v1/phase3/submit \
  -H "Authorization: Bearer sk-thrixel-<YOUR_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "parent_submission_id": "a1b2c3d4-...",
    "modification_request": "make the lantern glow blue"
  }'

Example Response

{
  "submission_id": "c3d4e5f6-...",
  "status": "queued",
  "created_at": "2026-04-20T14:38:01Z"
}

Upload an existing model

POST /api/v1/phase5/submit

Requires API key.

Bring your own GLB file into Thrixel so you can run Phase 2, 3, or 4 operations on it. Multipart form upload, max 100 MB.

Request Body

NameTypeDescription
glb_filefile (required)Binary .glb file (Content-Type: multipart/form-data).
taskstringOptional label describing the uploaded model. Max 2000 chars.
project_idstringAssign to a project.

Example Request

curl -X POST https://api.thrixel.com/api/v1/phase5/submit \
  -H "Authorization: Bearer sk-thrixel-<YOUR_KEY>" \
  -F "glb_file=@./my_model.glb" \
  -F "task=hand-sculpted base mesh"

Example Response

{
  "submission_id": "d4e5f6a7-...",
  "status": "completed",
  "original_filename": "my_model.glb",
  "file_size_bytes": 4528192,
  "created_at": "2026-04-20T14:40:15Z"
}

On this page