status enum Only generate this event status. Omit for a mix.
Generate coherent fake calendar events with bounded durations, attendees, IANA timezones and correct timed or all-day date shapes.
Generated test data for fixtures and development
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
status | enum | allowed: confirmed | tentative | cancelled example: confirmed | Only generate this event status. Omit for a mix. |
allDay | boolean | default: false example: true | False produces timed ISO instants; true produces YYYY-MM-DD dates with exclusive end. |
timezone | string | default: UTC allowed: 1 – 100 example: Europe/Copenhagen | Canonical runtime IANA timezone id (plus UTC), matched case-insensitively and used as display metadata. Numeric offsets are rejected. |
minDurationMinutes | int | allowed: 1 – 43200 example: 60 | Minimum duration. Defaults to 30 timed or 1440 all-day; all-day values must be multiples of 1440. |
maxDurationMinutes | int | allowed: 1 – 43200 example: 180 | Maximum duration. Defaults to 120 timed or 4320 all-day; must be ≥ minDurationMinutes. |
attendeeCount | int | default: 3 allowed: 0 – 20 example: 5 | Exact number of fictional attendees on every event. |
from | date | example: 2026-06-01 | Earliest allowed start, inclusive. With neither bound defaults to today's UTC midnight; with only to derives to minus 90 days. Must resolve to UTC midnight for all-day events (use YYYY-MM-DD). |
to | date | example: 2026-06-30 | Latest allowed end, inclusive for timed events and exclusive for all-day events. With only from derives from plus 90 days. Must resolve to UTC midnight for all-day events (use YYYY-MM-DD). |
status enum Only generate this event status. Omit for a mix.
allDay boolean False produces timed ISO instants; true produces YYYY-MM-DD dates with exclusive end.
timezone string Canonical runtime IANA timezone id (plus UTC), matched case-insensitively and used as display metadata. Numeric offsets are rejected.
minDurationMinutes int Minimum duration. Defaults to 30 timed or 1440 all-day; all-day values must be multiples of 1440.
maxDurationMinutes int Maximum duration. Defaults to 120 timed or 4320 all-day; must be ≥ minDurationMinutes.
attendeeCount int Exact number of fictional attendees on every event.
from date Earliest allowed start, inclusive. With neither bound defaults to today's UTC midnight; with only to derives to minus 90 days. Must resolve to UTC midnight for all-day events (use YYYY-MM-DD).
to date Latest allowed end, inclusive for timed events and exclusive for all-day events. With only from derives from plus 90 days. Must resolve to UTC midnight for all-day events (use YYYY-MM-DD).
| 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: id,title | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: attendees | 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 |
|---|---|---|---|
id | string (UUID v4) | Fictional deterministic-per-seed event id. | 8f76e7de-67dd-49e0-a7c1-43f575cc3381 |
title | string | Short generic event title. | Product planning |
description | string | Fixture description coherent with title. | Review priorities, owners and delivery risks for the next iteration. |
status | string | confirmed | tentative | cancelled. | confirmed |
start | string | ISO instant for timed events, or YYYY-MM-DD for all-day events. | 2026-06-10T09:00:00.000Z |
end | string | Later ISO instant, or exclusive YYYY-MM-DD all-day boundary. | 2026-06-10T10:00:00.000Z |
timezone | string | Canonical IANA display timezone. | Europe/Copenhagen |
allDay | boolean | Whether start/end use all-day date semantics. | false |
location | string | Generic fictional room, call or off-site location. | Video call |
organizer | object | Fictional organizer name and reserved-domain email. | {"name":"Jordan Lee","email":"jordan.lee@example.com"} |
attendees | object[] | Exactly attendeeCount fictional people with reserved-domain email and response. | [{"name":"Alex Kim","email":"alex.kim@example.net","response":"accepted"}] |
id string (UUID v4) Fictional deterministic-per-seed event id.
example: 8f76e7de-67dd-49e0-a7c1-43f575cc3381
title string Short generic event title.
example: Product planning
description string Fixture description coherent with title.
example: Review priorities, owners and delivery risks for the next iteration.
status string confirmed | tentative | cancelled.
example: confirmed
start string ISO instant for timed events, or YYYY-MM-DD for all-day events.
example: 2026-06-10T09:00:00.000Z
end string Later ISO instant, or exclusive YYYY-MM-DD all-day boundary.
example: 2026-06-10T10:00:00.000Z
timezone string Canonical IANA display timezone.
example: Europe/Copenhagen
allDay boolean Whether start/end use all-day date semantics.
example: false
location string Generic fictional room, call or off-site location.
example: Video call
organizer object Fictional organizer name and reserved-domain email.
example: {"name":"Jordan Lee","email":"jordan.lee@example.com"}
attendees object[] Exactly attendeeCount fictional people with reserved-domain email and response.
example: [{"name":"Alex Kim","email":"alex.kim@example.net","response":"accepted"}]
/api/calendar-events?seed=42&count=10 {
"data": [
{
"id": "ab85f422-019c-4ec2-8f1f-1b462add96ac",
"title": "Engineering sync",
"description": "Coordinate implementation details, dependencies and open decisions.",
"status": "confirmed",
"start": "2026-09-27T22:03:11.590Z",
"end": "2026-09-27T23:16:11.590Z",
"timezone": "UTC",
"allDay": false,
"location": "Studio 2",
"organizer": {
"name": "Kent Kohler Jr.",
"email": "kent.kohler.jr@example.com"
},
"attendees": [
{
"name": "Sergio Conroy",
"email": "sergio.conroy@example.com",
"response": "tentative"
},
{
"name": "Isabella Ruecker",
"email": "isabella.ruecker@example.org",
"response": "needsAction"
},
{
"name": "Josiane Reilly MD",
"email": "josiane.reilly.md@example.org",
"response": "tentative"
}
]
},
{
"id": "def349c6-8f36-4bd0-ab5e-920b1420de7a",
"title": "Customer interview",
"description": "Discuss the current workflow, pain points and desired outcomes.",
"status": "tentative",
"start": "2026-07-29T12:30:51.970Z",
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/calendar-events?status=tentative&timezone=Europe%2FCopenhagen&attendeeCount=5&count=20 {
"data": [
{
"id": "ab85f422-019c-4ec2-8f1f-1b462add96ac",
"title": "Engineering sync",
"description": "Coordinate implementation details, dependencies and open decisions.",
"status": "tentative",
"start": "2026-09-27T22:03:11.590Z",
"end": "2026-09-27T23:16:11.590Z",
"timezone": "Europe/Copenhagen",
"allDay": false,
"location": "Conference Room A",
"organizer": {
"name": "Kent Kohler Jr.",
"email": "kent.kohler.jr@example.net"
},
"attendees": [
{
"name": "Sergio Conroy",
"email": "sergio.conroy@example.com",
"response": "accepted"
},
{
"name": "Isabella Ruecker",
"email": "isabella.ruecker@example.net",
"response": "needsAction"
},
{
"name": "Josiane Reilly MD",
"email": "josiane.reilly.md@example.org",
"response": "declined"
},
{
"name": "Billy West",
"email": "billy.west@example.net",
"response": "declined"
},
{
"name": "Candice DuBuque",
"email": "candice.dubuque@example.net",
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/calendar-events?allDay=true&minDurationMinutes=1440&maxDurationMinutes=4320&from=2026-06-01&to=2026-06-30&count=12 {
"data": [
{
"id": "ab85f422-019c-4ec2-8f1f-1b462add96ac",
"title": "Engineering sync",
"description": "Coordinate implementation details, dependencies and open decisions.",
"status": "confirmed",
"start": "2026-06-19",
"end": "2026-06-21",
"timezone": "UTC",
"allDay": true,
"location": "Studio 2",
"organizer": {
"name": "Kent Kohler Jr.",
"email": "kent.kohler.jr@example.com"
},
"attendees": [
{
"name": "Sergio Conroy",
"email": "sergio.conroy@example.com",
"response": "tentative"
},
{
"name": "Isabella Ruecker",
"email": "isabella.ruecker@example.org",
"response": "needsAction"
},
{
"name": "Josiane Reilly MD",
"email": "josiane.reilly.md@example.org",
"response": "tentative"
}
]
},
{
"id": "def349c6-8f36-4bd0-ab5e-920b1420de7a",
"title": "Customer interview",
"description": "Discuss the current workflow, pain points and desired outcomes.",
"status": "tentative",
"start": "2026-06-01",
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} Generates generic calendar-event fixtures for scheduling interfaces. Timed events use the platform's millisecond timestamp profile with start < end. All-day events use calendar YYYY-MM-DD values, with an exclusive end date and durations of whole days. When allDay=true, explicit from/to bounds must resolve to UTC midnight (use YYYY-MM-DD); non-midnight timestamp bounds are deliberately rejected instead of being rounded in UTC or guessed through a timezone.
timezone is matched case-insensitively against the runtime's canonical IANA timezone inventory (plus UTC) and echoed canonically. Fixed numeric offsets such as +01:00 are not IANA zone ids and return 400. Timed values remain absolute UTC instants; the timezone tells a consumer where to display them. For all-day fixtures it remains metadata—the date-only bounds are calendar labels, not instants to DST-convert.
Duration bounds genuinely constrain each event. Timed defaults are 30–120 minutes. With allDay=true, defaults are 1440–4320 minutes (1–3 days), and explicit duration bounds must be whole multiples of 1440. With neither bound, from/to default to a UTC-day-snapped 90-day future window. Supplying exactly one bound derives the other 90 days away. Resolved bounds are echoed in meta.params and constrain both event endpoints.
This is an intentionally generic fixture shape inspired by common calendar APIs. It is not Google Calendar-compatible, has no RRULE support and makes no vendor-schema promise.
start and end are YYYY-MM-DD values, and end is exclusive. A one-day event starting 2026-06-10 therefore ends 2026-06-11.
No. Timed starts and ends are UTC instants; the canonical IANA timezone identifies the display zone. All-day bounds must resolve to UTC midnight (use YYYY-MM-DD) and are not silently DST-converted.
Yes. attendeeCount from 0 through 20 controls the exact length of every event's attendee array.
No. It produces a small generic fixture shape and deliberately makes no recurrence or vendor-compatibility claim.
Uniformly random timestamps from any date range — ISO instant, Unix seconds, date, time and weekday — with an exact weekdays-only mode and seeded results.
Real public holidays for 61 countries, computed from official national rules — list a year, check a date, or get the next upcoming holiday.
Live IANA offsets, DST transitions, local-time ambiguity resolution and exact instant conversion — no guessed wall-clock mappings.
Real calendar facts for any date — weekday, ISO week, day of year, quarter, leap year, days in month, weekend flag and Unix timestamp. Defaults to today.