# Identifiers — Randomly

> UUID v4 and v7, ULID, NanoID — and what each one gives away. 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.

## `numbers.uuid` — Identifiers

UUID v4 and v7, ULID, NanoID — and what each one gives away.

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

`value` is the result itself — one value, or a list of them; `display` is the same thing rendered as a single human-readable string.

**Sensitive.** This generator produces secrets, so it is given no token and no shareable
permalink, and `/api/v1/replay` returns `404` for it. A secret with a replayable URL is
not a secret. Nothing is logged or stored either way — there is no database.

| Parameter | Type | Default | Accepts | What it does |
|---|---|---|---|---|
| `flavour` | enum | `v4` | `v4`, `v7`, `ulid`, `nanoid` | Flavour |
| `count` | int | `8` | `1` – `200` | How many |
| `moment` | string | `2026-01-01T00:00:00Z` | up to 32 characters | Clock (v7 and ULID) — These two carry a timestamp. It is a field rather than the real clock so the same seed keeps producing the same identifiers. |
| `spread` | int | `250` | `1` – `60000` | Milliseconds between them — Successive identifiers advance the clock by a random amount up to this, which is what makes the ordering visible. |
| `size` | int | `21` | `8` – `64` | NanoID length |
| `uppercase` | bool | `false` | `true`, `false` | Uppercase hex — RFC 9562 says to emit lowercase and to accept either. |

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/numbers.uuid?flavour=v4&count=8&moment=2026-01-01T00%3A00%3A00Z' -H 'Accept: text/plain'
```

## 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/numbers/uuid)
