# Identicon — Randomly

> A deterministic avatar from a hash. Same input, same face. 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.identicon` — Identicon

A deterministic avatar from a hash. Same input, same face.

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

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

**Draws no entropy.** The output is a pure function of what you pass in, so no source is
consulted, nothing is spent waiting on a beacon, and the receipt says exactly that
instead of crediting a beacon that changed nothing.

| Parameter | Type | Default | Accepts | What it does |
|---|---|---|---|---|
| `input` | string | `randomly` | up to 96 characters | Input — Anything at all — a username, an email, a commit hash. This, and nothing else, decides what you get. |
| `size` | int | `512` | `128` – `1024` | Size |
| `cells` | int | `5` | `3` – `9` | Grid — A 5×5 grid mirrored down the middle needs only 15 bits, which is why identicons were 5×5 long before anyone had bits to spare. |
| `shape` | enum | `auto` | `auto`, `square`, `circle`, `triangle`, `diamond` | Cell shape |
| `two_tone` | bool | `true` | `true`, `false` | Two tone — A second hue, 50° along, for roughly half the live cells. |
| `padding` | float | `0.14` | `0` – `0.35` | Padding |
| `gap` | float | `0.06` | `0` – `0.4` | Cell gap |
| `background` | enum | `tint` | `tint`, `paper`, `ink` | Ground |
| `grain` | float | `0.012` | `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/images.identicon?input=randomly&size=512&cells=5' -H 'Accept: text/plain'
curl -o out.png 'https://randomly.cluxnei.dev/api/v1/g/images.identicon?input=randomly&size=512&cells=5&format=png'
```

## The receipt

This generator draws no randomness, so its receipt says so rather than naming a source
that contributed nothing. Every generator that *does* draw randomness returns a receipt
shaped like this:

```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
}
```

`?source=` is accepted and ignored here — there is nothing for a source to change. The
keys below apply to the other generators:

- **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/identicon)
