# Texture generator API

A seamless PBR texture set from a description: base colour, normal, height, roughness and metallic at 2048 pixels.

Tool id `texture-generator` on the REST API (`POST https://3dvalley.com/api/v1/jobs`); MCP tool `generate_texture` on https://3dvalley.com/mcp. Paid in credits (1 credit = $0.01), taken when the job starts and given back if it fails. The general rules (keys, idempotency, waiting, webhooks) are in [the API docs](https://3dvalley.com/docs/api).

## Models and prices

| Model | Name | Price | Time | What it is |
|---|---|---|---|---|
| `flux-2-klein-material` (default) | FLUX.2 klein | 2 credits | about 25 s | A 2048-pixel surface from a description that tiles by construction, with its normal, height, roughness and metallic maps. |
| `muse-image-material` | Muse Image | 5 credits | about 55 s | Meta's image model paints the surface, then its edges are joined so it tiles. Realistic at the lowest price. |
| `gpt-image-2-5-material` | GPT Image 2.5 | 8 credits | about 50 s | OpenAI's image model paints the surface at 2048 pixels, then its edges are joined so it tiles. The flattest, most even light of the models tried. |

## Input

| Field | Required | |
|---|---|---|
| `prompt` | yes | The surface: "mossy cobblestones", "brushed steel". |

## Options

| Option | Type | Values | |
|---|---|---|---|
| `seed` | integer | from 0 to 2147483647 | Fixes the randomness, so the same input makes the same result. |

## Output

Files: `base_color`, `normal`, `height`, `roughness`, `metallic`.

## Example

```
curl -X POST https://3dvalley.com/api/v1/jobs \
  -H "Authorization: Bearer $THREEDVALLEY_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Prefer: wait=50" \
  -H "Content-Type: application/json" \
  -d '{"tool":"texture-generator","input":{"prompt":"mossy cobblestones"}}'
```

From an MCP client:

```
generate_texture({"prompt":"mossy cobblestones"})
```

## Limits

- `max_prompt`: 1,000
