# Strata — Randomly

> Band heights from a Dirichlet draw, colours walking a palette. One of 63 generators at [Randomly](https://randomly.cluxnei.dev), a library of random generators seeded from verifiable real-world entropy. Free HTTP API, no key, no signup.

## `images.strata` — Strata

Band heights from a Dirichlet draw, colours walking a palette.

| | |
|---|---|
| **Key** | `images.strata` |
| **Module** | `images` |
| **Version** | `1` — a permalink carries this, and a replay against a different version returns `409` rather than something else |
| **Formats** | `application/json`, `text/plain`, `image/png` |
| **Studio** | https://randomly.cluxnei.dev/g/images/strata |
| **API** | `GET https://randomly.cluxnei.dev/api/v1/g/images.strata` |

`value` is a **render spec** — algorithm, parameters, palette and a render key — not pixels. Ask for `format=png` to get the image.

| Parameter | Type | Default | Accepts | What it does |
|---|---|---|---|---|
| `width` | int | `1000` | `256` – `2048` | Width |
| `height` | int | `1300` | `256` – `2048` | Height |
| `bands` | int | `22` | `2` – `70` | Bands |
| `concentration` | float | `0.85` | `0.15` – `6` | Dirichlet α — Below 1, a few bands take almost everything and the rest are hairlines. At 1 the heights are as unstructured as heights can be. Above 3 they all converge on the same thickness, which is a colour chart rather than a cliff. |
| `roughness` | float | `0.05` | `0` – `0.3` | Boundary wander — How far a boundary strays from its nominal height, as a fraction of the canvas. Zero draws a bar chart; this is the single control that makes it rock. |
| `frequency` | float | `2.6` | `0.3` – `12` | Wander scale — How many undulations fit across the canvas. |
| `octaves` | int | `4` | `1` – `7` | Boundary detail — Octaves in the noise displacing each boundary. One is a smooth wave; more adds the fine crumbling of a real edge. |
| `tilt` | float | `0.05` | `0` – `0.35` | Tilt — A linear slope added to each boundary, drawn independently per band — so the stack shears the way tilted bedding does. |
| `shade` | float | `0.07` | `-0.25` – `0.25` | Within-band shading — How far along the palette a band travels between its own top and bottom. Flat fills read as coloured strips; a gradient reads as a surface with light on it. |
| `walk` | float | `0.11` | `0.01` – `0.5` | Colour step — How far the colour moves between one band and the next. Small steps keep neighbouring layers related, which is what makes the stack read as one formation. |
| `background` | enum | `ink` | `ink`, `ground`, `paper`, `palette` | Ground |
| `palette` | enum | `magma` | `golden`, `analogous`, `complementary`, `triadic`, `split`, `viridis`, `magma`, `mono` | Colour |
| `colours` | int | `8` | `2` – `12` | Palette size |
| `grain` | float | `0.02` | `0` – `0.1` | Grain — Film grain over the finished render. Strata want more of it than most things here — flat coloured areas are exactly where 8-bit output shows its seams. |

Out-of-range numbers are **clamped, not rejected**, so a request never fails for being
ambitious — but it may not do what you meant. Unknown keys are dropped and missing ones
fall back to the defaults above.

```bash
curl -s 'https://randomly.cluxnei.dev/api/v1/g/images.strata?width=1000&height=1300&bands=22' -H 'Accept: text/plain'
curl -o out.png 'https://randomly.cluxnei.dev/api/v1/g/images.strata?width=1000&height=1300&bands=22&format=png'
```

## The receipt

Every result carries one, naming the physical source of the randomness and linking to the
third party's own record of it:

```json
"receipt": {
  "source": "seismic",
  "source_label": "USGS Seismic Feed",
  "class": "C",
  "caveat": "Carries only tens of bits of genuine surprise. Always mixed with the OS CSPRNG.",
  "narrative": "A magnitude 3.6 earthquake, 67 km N of Culebra, Puerto Rico, 39.6 km down — 52 minutes ago.",
  "proof_url": "https://earthquake.usgs.gov/earthquakes/eventpage/us7000th33",
  "mixed_with_csprng": true,
  "degraded": false
}
```

Pick the source with `?source=`, or leave it at the default `auto`:

- **Class A** (Cryptographic) — `csprng`, `anu-qrng`, `random-org`
- **Class B** (Public beacon) — `nist-beacon`, `drand`, `bitcoin`. Published openly — anyone can look this value up after the fact.
- **Class C** (Observational) — `seismic`, `space-weather`, `atmosphere`, `iss`. Carries only tens of bits of genuine surprise. Always mixed with the OS CSPRNG.

## More

- [The full API contract](https://randomly.cluxnei.dev/api.md)
- [Everything in one file](https://randomly.cluxnei.dev/llms-full.txt)
- [The catalogue as JSON](https://randomly.cluxnei.dev/api/v1/generators)
- [This generator in the browser](https://randomly.cluxnei.dev/g/images/strata)
