Skip to main content

Fake Conversation & Chat Data API

MOCK DATA

Bounded fake direct, group and support conversations with valid participant references, chronological messages and exact unread counts.

Generated test data for fixtures and development

Base URL
/api/conversations
Capabilities
1 route Seedable
Last updated
July 29, 2026

GET /api/conversations

Live requestRuns against the public API
No key required
GET/api/conversations?channel=direct&count=5&seed=42

Request parameters

Conversation shape: direct, group or clearly fictional customer support.

Participant count. Defaults to 3, except direct resolves to exactly 2. Group requires at least 3; support requires at least 2.

Minimum messages per conversation (inclusive).

Maximum messages per conversation (inclusive). Must be ≥ minMessages.

Earliest message timestamp. Defaults to 30 days before resolved to.

Latest message timestamp. Defaults to today's UTC boundary.

Advanced response options7 options

How many records to generate (1–100).

Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed).

Return only these fields (comma-separated). Mutually exclusive with 'exclude'.

Return all fields except these (comma-separated).

Response format: json envelope, ndjson (one record per line) or csv.

Pretty-print the JSON response.

Drop the envelope: return the raw array/object without data/meta wrapper.

Response

Example parameters are ready. Send the request to inspect the live response.

Route reference

Code samples Ready-to-copy requests in 4 languages
Choose a code sample language
curl "https://randomapi.dev/api/conversations?channel=direct&count=5&seed=42"
const res = await fetch("https://randomapi.dev/api/conversations?channel=direct&count=5&seed=42");
const { data, meta } = await res.json();
import requests

data = requests.get("https://randomapi.dev/api/conversations?channel=direct&count=5&seed=42").json()["data"]
$json = json_decode(file_get_contents(
  "https://randomapi.dev/api/conversations?channel=direct&count=5&seed=42"
), true);
$data = $json["data"];
Parameters Route-specific request inputs 6
channel enum

Conversation shape: direct, group or clearly fictional customer support.

default: group
allowed: direct | group | support
example: channel=support
participantCount int

Participant count. Defaults to 3, except direct resolves to exactly 2. Group requires at least 3; support requires at least 2.

allowed: 2 – 8
example: participantCount=4
minMessages int

Minimum messages per conversation (inclusive).

default: 3
allowed: 1 – 20
example: minMessages=4
maxMessages int

Maximum messages per conversation (inclusive). Must be ≥ minMessages.

default: 8
allowed: 1 – 20
example: maxMessages=12
from date

Earliest message timestamp. Defaults to 30 days before resolved to.

example: from=2026-01-01
to date

Latest message timestamp. Defaults to today's UTC boundary.

example: to=2026-01-31
Universal parameters Shared response and formatting options 7
count int

How many records to generate (1–100).

default: 10
allowed: 1 – 100
example: count=3
seed int

Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed).

example: seed=42
fields list

Return only these fields (comma-separated). Mutually exclusive with 'exclude'.

example: fields=id,channel
exclude list

Return all fields except these (comma-separated).

example: exclude=unreadCount
format enum

Response format: json envelope, ndjson (one record per line) or csv.

default: json
allowed: json | ndjson | csv
example: format=csv
pretty boolean

Pretty-print the JSON response.

default: false
example: pretty=true
unwrap boolean

Drop the envelope: return the raw array/object without data/meta wrapper.

default: false
example: unwrap=true
Response schema Fields returned in each record 7
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

Documented examples

Build-generated requests and complete responses
3
Direct conversations (automatically two people)
GET /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"
  }
}
Five-person group threads
GET /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"
  }
}
Bounded fictional support threads
GET /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"
  }
}

About this API

Coverage & behavior

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.

Use it for

  • Populate inbox, chat-list and conversation-detail interfaces
  • Test sender joins, unread badges and last-message sorting
  • Exercise direct, multi-person and clearly fictional support layouts

Frequently asked questions

Do message sender IDs resolve to participants?

Yes. Every senderId is selected from that conversation's participant IDs, and the bespoke suite checks all nested references across 100-record samples.

How does participantCount work for direct messages?

Direct conversations always resolve to exactly two participants. Omitting the parameter uses 2; explicitly requesting another count returns a clear 400.

Are support conversations from a real company?

No. The sole support agent is explicitly named and marked as fictional, and every support message is generated demo content.