Build with Voxel Generator
Make your first request
Use your Sorceress API key on your server. The playground uses your signed-in account; your application uses the same model with an API key.
curl -X POST 'https://sorceress.games/api/v1/tools/voxel_generate' \
-H 'Authorization: Bearer $SORCERESS_API_KEY' \
-H 'Content-Type: application/json' \
-d '{}'Inputs & settings
promptstringText description for text→voxel, e.g. "a wooden treasure chest with iron bands". Detail below roughly one voxel is lost, so describe bold shapes and colours rather than fine surface texture.
imageUrlstringhttps image URL for image→voxel — usually the better result. Generate a reference with image_generate first (a single object, plain background), then pass its URL here.
modelUrlstringhttps URL of an existing .glb to voxelize instead of generating a new mesh — e.g. the mesh from model_generate. Skips the model fee, so the call costs only 5 credits.
resolutionnumberVoxels along the model's longest axis, 8–128 (default 64). 16–32 reads as chunky retro blocks; 64 keeps recognisable detail; 128 is near-sculptural and much heavier.
voxelSizeMetersnumberEdge length of one voxel in the exported GLB (default 0.05). This sets the model's real-world size: resolution 64 at 0.05 gives a ~3.2 m object. Set it here rather than scaling the GLB after loading.
paletteSizenumberMaximum distinct colours (default 256). Lower values give a flatter, more stylised look.
symmetricalbooleanMirror the model across its X axis. Useful for characters and vehicles, where an asymmetric source mesh reads as a mistake.
hollowbooleanDrop fully enclosed interior voxels. Smaller files; only do this if nothing will ever cut the model open.
namestringName for the model, used for the output filenames and the entry in the Voxel Studio gallery.
paramsobjectOptions passed through to the mesh model (see model_generate). Rarely needed — most of what they tune is quantized away.
Full input schema
{
"required": [],
"properties": {
"prompt": {
"type": "string",
"title": "prompt",
"description": "Text description for text→voxel, e.g. \"a wooden treasure chest with iron bands\". Detail below roughly one voxel is lost, so describe bold shapes and colours rather than fine surface texture."
},
"imageUrl": {
"type": "string",
"title": "image Url",
"description": "https image URL for image→voxel — usually the better result. Generate a reference with image_generate first (a single object, plain background), then pass its URL here.",
"format": "uri"
},
"modelUrl": {
"type": "string",
"title": "model Url",
"description": "https URL of an existing .glb to voxelize instead of generating a new mesh — e.g. the mesh from model_generate. Skips the model fee, so the call costs only 5 credits.",
"format": "uri"
},
"resolution": {
"type": "number",
"title": "resolution",
"description": "Voxels along the model's longest axis, 8–128 (default 64). 16–32 reads as chunky retro blocks; 64 keeps recognisable detail; 128 is near-sculptural and much heavier."
},
"voxelSizeMeters": {
"type": "number",
"title": "voxel Size Meters",
"description": "Edge length of one voxel in the exported GLB (default 0.05). This sets the model's real-world size: resolution 64 at 0.05 gives a ~3.2 m object. Set it here rather than scaling the GLB after loading."
},
"paletteSize": {
"type": "number",
"title": "palette Size",
"description": "Maximum distinct colours (default 256). Lower values give a flatter, more stylised look."
},
"symmetrical": {
"type": "boolean",
"title": "symmetrical",
"description": "Mirror the model across its X axis. Useful for characters and vehicles, where an asymmetric source mesh reads as a mistake."
},
"hollow": {
"type": "boolean",
"title": "hollow",
"description": "Drop fully enclosed interior voxels. Smaller files; only do this if nothing will ever cut the model open."
},
"name": {
"type": "string",
"title": "name",
"description": "Name for the model, used for the output filenames and the entry in the Voxel Studio gallery."
},
"params": {
"type": "object",
"title": "params",
"description": "Options passed through to the mesh model (see model_generate). Rarely needed — most of what they tune is quantized away."
}
}
}Results, saved runs & billing
Media requests return a job ID. Poll GET /api/v1/jobs/:id until it succeeds or fails; keep the same ID while it is processing. Long chat requests can also return a saved job to poll. Completed outputs are stored in your account, and successful work is billed using your model's current rates.
A multi-step workflow may include separately billed successful actions. If a connection drops, check your saved run before submitting it again.






