Build with Material Forge
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/material_generate' \
-H 'Authorization: Bearer $SORCERESS_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"prompt": "<prompt>"
}'Inputs & settings
promptstringRequiredMaterial description (e.g. "rusty iron", "wet cobblestone", "frosted glass").
seamlessbooleanGenerate a seamless tileable texture (default true).
namestringMaterial name for the export package.
propertiesobjectPBR property overrides: baseColor, metallic, roughness (or reflection), normalIntensity, tilingX/tilingY, clearcoat, sheen, ior, transmission, opacity, emissiveColor, emissiveIntensity, aoIntensity, …
deriveobjectMap derivation toggles/strengths: normal, roughness, ao, metallic, emissive (each { enabled, … }).
paramsobjectImage-model params (e.g. { resolution: "1K" }). Affects credit cost.
refImagesarrayOptional reference image URLs.
mapSizenumberDerived map resolution (256–2048, default 1024).
aspectRatiostringUsually 1:1 for materials.
Full input schema
{
"required": [
"prompt"
],
"properties": {
"prompt": {
"type": "string",
"title": "prompt",
"description": "Material description (e.g. \"rusty iron\", \"wet cobblestone\", \"frosted glass\")."
},
"seamless": {
"type": "boolean",
"title": "seamless",
"description": "Generate a seamless tileable texture (default true)."
},
"name": {
"type": "string",
"title": "name",
"description": "Material name for the export package."
},
"properties": {
"type": "object",
"title": "properties",
"description": "PBR property overrides: baseColor, metallic, roughness (or reflection), normalIntensity, tilingX/tilingY, clearcoat, sheen, ior, transmission, opacity, emissiveColor, emissiveIntensity, aoIntensity, …"
},
"derive": {
"type": "object",
"title": "derive",
"description": "Map derivation toggles/strengths: normal, roughness, ao, metallic, emissive (each { enabled, … })."
},
"params": {
"type": "object",
"title": "params",
"description": "Image-model params (e.g. { resolution: \"1K\" }). Affects credit cost."
},
"refImages": {
"type": "array",
"title": "ref Images",
"description": "Optional reference image URLs."
},
"mapSize": {
"type": "number",
"title": "map Size",
"description": "Derived map resolution (256–2048, default 1024)."
},
"aspectRatio": {
"type": "string",
"title": "aspect Ratio",
"description": "Usually 1:1 for materials."
}
}
}Workflow actions
Generate a game-ready PBR material from a text prompt: seamless base color + derived normal/roughness/AO/metallic/emissive maps, editable settings (tiling, bump, roughness/reflection, clearcoat, transmission, …), Three.js createMaterial.js helper, and a downloadable package ZIP. Async: returns a jobId — poll GET /api/v1/jobs/:id until succeeded, then read result.maps / result.material.settings / result.packageUrl / result.threejs.
Material from ImageDerive a full PBR map stack and editable Three.js material settings from an existing base-color image URL. Synchronous / free (no image-generation credits). Returns material.settings, maps, and threejs.createMaterialJs.
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.



