Skip to main content

Fake Support Ticket Data API

MOCK DATA

Generate coherent support tickets with SLA outcomes, valid message participants, assignment filters and exact status/date masks.

Generated test data for fixtures and development

Base URL
/api/support-tickets
Capabilities
1 route Seedable
Last updated
July 29, 2026

GET /api/support-tickets

Live requestRuns against the public API
No key required
GET/api/support-tickets?status=open&priority=urgent&channel=chat&breached=false&count=6&seed=42

Request parameters

Pin new, open, pending, resolved or closed lifecycle state.

Pin priority and its first-response SLA target.

Pin email, chat or web origin.

Require or forbid an assignee. False is valid only for new tickets.

Require the first-response SLA to be breached or met.

Minimum messages, inclusive.

Maximum messages, inclusive; non-new states require at least 2.

Earliest creation time. With only from, to resolves 30 elapsed days later; with neither, defaults 30 UTC days before today.

Latest creation time. With only to, from resolves 30 elapsed days earlier; with neither, defaults to today's UTC end.

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/support-tickets?priority=urgent&channel=chat&breached=false&status=open&count=6&seed=42"
const res = await fetch("https://randomapi.dev/api/support-tickets?priority=urgent&channel=chat&breached=false&status=open&count=6&seed=42");
const { data, meta } = await res.json();
import requests

data = requests.get("https://randomapi.dev/api/support-tickets?priority=urgent&channel=chat&breached=false&status=open&count=6&seed=42").json()["data"]
$json = json_decode(file_get_contents(
  "https://randomapi.dev/api/support-tickets?priority=urgent&channel=chat&breached=false&status=open&count=6&seed=42"
), true);
$data = $json["data"];
Parameters Route-specific request inputs 9
status enum

Pin new, open, pending, resolved or closed lifecycle state.

allowed: new | open | pending | resolved | closed
example: status=pending
priority enum

Pin priority and its first-response SLA target.

allowed: low | normal | high | urgent
example: priority=urgent
channel enum

Pin email, chat or web origin.

allowed: email | chat | web
example: channel=chat
assigned boolean

Require or forbid an assignee. False is valid only for new tickets.

example: assigned=true
breached boolean

Require the first-response SLA to be breached or met.

example: breached=false
minMessages int

Minimum messages, inclusive.

default: 2
allowed: 1 – 8
example: minMessages=3
maxMessages int

Maximum messages, inclusive; non-new states require at least 2.

default: 6
allowed: 1 – 8
example: maxMessages=7
from date

Earliest creation time. With only from, to resolves 30 elapsed days later; with neither, defaults 30 UTC days before today.

example: from=2026-05-01
to date

Latest creation time. With only to, from resolves 30 elapsed days earlier; with neither, defaults to today's UTC end.

example: to=2026-05-31T23:59:59.999Z
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,subject
exclude list

Return all fields except these (comma-separated).

example: exclude=tags
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 15
id string

Distinct fictional ticket ID.

example: tkt_4128abff3900_00

subject string

Synthetic ticket subject.

example: Example checkout issue

status string

new | open | pending | resolved | closed.

example: pending

priority string

low | normal | high | urgent.

example: urgent

channel string

email | chat | web.

example: chat

requester object

Synthetic requester with id, name and reserved-domain email.

example: {"id":"usr_demo","name":"Avery Chen","email":"fixture@example.net"}

assignee object nullable

Fictional support agent, or null for unassigned new tickets.

example: {"id":"agt_demo","name":"Example Support Agent"}

createdAt string (ISO 8601)

Creation time inside from/to.

example: 2026-05-10T08:00:00.000Z

updatedAt string (ISO 8601)

Latest message or lifecycle transition.

example: 2026-05-10T09:00:00.000Z

firstResponseAt string (ISO 8601) nullable

First agent response for non-new tickets.

example: 2026-05-10T08:20:00.000Z

resolvedAt string (ISO 8601) nullable

Present for resolved and closed tickets.

example: null

closedAt string (ISO 8601) nullable

Present only for closed tickets.

example: null

sla object

First-response targetMinutes, dueAt and exact breached verdict.

example: {"type":"firstResponse","targetMinutes":60,"dueAt":"2026-05-10T09:00:00.000Z","breached":false}

messages object[]

One to eight chronological requester/agent messages.

example: [{"id":"msg_demo","senderId":"usr_demo","role":"requester","text":"Could you check this synthetic request?","createdAt":"2026-05-10T08:00:00.000Z"}]

tags string[]

One to three synthetic support tags.

example: ["example","account"]

Documented examples

