# Diffusion-Limited Aggregation — Randomly

> Dendritic crystals, grown one sticky particle at a time. 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.

## `patterns.dla` — Diffusion-Limited Aggregation

Dendritic crystals, grown one sticky particle at a time.

| | |
|---|---|
| **Key** | `patterns.dla` |
| **Module** | `patterns` |
| **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/patterns/dla |
| **API** | `GET https://randomly.cluxnei.dev/api/v1/g/patterns.dla` |

`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 | `880` | `200` – `2048` | Width |
| `height` | int | `800` | `200` – `2048` | Height |
| `seed_shape` | enum | `point` | `point`, `line` | Grow from |
| `particles` | int | `7000` | `200` – `40000` | Particles — Every one of them is walked until it touches, which is the entire cost of the render. The run ends at this count or when the cluster reaches the edge of its lattice, whichever comes first — and the finished cluster is then fitted to the frame, so fewer particles means a chunkier crystal rather than a smaller one. |
| `cell` | int | `2` | `1` – `10` | Lattice — The lattice the crystal grows on, as a divisor of the canvas. A finer lattice grows a cluster with finer branches, and costs a great deal more walking: halving this roughly triples the render. |
| `stickiness` | float | `1` | `0.02` – `1` | Stickiness — The chance a particle freezes when it touches. Below 1 it can work its way into the crevices before committing, which thickens the branches and pushes the fractal dimension towards 2 — frost at one end of this slider, sponge at the other. |
| `glow` | float | `0.05` | `0` – `0.3` | Glow — A wide, faint halo under every particle, added rather than painted. Haloes overlap where the cluster is dense, so the trunk lights up and a lone tip does not. |
| `background` | enum | `ink` | `ink`, `paper`, `palette` | Ground |
| `palette` | enum | `viridis` | `golden`, `analogous`, `complementary`, `triadic`, `split`, `viridis`, `magma`, `mono` | Colour |
| `colours` | int | `7` | `2` – `12` | Palette size |
| `grain` | float | `0.014` | `0` – `0.08` | Grain |

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/patterns.dla?width=880&height=800&seed_shape=point' -H 'Accept: text/plain'
curl -o out.png 'https://randomly.cluxnei.dev/api/v1/g/patterns.dla?width=880&height=800&seed_shape=point&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/patterns/dla)
