min float Lower bound, inclusive (between -1e9 and 1e9). Must be ≤ max. With type=int the effective lower bound is ceil(min).
Random integers or floats in any range — control decimal precision, draw guaranteed-unique values, and pin a seed for reproducible sequences.
Generated test data for fixtures and development
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
min | float | default: 0 allowed: -1000000000 – 1000000000 example: 1 | Lower bound, inclusive (between -1e9 and 1e9). Must be ≤ max. With type=int the effective lower bound is ceil(min). |
max | float | default: 100 allowed: -1000000000 – 1000000000 example: 50 | Upper bound, inclusive (between -1e9 and 1e9). Must be ≥ min. With type=int the effective upper bound is floor(max). |
type | enum | default: int allowed: int | float example: int | int → whole numbers; float → decimals rounded to `precision` places. |
precision | int | allowed: 0 – 10 example: 4 | Decimal places for type=float values (0–10). Defaults to 2. Ignored — with a warning — when type=int. |
unique | boolean | default: false example: true | Guarantee all returned values are distinct (type=int only). Values come from a seeded affine permutation of the integer range, so they are evenly spread, not clustered-random, and seed-stable. The range must hold at least `count` integers; combining unique with type=float is a 400 (floats are effectively always unique). |
min float Lower bound, inclusive (between -1e9 and 1e9). Must be ≤ max. With type=int the effective lower bound is ceil(min).
max float Upper bound, inclusive (between -1e9 and 1e9). Must be ≥ min. With type=int the effective upper bound is floor(max).
type enum int → whole numbers; float → decimals rounded to `precision` places.
precision int Decimal places for type=float values (0–10). Defaults to 2. Ignored — with a warning — when type=int.
unique boolean Guarantee all returned values are distinct (type=int only). Values come from a seeded affine permutation of the integer range, so they are evenly spread, not clustered-random, and seed-stable. The range must hold at least `count` integers; combining unique with type=float is a 400 (floats are effectively always unique).
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
count | int | default: 10 allowed: 1 – 100 example: 3 | How many records to generate (1–100). |
seed | int | example: 42 | Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). |
format | enum | default: json allowed: json | ndjson | csv example: csv | Response format: json envelope, ndjson (one record per line) or csv. |
pretty | boolean | default: false example: true | Pretty-print the JSON response. |
unwrap | boolean | default: false example: true | Drop the envelope: return the raw array/object without data/meta wrapper. |
count int How many records to generate (1–100).
seed int Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed).
format enum Response format: json envelope, ndjson (one record per line) or csv.
pretty boolean Pretty-print the JSON response.
unwrap boolean Drop the envelope: return the raw array/object without data/meta wrapper.
| Field | Type | Description | Example |
|---|---|---|---|
value | number | The random number: a whole number for type=int, a decimal rounded to `precision` places for type=float. Always within [min, max]. | 42 |
value number The random number: a whole number for type=int, a decimal rounded to `precision` places for type=float. Always within [min, max].
example: 42
/api/numbers?count=10&seed=42 {
"data": [
{
"value": 48
},
{
"value": 3
},
{
"value": 86
},
{
"value": 15
},
{
"value": 84
},
{
"value": 1
},
{
"value": 8
},
{
"value": 84
},
{
"value": 45
},
{
"value": 97
}
],
"meta": {
"endpoint": "numbers",
"count": 10,
"seed": 42,
"params": {
"min": 0,
"max": 100,
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/numbers?min=1&max=6&count=3 {
"data": [
{
"value": 3
},
{
"value": 1
},
{
"value": 6
}
],
"meta": {
"endpoint": "numbers",
"count": 3,
"seed": 42,
"params": {
"min": 1,
"max": 6,
"type": "int",
"unique": false
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/numbers?type=float&min=0&max=1&precision=4&count=5 {
"data": [
{
"value": 0.4778
},
{
"value": 0.0395
},
{
"value": 0.857
},
{
"value": 0.1544
},
{
"value": 0.8337
}
],
"meta": {
"endpoint": "numbers",
"count": 5,
"seed": 42,
"params": {
"min": 0,
"max": 1,
"type": "float",
"precision": 4,
"unique": false
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/numbers?unique=true&min=1&max=50&count=10&seed=7 {
"data": [
{
"value": 43
},
{
"value": 10
},
{
"value": 27
},
{
"value": 44
},
{
"value": 11
},
{
"value": 28
},
{
"value": 45
},
{
"value": 12
},
{
"value": 29
},
{
"value": 46
}
],
"meta": {
"endpoint": "numbers",
"count": 10,
"seed": 7,
"params": {
"min": 1,
"max": 50,
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} Draws random numbers from [min, max] — both bounds inclusive. Two flavors:
type=int (the default) returns whole numbers. Fractional bounds tighten naturally: min=1.2&max=4.8 draws from 2–4 (ceil(min)…floor(max)), and a range containing no whole number at all (say min=1.2&max=1.8) is an explicit 400 — never a silent guess.type=float returns decimals rounded to precision places (default 2, up to 10). precision is meaningless for integers, so setting it with type=int adds a warning and is ignored.Unique draws. unique=true (integers only) guarantees no repeats — sampling without replacement for lottery numbers, quiz questions or shuffled IDs. Values come from a seeded affine permutation of the integer range, so they are evenly spread across the whole range, not clustered-random, and the same seed reproduces the exact same sequence forever. The honesty rules: a range holding fewer integers than count is a 400 stating both numbers, and unique with type=float is a 400 too — floats are effectively always unique, so the flag would only mislead.
Every response echoes the resolved parameters (including the applied precision default) in meta.params.
unique=true guarantees the returned set has no duplicates within one response.
No — they come from a fast seeded PRNG built for reproducible test data. Don't use them for secrets; for key-shaped values see the tokens endpoint.
type=float with precision fixes the decimal places; type=int gives whole numbers in [min, max].
Roll dice in standard NdS+M notation (2d6+3, d20, 4d8-2) — get each die result, the modifier and the total, with seedable, reproducible rolls.
Weighted random picks from your own options, unbiased list shuffles and tunable coin flips — every decision reproducible with a seed.
Generate seed-reproducible UUIDs and compact IDs, or inspect any canonical UUID's RFC 9562 variant, version and UUIDv7 timestamp fields.
Clearly fake API keys, JWTs and hex/base64 secrets — structurally valid enough to exercise parsers and middleware, cryptographically meaningless by design.
Seeded draws from normal, log-normal, exponential, Poisson, binomial, Pareto and Zipf distributions, with empirical and theoretical statistics.