Build-generated requests and complete responses
3
Urgent SLA-safe chat tickets
GET /api/support-tickets?priority=urgent&channel=chat&breached=false&status=open&count=6&seed=42
{
  "data": [
    {
      "id": "tkt_958016cfb6a5c85e_00",
      "subject": "Example checkout issue",
      "status": "open",
      "priority": "urgent",
      "channel": "chat",
      "requester": {
        "id": "usr_ac58cdd40fb158",
        "name": "Kaylie Ziemann",
        "email": "fixture-63c1d1cf@example.net"
      },
      "assignee": {
        "id": "agt_f8728448a0b56b",
        "name": "Example Support Agent"
      },
      "createdAt": "2026-07-19T23:52:47.748Z",
      "updatedAt": "2026-07-20T01:55:47.748Z",
      "firstResponseAt": "2026-07-20T00:00:47.748Z",
      "resolvedAt": null,
      "closedAt": null,
      "sla": {
        "type": "firstResponse",
        "targetMinutes": 15,
        "dueAt": "2026-07-20T00:07:47.748Z",
        "breached": false
      },
      "messages": [
        {
          "id": "tkt_958016cfb6a5c85e_00_m1",
          "senderId": "usr_ac58cdd40fb158",
          "role": "requester",
          "text": "I need help with this fictional account example.",
          "createdAt": "2026-07-19T23:52:47.748Z"
        },
        {
          "id": "tkt_958016cfb6a5c85e_00_m2",
          "senderId": "agt_f8728448a0b56b",
          "role": "agent",
    …
    "generatedAt": "2026-07-29T08:13:22.000Z"
  }
}
Unassigned new email tickets
GET /api/support-tickets?status=new&assigned=false&channel=email&count=8&seed=17
{
  "data": [
    {
      "id": "tkt_5abf24f73252bc1d_00",
      "subject": "Synthetic account question",
      "status": "new",
      "priority": "high",
      "channel": "email",
      "requester": {
        "id": "usr_360556385bfa67",
        "name": "Miss Mary Hilpert-Welch",
        "email": "fixture-72197c4b@example.net"
      },
      "assignee": null,
      "createdAt": "2026-07-10T04:33:41.102Z",
      "updatedAt": "2026-07-10T05:06:41.102Z",
      "firstResponseAt": null,
      "resolvedAt": null,
      "closedAt": null,
      "sla": {
        "type": "firstResponse",
        "targetMinutes": 60,
        "dueAt": "2026-07-10T05:33:41.102Z",
        "breached": false
      },
      "messages": [
        {
          "id": "tkt_5abf24f73252bc1d_00_m1",
          "senderId": "usr_360556385bfa67",
          "role": "requester",
          "text": "I need help with this fictional account example.",
          "createdAt": "2026-07-10T04:33:41.102Z"
        },
        {
          "id": "tkt_5abf24f73252bc1d_00_m2",
          "senderId": "usr_360556385bfa67",
          "role": "requester",
          "text": "The demo workflow is not behaving as expected.",
          "createdAt": "2026-07-10T04:37:46.055Z"
        },
    …
    "generatedAt": "2026-07-29T08:13:22.000Z"
  }
}
Closed breached tickets in May
GET /api/support-tickets?status=closed&breached=true&from=2026-05-01&to=2026-05-31&count=5&seed=8
{
  "data": [
    {
      "id": "tkt_a0ad10ec49812586_00",
      "subject": "Synthetic account question",
      "status": "closed",
      "priority": "normal",
      "channel": "web",
      "requester": {
        "id": "usr_4a0ce7ed05d644",
        "name": "Morris Ondricka",
        "email": "fixture-18bc8e6c@example.net"
      },
      "assignee": {
        "id": "agt_2ed0e0e37de56f",
        "name": "Example Support Agent"
      },
      "createdAt": "2026-05-10T21:57:16.711Z",
      "updatedAt": "2026-05-11T14:18:16.711Z",
      "firstResponseAt": "2026-05-11T02:53:16.711Z",
      "resolvedAt": "2026-05-11T07:37:16.711Z",
      "closedAt": "2026-05-11T14:18:16.711Z",
      "sla": {
        "type": "firstResponse",
        "targetMinutes": 240,
        "dueAt": "2026-05-11T01:57:16.711Z",
        "breached": true
      },
      "messages": [
        {
          "id": "tkt_a0ad10ec49812586_00_m1",
          "senderId": "usr_4a0ce7ed05d644",
          "role": "requester",
          "text": "The demo workflow is not behaving as expected.",
          "createdAt": "2026-05-10T21:57:16.711Z"
        },
        {
          "id": "tkt_a0ad10ec49812586_00_m2",
          "senderId": "agt_2ed0e0e37de56f",
          "role": "agent",
    …
    "generatedAt": "2026-07-29T08:13:22.000Z"
  }
}

About this API

Coverage & behavior

Generates fictional customer-support tickets for helpdesk inboxes, ticket details and SLA dashboards. Every message sender resolves to the top-level requester or assignee, messages are chronological, and each lifecycle state controls its nullable dates: new tickets have no response, resolved tickets have resolvedAt, and only closed tickets have closedAt.

The SLA is first-response based. Its target derives from priority, dueAt is exact, and breached is computed from the first agent response—or from the ticket's evaluated updatedAt while a new ticket remains unanswered. The breached filter therefore changes real timing, not a detached boolean.

Unassigned fixtures are deliberately limited to status=new; impossible combinations return 400. Names, messages and IDs are synthetic, requester email uses reserved example.net, and the model makes no helpdesk-vendor compatibility claim. Message arrays are capped at eight.

Use it for

  • Populate helpdesk inbox and ticket-detail interfaces
  • Test first-response SLA breach and priority badges
  • Exercise assignment, participant joins and terminal ticket states

Frequently asked questions

Does the SLA breach flag match the response time?

Yes. Responded tickets compare firstResponseAt with sla.dueAt; unanswered new tickets compare their evaluated updatedAt with the same deadline.

Do all message sender IDs resolve?

Yes. Every message sender is exactly the ticket requester or its fictional assignee, and unassigned new tickets contain requester messages only.

Can I generate unassigned resolved tickets?

No. assigned=false is intentionally compatible only with status=new; impossible combinations return a clear 400 instead of inventing an agent response.

Does this match a commercial helpdesk API?

No. It is a compact vendor-neutral fixture model with synthetic identities and reserved-domain email.

Standards & references