level enum Only generate postings at this seniority — pins the salary band of every record. Omit for a realistic mix.
Realistic job postings with level-coherent USD salary ranges — filter by level, department, employment type and remote, and every filter truly works.
Generated test data for fixtures and development
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
level | enum | allowed: junior | mid | senior | lead | principal example: senior | Only generate postings at this seniority — pins the salary band of every record. Omit for a realistic mix. |
department | enum | allowed: engineering | design | product | marketing | sales | finance | hr | operations | support | legal example: engineering | Only generate roles from this department's title pool. Omit for a mix across all 10 departments. |
employmentType | enum | allowed: full-time | part-time | contract | internship example: full-time | Only generate this employment type. 'internship' overrides the level's salary band to $20,000–$45,000. Omit for a mostly full-time mix. |
remote | boolean | example: true | true ⇒ only remote postings; false ⇒ only on-site. Omit for a mix (roughly a third remote). |
level enum Only generate postings at this seniority — pins the salary band of every record. Omit for a realistic mix.
department enum Only generate roles from this department's title pool. Omit for a mix across all 10 departments.
employmentType enum Only generate this employment type. 'internship' overrides the level's salary band to $20,000–$45,000. Omit for a mostly full-time mix.
remote boolean true ⇒ only remote postings; false ⇒ only on-site. Omit for a mix (roughly a third remote).
| 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). |
fields | list | example: title,level | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: currency | Return all fields except these (comma-separated). |
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).
fields list Return only these fields (comma-separated). Mutually exclusive with 'exclude'.
exclude list Return all fields except these (comma-separated).
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 |
|---|---|---|---|
title | string | Role title: a base role from the department's pool with the level's prefix (Junior/Senior/Lead/Principal — mid-level has none). | Senior Backend Engineer |
level | string | junior | mid | senior | lead | principal — always consistent with the title prefix and salary band. | senior |
department | string | The department the role belongs to (one of 10). | engineering |
employmentType | string | full-time | part-time | contract | internship. | full-time |
remote | boolean | Whether the posting is remote. | true |
salaryMin | integer | Lower end of the advertised range — annual USD, a round thousand inside the level's band (internships: $20,000–$45,000). | 128000 |
salaryMax | integer | Upper end of the advertised range — same band, always at least $5,000 above salaryMin. | 152000 |
currency | string | Always "USD". | USD |
title string Role title: a base role from the department's pool with the level's prefix (Junior/Senior/Lead/Principal — mid-level has none).
example: Senior Backend Engineer
level string junior | mid | senior | lead | principal — always consistent with the title prefix and salary band.
example: senior
department string The department the role belongs to (one of 10).
example: engineering
employmentType string full-time | part-time | contract | internship.
example: full-time
remote boolean Whether the posting is remote.
example: true
salaryMin integer Lower end of the advertised range — annual USD, a round thousand inside the level's band (internships: $20,000–$45,000).
example: 128000
salaryMax integer Upper end of the advertised range — same band, always at least $5,000 above salaryMin.
example: 152000
currency string Always "USD".
example: USD
/api/jobs?department=engineering&level=senior&count=5 {
"data": [
{
"title": "Senior Mobile Engineer",
"level": "senior",
"department": "engineering",
"employmentType": "full-time",
"remote": false,
"salaryMin": 129000,
"salaryMax": 150000,
"currency": "USD"
},
{
"title": "Senior Backend Engineer",
"level": "senior",
"department": "engineering",
"employmentType": "full-time",
"remote": false,
"salaryMin": 139000,
"salaryMax": 165000,
"currency": "USD"
},
{
"title": "Senior Frontend Engineer",
"level": "senior",
"department": "engineering",
"employmentType": "part-time",
"remote": false,
"salaryMin": 136000,
"salaryMax": 155000,
"currency": "USD"
},
{
"title": "Senior Machine Learning Engineer",
"level": "senior",
"department": "engineering",
"employmentType": "full-time",
"remote": true,
"salaryMin": 123000,
"salaryMax": 164000,
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/jobs?department=design&employmentType=internship&remote=true&count=3 {
"data": [
{
"title": "Junior UX Researcher",
"level": "junior",
"department": "design",
"employmentType": "internship",
"remote": true,
"salaryMin": 34000,
"salaryMax": 43000,
"currency": "USD"
},
{
"title": "Junior Product Designer",
"level": "junior",
"department": "design",
"employmentType": "internship",
"remote": true,
"salaryMin": 20000,
"salaryMax": 34000,
"currency": "USD"
},
{
"title": "Junior Visual Designer",
"level": "junior",
"department": "design",
"employmentType": "internship",
"remote": true,
"salaryMin": 22000,
"salaryMax": 33000,
"currency": "USD"
}
],
"meta": {
"endpoint": "jobs",
"count": 3,
"seed": 42,
"params": {
"department": "design",
"employmentType": "internship",
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/jobs?department=sales&employmentType=contract&remote=false&count=5 {
"data": [
{
"title": "Account Manager",
"level": "mid",
"department": "sales",
"employmentType": "contract",
"remote": false,
"salaryMin": 101000,
"salaryMax": 110000,
"currency": "USD"
},
{
"title": "Junior Account Executive",
"level": "junior",
"department": "sales",
"employmentType": "contract",
"remote": false,
"salaryMin": 66000,
"salaryMax": 78000,
"currency": "USD"
},
{
"title": "Lead Account Executive",
"level": "lead",
"department": "sales",
"employmentType": "contract",
"remote": false,
"salaryMin": 169000,
"salaryMax": 191000,
"currency": "USD"
},
{
"title": "Junior Sales Engineer",
"level": "junior",
"department": "sales",
"employmentType": "contract",
"remote": false,
"salaryMin": 55000,
"salaryMax": 64000,
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/jobs?seed=42 {
"data": [
{
"title": "Senior Sales Development Representative",
"level": "senior",
"department": "sales",
"employmentType": "full-time",
"remote": false,
"salaryMin": 116000,
"salaryMax": 124000,
"currency": "USD"
},
{
"title": "Junior Brand Manager",
"level": "junior",
"department": "marketing",
"employmentType": "full-time",
"remote": false,
"salaryMin": 59000,
"salaryMax": 70000,
"currency": "USD"
},
{
"title": "Junior Product Owner",
"level": "junior",
"department": "product",
"employmentType": "part-time",
"remote": false,
"salaryMin": 55000,
"salaryMax": 75000,
"currency": "USD"
},
{
"title": "Senior Frontend Engineer",
"level": "senior",
"department": "engineering",
"employmentType": "full-time",
"remote": false,
"salaryMin": 153000,
"salaryMax": 163000,
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} Generates believable job postings for job boards, ATS demos and HR fixtures. Everything is fake, but every record is internally coherent: the title is built from the posting's actual department pool with its level's natural prefix ("Senior Backend Engineer", "Junior UX Researcher", "Lead Account Executive" — mid-level roles carry no prefix), and the salary range always sits inside the level's band.
Salary bands (annual, USD):
salaryMin and salaryMax are round thousands with at least a $5,000 spread, salaryMin is always strictly below salaryMax, and both always stay inside the band.
Every filter genuinely constrains every record:
level pins the seniority — and therefore the salary band. When level is set, the mix never includes internships, so the band holds for all records. Omitted, you get a realistic pyramid (mid and senior most common).department pins the role family: every title comes from that department's pool (10 departments, 70 role titles).employmentType pins full-time / part-time / contract / internship. internship overrides the salary band to $20,000–$45,000 — combining it with an explicit level keeps the level but adds a warning about the override. Omitted, most postings are full-time and internships appear only at junior level.remote keeps every posting remote (true) or on-site (false). Omitted, roughly a third are remote.With a seed the same request returns byte-identical postings forever.
Yes — salaryMin/salaryMax are generated from the level, so a junior range never out-earns a principal range. Fixtures stay believable.
level, department, employmentType and remote — all four filter generation for real; that's contract-tested, not decorative.
USD annual ranges — the currency field says so explicitly in every record.
Complete fake people — name, age-consistent birth date, email, phone, job and address — with working filters for gender, age range and email domain.
Fake companies with locale-aware names, industry-flavored catchphrases, founding years, log-distributed headcounts and safe example.com websites and emails.
Random person names — first, last and full — with a strict gender filter, locale-aware name pools in 8 languages and seed-reproducible output.
Fake account transactions with realistic merchants, weighted statuses and currency-correct amounts — filter by type, status, amount range and date window.