channel enum Conversation shape: direct, group or clearly fictional customer support.
Bounded fake direct, group and support conversations with valid participant references, chronological messages and exact unread counts.
Generated test data for fixtures and development
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
channel | enum | default: group allowed: direct | group | support example: support | Conversation shape: direct, group or clearly fictional customer support. |
participantCount | int | allowed: 2 – 8 example: 4 | Participant count. Defaults to 3, except direct resolves to exactly 2. Group requires at least 3; support requires at least 2. |
minMessages | int | default: 3 allowed: 1 – 20 example: 4 | Minimum messages per conversation (inclusive). |
maxMessages | int | default: 8 allowed: 1 – 20 example: 12 | Maximum messages per conversation (inclusive). Must be ≥ minMessages. |
from | date | example: 2026-01-01 | Earliest message timestamp. Defaults to 30 days before resolved to. |
to | date | example: 2026-01-31 | Latest message timestamp. Defaults to today's UTC boundary. |
channel enum Conversation shape: direct, group or clearly fictional customer support.
participantCount int Participant count. Defaults to 3, except direct resolves to exactly 2. Group requires at least 3; support requires at least 2.
minMessages int Minimum messages per conversation (inclusive).
maxMessages int Maximum messages per conversation (inclusive). Must be ≥ minMessages.
from date Earliest message timestamp. Defaults to 30 days before resolved to.
to date Latest message timestamp. Defaults to today's UTC boundary.
| 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,channel | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: unreadCount | 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 | Distinct synthetic conversation ID. | cnv_19a3ef920000 |
channel | string | direct | group | support. | group |
title | string | Synthetic title appropriate to the channel. | Product launch |
participants | object[] | 2–8 participants with stable id, name, avatarUrl and member/support-agent role. | [{"id":"usr_a1","name":"Avery Chen","avatarUrl":"https://randomapi.dev/api/avatars/image?seed=usr_a1","role":"member"}] |
messages | object[] | 1–20 chronological messages with id, valid senderId, text, sentAt and read. | [{"id":"msg_a1","senderId":"usr_a1","text":"Could you review this?","sentAt":"2026-01-10T12:00:00.000Z","read":false}] |
lastMessageAt | string (ISO 8601) | Exactly the sentAt of the final chronological message. | 2026-01-10T12:00:00.000Z |
unreadCount | integer | Exact count of messages whose read field is false. | 1 |
id string Distinct synthetic conversation ID.
example: cnv_19a3ef920000
channel string direct | group | support.
example: group
title string Synthetic title appropriate to the channel.
example: Product launch
participants object[] 2–8 participants with stable id, name, avatarUrl and member/support-agent role.
example: [{"id":"usr_a1","name":"Avery Chen","avatarUrl":"https://randomapi.dev/api/avatars/image?seed=usr_a1","role":"member"}]
messages object[] 1–20 chronological messages with id, valid senderId, text, sentAt and read.
example: [{"id":"msg_a1","senderId":"usr_a1","text":"Could you review this?","sentAt":"2026-01-10T12:00:00.000Z","read":false}]
lastMessageAt string (ISO 8601) Exactly the sentAt of the final chronological message.
example: 2026-01-10T12:00:00.000Z
unreadCount integer Exact count of messages whose read field is false.
example: 1
/api/conversations?channel=direct&count=5&seed=42 {
"data": [
{
"id": "cnv_a958016cfb6a5c850000",
"channel": "direct",
"title": "Kaylie Ziemann & Dr. Alma Marquardt",
"participants": [
{
"id": "usr_eac58cdd40fb00",
"name": "Kaylie Ziemann",
"avatarUrl": "https://randomapi.dev/api/avatars/image?style=initials&seed=cnv_a958016cfb6a5c850000-usr_eac58cdd40fb00&name=Kaylie%20Ziemann",
"role": "member"
},
{
"id": "usr_15863c1d1cff01",
"name": "Dr. Alma Marquardt",
"avatarUrl": "https://randomapi.dev/api/avatars/image?style=initials&seed=cnv_a958016cfb6a5c850000-usr_15863c1d1cff01&name=Dr.%20Alma%20Marquardt",
"role": "member"
}
],
"messages": [
{
"id": "msg_8a0b56b87c243100",
"senderId": "usr_eac58cdd40fb00",
"text": "Atrocitas vitae aegrus viscus aliquid talus certe dapifer audacia sit.",
"sentAt": "2026-07-04T11:49:41.830Z",
"read": true
},
{
"id": "msg_10d14615edf36201",
"senderId": "usr_eac58cdd40fb00",
"text": "Truculenter pax curis recusandae tenax a peior cohors minima defessus delectus.",
"sentAt": "2026-07-07T08:57:26.155Z",
"read": true
},
{
"id": "msg_f11dec8095cf5602",
"senderId": "usr_15863c1d1cff01",
"text": "Aer synagoga inflammatio usque curia aranea cunctatio verumtamen vitiosus decretum deleo tenax.",
"sentAt": "2026-07-13T20:32:37.993Z",
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/conversations?channel=group&participantCount=5&minMessages=6&maxMessages=10&count=4&seed=8 {
"data": [
{
"id": "cnv_dc5a0ad10ec498120000",
"channel": "group",
"title": "Design review",
"participants": [
{
"id": "usr_5864a0ce7ed000",
"name": "Morris Ondricka",
"avatarUrl": "https://randomapi.dev/api/avatars/image?style=initials&seed=cnv_dc5a0ad10ec498120000-usr_5864a0ce7ed000&name=Morris%20Ondricka",
"role": "member"
},
{
"id": "usr_5d64418bc8e601",
"name": "Tina Russel",
"avatarUrl": "https://randomapi.dev/api/avatars/image?style=initials&seed=cnv_dc5a0ad10ec498120000-usr_5d64418bc8e601&name=Tina%20Russel",
"role": "member"
},
{
"id": "usr_c2ed0e0e37de02",
"name": "Priscilla Ruecker",
"avatarUrl": "https://randomapi.dev/api/avatars/image?style=initials&seed=cnv_dc5a0ad10ec498120000-usr_c2ed0e0e37de02&name=Priscilla%20Ruecker",
"role": "member"
},
{
"id": "usr_56feb78dd63403",
"name": "Susan Bode",
"avatarUrl": "https://randomapi.dev/api/avatars/image?style=initials&seed=cnv_dc5a0ad10ec498120000-usr_56feb78dd63403&name=Susan%20Bode",
"role": "member"
},
{
"id": "usr_067d45aaaa8604",
"name": "Dan Wisozk",
"avatarUrl": "https://randomapi.dev/api/avatars/image?style=initials&seed=cnv_dc5a0ad10ec498120000-usr_067d45aaaa8604&name=Dan%20Wisozk",
"role": "member"
}
],
"messages": [
{
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/conversations?channel=support&participantCount=3&from=2026-01-01&to=2026-01-31&count=6&seed=17 {
"data": [
{
"id": "cnv_8755abf24f73252b0000",
"channel": "support",
"title": "Example Support case 2RE2JL",
"participants": [
{
"id": "usr_c1d36055638500",
"name": "Miss Mary Hilpert-Welch",
"avatarUrl": "https://randomapi.dev/api/avatars/image?style=initials&seed=cnv_8755abf24f73252b0000-usr_c1d36055638500&name=Miss%20Mary%20Hilpert-Welch",
"role": "member"
},
{
"id": "usr_bfa6772197c401",
"name": "Penny Koelpin",
"avatarUrl": "https://randomapi.dev/api/avatars/image?style=initials&seed=cnv_8755abf24f73252b0000-usr_bfa6772197c401&name=Penny%20Koelpin",
"role": "member"
},
{
"id": "usr_b91746615d4e02",
"name": "Casey — Example Support (fictional)",
"avatarUrl": "https://randomapi.dev/api/avatars/image?style=initials&seed=cnv_8755abf24f73252b0000-usr_b91746615d4e02&name=Casey%20%E2%80%94%20Example%20Support%20(fictional)",
"role": "support-agent"
}
],
"messages": [
{
"id": "msg_77920f6091bc0300",
"senderId": "usr_bfa6772197c401",
"text": "Quam catena verto ipsa.",
"sentAt": "2026-01-01T09:37:28.727Z",
"read": false
},
{
"id": "msg_45cb54d97aca6f01",
"senderId": "usr_bfa6772197c401",
"text": "Beneficium ducimus adulescens molestiae aqua cito explicabo adeptio deleniti.",
"sentAt": "2026-01-12T21:52:39.646Z",
"read": true
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} Generates bounded messaging fixtures with real relationships between the nested objects: every message sender belongs to participants, message IDs are distinct, timestamps are chronological inside the requested window, and lastMessageAt plus unreadCount are recomputed from the messages rather than invented separately.
Channel rules are explicit. Direct conversations always contain exactly two people; omitting participantCount resolves it to 2, while any other explicit value is a 400. Group conversations require at least three. Support conversations include exactly one participant labelled support-agent, named Example Support (fictional) so the response cannot be mistaken for a real company or ticket transcript.
minMessages and maxMessages cap each payload at 20 messages. from and to default to the 30 days ending at today's UTC boundary and are echoed in meta.params, so the same seed remains stable for the day. Names and all message content are synthetic.
Yes. Every senderId is selected from that conversation's participant IDs, and the bespoke suite checks all nested references across 100-record samples.
Direct conversations always resolve to exactly two participants. Omitting the parameter uses 2; explicitly requesting another count returns a clear 400.
No. The sole support agent is explicitly named and marked as fictional, and every support message is generated demo content.
Complete fake people — name, age-consistent birth date, email, phone, job and address — with working filters for gender, age range and email domain.
Deterministic SVG avatars from any seed string — identicons, initials and abstract shapes. Same seed, same avatar forever; plus ready-to-use avatar URL batches.
Lorem ipsum placeholder text — one paragraph, sentence or word per record, each with a word count, optionally opening with 'Lorem ipsum dolor sit amet'.
Sentiment-coherent fake product reviews — 1–2★ complain, 3★ shrug, 4–5★ rave — with star-rating and date-range filters and full seed determinism.
Generate coherent support tickets with SLA outcomes, valid message participants, assignment filters and exact status/date masks.
MIME message fixtures with real threading headers, valid multipart boundaries, matching transfer encodings and a raw message that actually parses.