Thrixel API

CLI

Make game-ready 3D models from a terminal, a script or CI, with no agent required.

thrixel makes 3D models from a terminal. One command takes a description to a finished model on disk, and every tool the MCP server gives an agent is one thrixel run away. It ships in the same package as the MCP server and shares its sign-in.

thrixel make "a mossy stone frog statue, squat, cracked grey stone" -o frog.glb

Install

Requires uv.

uv tool install thrixel-mcp
TaskCommand
Updateuv tool upgrade thrixel-mcp
Uninstalluv tool uninstall thrixel-mcp
Check the versionthrixel --version
Run once without installinguvx --from thrixel-mcp@latest thrixel <command>

Sign in

thrixel login

This prints a link and a short code. Open the link, check that the code matches, and approve. It works on a machine with no browser: open the link on your phone. You can create an account on the same page.

The key is saved in ~/.thrixel/credentials.json and does not expire. thrixel status shows which key is in use and thrixel logout removes it. In CI, set THRIXEL_API_KEY instead; it takes precedence over the saved key. Create one at thrixel.com/create.

Quick start

thrixel balance                                   # Cubes, plan, running jobs
thrixel make "a red oil barrel" --dry-run         # steps and cost, nothing submitted
thrixel make "a red oil barrel" --tris 2000 -o barrel.glb
thrixel tools                                     # everything else you can run

make

Make a 3D model from a description or an image, and save it.

thrixel make [PROMPT] [options]

Waits for every step, shows progress, and saves only the final file. The default engine, sculpt, returns one textured, high-detail mesh: the right choice for creatures, characters, plants, rocks and props that do not move. When parts must move on their own (wheels, doors, turrets, limbs), use --engine create, which keeps each part as a separate named node.

OptionDescription
PROMPTWhat the object is, in a sentence or two. Optional when --image is given.
-i, --image PATHA reference picture, as a path or URL. create accepts it more than once.
-o, --output PATHWhere to save. Default: named after the prompt, in the current folder.
--engine sculpt|createsculpt (default): textured, one piece. create: editable, separate parts.
--quality plus|balancedcreate only. plus is the default; balanced costs half and suits simple props.
--detailcreate only. Add high-resolution detail and a PBR texture.
--tris NReduce to at most N triangles. Free.
--size MReal-world size: the longest side in metres.
--format FORMATglb (default), fbx, obj, stl or usdz.
--target ENGINEWith --format fbx: unity or ue5 name a rigged humanoid's bones for that engine; roblox writes an R15 .zip.
--webpGLB with WebP textures, up to 20x smaller on texture-heavy models. Use it for the web.
--project IDFile the model under a project. thrixel run list_projects lists them.
--dry-runPrint the steps, the estimated Cubes and your balance. Submits nothing.
--jsonPrint one JSON object instead of text. See Scripting.

Examples:

# A textured prop from a photo
thrixel make -i photo.jpg -o lamp.glb
 
# A cart with wheels that can turn, detailed, for Unity
thrixel make "a wooden farm cart with two spoked wheels" \
  --engine create --detail --format fbx --target unity -o cart.fbx
 
# A light, small model for a browser game
thrixel make "a treasure chest" --tris 3000 --webp -o public/models/chest.glb

What a run costs:

$ thrixel make "a mossy stone frog statue" --tris 5000 --format fbx --target unity --dry-run
Plan (nothing submitted):
  sculpt   Sculpt a textured single-piece model - 11 cubes
  reduce   Reduce to at most 5,000 triangles - free
  convert  Convert to FBX for unity - free
Estimate: 11 cubes
Balance:  518 cubes

On the Free plan the dry run also says how many runs of each step are left this month, and warns when one is used up.

create is metered on actual usage, so its estimate is a range.

Free plan: 4 runs a month of each GPU operation

On the Free plan, sculpt, detail, retexture and rig each run up to 4 times per calendar month (UTC), per account. The CLI, your agents and the web app share the same count, and a failed run does not use one. --dry-run and thrixel balance show what is left. Past the limit make stops with exit code 4 until the 1st, even with Cubes left; --engine create, --tris and the format conversions are not limited. Paid plans have no monthly limit.

Other commands

Click a command for its options and examples.

Scripting

Progress goes to stderr and the result to stdout, so path=$(thrixel make ...) captures the saved file. With --json, stdout is a single object:

{"ok": true, "file": "/work/frog.glb", "bytes": 880572,
 "submission_id": "50d876b9-...",
 "steps": [{"op": "sculpt", "submission_id": "...", "seconds": 64},
           {"op": "reduce", "submission_id": "50d876b9-...", "seconds": 17}]}

A failure is {"ok": false, "error": "...", "exit_code": 4}.

Exit codes

CodeMeaningWhat to do
0Done
1Other errorRead the message
2Bad argumentsFix the command. Nothing was submitted
3Not signed in, or the key was refusedthrixel login, or set THRIXEL_API_KEY
4Out of Cubes, or this month's runs of that operation are used up (Free plan)thrixel balance shows which
5Too many jobs running at onceWait for one to finish, then retry
6The job failedRead the message; some prompts are refused
7Still running when the wait endedIt keeps running and is charged when it finishes. thrixel run job_status --arg submission_id=.... Do not resubmit

Configuration

Environment variables

VariableDefaultDescription
THRIXEL_API_KEYAPI key. Takes precedence over the saved key.
THRIXEL_API_BASEhttps://api.thrixel.comThe API to call.
THRIXEL_OUTPUT_DIR./thrixel_assetsWhere run saves downloaded files.
THRIXEL_TIMEOUT_S3600How long a command waits for a job, in seconds.
THRIXEL_CONFIG_DIR~/.thrixelWhere the saved key lives.
THRIXEL_LOG_LEVELWARNINGSet INFO or DEBUG to see requests.

Files

PathContents
~/.thrixel/credentials.jsonThe saved API key and the API it belongs to, readable only by you.
./thrixel_assets/Files that thrixel run downloads. make writes only to -o.

Coming from an agent?

The CLI and the MCP server are the same package with the same sign-in. An agent that has the MCP server should use its tools; the CLI is for shells, scripts and CI, and for trying a tool by hand.

On this page