Skip to main content

Fake Task & Todo Data API

MOCK DATA

Developer-productivity task fixtures with working status, priority, assignment, due-date and tag filters plus coherent subtasks and blockers.

Generated test data for fixtures and development

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

GET /api/tasks

Live requestRuns against the public API
No key required
GET/api/tasks?status=blocked&priority=urgent&count=5&seed=42

Request parameters

Pin the task state. Omit for a weighted mix.

Pin the priority. Omit for a weighted mix.

true guarantees an assignee object; false guarantees null. Omit for a mix.

Earliest dueDate by UTC calendar day. Defaults to 90 days before today's UTC boundary.

Latest dueDate by UTC calendar day and exact completion as-of cutoff. Defaults to 90 days after today's UTC boundary.

Safe tag forced into every record: 1–24 letters, numbers, hyphens or underscores, starting alphanumeric.

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/tasks?status=blocked&priority=urgent&count=5&seed=42"
const res = await fetch("https://randomapi.dev/api/tasks?status=blocked&priority=urgent&count=5&seed=42");
const { data, meta } = await res.json();
import requests

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

Pin the task state. Omit for a weighted mix.

allowed: todo | inProgress | blocked | completed
example: status=blocked
priority enum

Pin the priority. Omit for a weighted mix.

allowed: low | medium | high | urgent
example: priority=high
assigned boolean

true guarantees an assignee object; false guarantees null. Omit for a mix.

example: assigned=true
from date

Earliest dueDate by UTC calendar day. Defaults to 90 days before today's UTC boundary.

example: from=2026-01-01
to date

Latest dueDate by UTC calendar day and exact completion as-of cutoff. Defaults to 90 days after today's UTC boundary.

example: to=2026-06-30
tag string

Safe tag forced into every record: 1–24 letters, numbers, hyphens or underscores, starting alphanumeric.

allowed: ≤ 24
example: tag=frontend
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,title
exclude list

Return all fields except these (comma-separated).

example: exclude=subtasks
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 12
id string

Distinct synthetic task ID.

example: tsk_91a8fe320000

title string

Synthetic developer-productivity task title.

example: Add contract-test coverage

description string

Short synthetic task description.

example: Cover the remaining validation branches before release.

status string

todo | inProgress | blocked | completed.

example: inProgress

priority string

low | medium | high | urgent.

example: high

assignee object nullable

Synthetic id, name and avatarUrl when assigned; otherwise null.

example: {"id":"usr_a1","name":"Avery Chen","avatarUrl":"https://randomapi.dev/api/avatars/image?seed=usr_a1"}

blocker string nullable

Explicit fictional blocker for blocked tasks only; otherwise null.

example: null

dueDate string (YYYY-MM-DD)

Due date inside the requested inclusive UTC calendar-day window.

example: 2026-04-15

completedAt string (ISO 8601) nullable

Completion time for completed tasks only, between createdAt and resolved to.

example: null

createdAt string (ISO 8601)

Creation time on or before dueDate.

example: 2026-02-10T09:30:00.000Z

tags string[]

1–3 distinct safe tags; includes the requested tag when supplied.

example: ["frontend","testing"]

subtasks object[]

0–5 bounded subtasks with distinct id, title and completed status coherent with the parent.

example: [{"id":"sub_a1","title":"Add range tests","completed":true}]

Documented examples

Build-generated requests and complete responses
3
Urgent blocked work
GET /api/tasks?status=blocked&priority=urgent&count=5&seed=42
{
  "data": [
    {
      "id": "tsk_58016cfb6a5c85ea0000",
      "title": "Ship the analytics dashboard",
      "description": "Calco vinculum ipsum capio demergo aperio adulescens basium animi.",
      "status": "blocked",
      "priority": "urgent",
      "assignee": {
        "id": "usr_10d14615edf3",
        "name": "Milford Purdy Sr.",
        "avatarUrl": "https://randomapi.dev/api/avatars/image?style=initials&seed=tsk_58016cfb6a5c85ea0000-usr_10d14615edf3&name=Milford%20Purdy%20Sr."
      },
      "blocker": "Waiting for a fictional dependency API contract",
      "dueDate": "2026-08-30",
      "completedAt": null,
      "createdAt": "2026-06-18T15:48:34.152Z",
      "tags": [
        "testing",
        "backend"
      ],
      "subtasks": [
        {
          "id": "st_8cdd40fb1500",
          "title": "We need to navigate the wireless COM alarm!",
          "completed": true
        },
        {
          "id": "st_63c1d1cff801",
          "title": "I'll quantify the primary XML system, that should pixel the JBOD monitor!",
          "completed": false
        },
        {
          "id": "st_28448a0b5602",
          "title": "You can't navigate the monitor without backing up the digital JSON transmitter!",
          "completed": false
        },
        {
          "id": "st_b87c24316003",
          "title": "I'll input the mobile IP transmitter, that should hard drive the AI program!",
    …
    "generatedAt": "2026-07-29T08:13:22.000Z"
  }
}
Unassigned frontend todos
GET /api/tasks?status=todo&assigned=false&tag=frontend&count=8&seed=9
{
  "data": [
    {
      "id": "tsk_328b22573e779f630000",
      "title": "Draft the release checklist",
      "description": "Demonstro verumtamen uter allatus cavus ea cras aperiam sub traho nam verecundia.",
      "status": "todo",
      "priority": "medium",
      "assignee": null,
      "blocker": null,
      "dueDate": "2026-05-22",
      "completedAt": null,
      "createdAt": "2026-05-12T15:00:23.610Z",
      "tags": [
        "frontend",
        "backend"
      ],
      "subtasks": [
        {
          "id": "st_31b86a1a9500",
          "title": "Use the back-end RSS panel, then you can hack the solid state port!",
          "completed": false
        },
        {
          "id": "st_6a6409af2e01",
          "title": "You can't bypass the card without hacking the neural PCI transmitter!",
          "completed": false
        },
        {
          "id": "st_4850cde2a202",
          "title": "If we synthesize the card, we can get to the HEX bandwidth through the open-source UTF8 firewall!",
          "completed": false
        },
        {
          "id": "st_308cd05dff03",
          "title": "We need to connect the redundant XSS bus!",
          "completed": false
        }
      ]
    },
    …
    "generatedAt": "2026-07-29T08:13:22.000Z"
  }
}
Completed tasks due in Q1
GET /api/tasks?status=completed&from=2026-01-01&to=2026-03-31&count=6&seed=17
{
  "data": [
    {
      "id": "tsk_abf24f73252bc1d30000",
      "title": "Publish the API changelog",
      "description": "Acceptus coaegresco depromo bellum attonbitus ventito audio temporibus bellicus despecto defendo verbum animadverto.",
      "status": "completed",
      "priority": "medium",
      "assignee": {
        "id": "usr_91746615d4e9",
        "name": "Miss Ana Armstrong",
        "avatarUrl": "https://randomapi.dev/api/avatars/image?style=initials&seed=tsk_abf24f73252bc1d30000-usr_91746615d4e9&name=Miss%20Ana%20Armstrong"
      },
      "blocker": null,
      "dueDate": "2026-02-12",
      "completedAt": "2025-12-13T04:59:32.912Z",
      "createdAt": "2025-10-19T23:23:19.951Z",
      "tags": [
        "frontend",
        "api"
      ],
      "subtasks": [
        {
          "id": "st_0556385bfa00",
          "title": "Try to override the HTTP program, maybe it will bypass the haptic bandwidth!",
          "completed": true
        },
        {
          "id": "st_6772197c4b01",
          "title": "Try to bypass the EXE matrix, maybe it will compress the auxiliary bandwidth!",
          "completed": true
        }
      ]
    },
    {
      "id": "tsk_7eea1d421a411bb20001",
      "title": "Publish the API changelog",
      "description": "Tenetur timor ipsam subvenio corona studio spiculum victoria dolore.",
      "status": "completed",
      "priority": "high",
    …
    "generatedAt": "2026-07-29T08:13:22.000Z"
  }
}

About this API

Coverage & behavior

Generates bounded task-board fixtures for product and engineering interfaces. It lives in Text & Content because its primary payload is authored task content—titles, descriptions, tags and subtask copy—rather than a factual developer registry.

Status is structural, not cosmetic. Completed tasks alone have completedAt, and all of their subtasks are done. Todo tasks have no completed subtasks. Blocked tasks alone carry a non-null, explicitly fictional blocker; in-progress tasks may contain a mix. Every task has 0–5 bounded subtasks with distinct IDs.

assigned=true|false pins whether assignee is an object or null. A supplied safe tag appears in every result exactly as requested. from and to define inclusive UTC calendar-day bounds for dueDate, default to 90 days either side of today's UTC boundary, and are echoed in meta.params; timestamp inputs are normalized to their UTC calendar day, while the exact resolved to remains the deterministic as-of cutoff for completion timestamps.

Use it for

  • Populate kanban boards, task lists and project dashboards
  • Test status, blocker, assignee and priority UI branches
  • Build reproducible due-date and subtask fixtures for automated tests

Frequently asked questions

Do completed tasks have coherent subtasks?

Yes. Every subtask on a completed task is done, while todo tasks have none done. Other active states may contain a bounded mix.

Can I force assigned or unassigned tasks?

Yes. assigned=true guarantees an assignee object; assigned=false guarantees null. Omitting it produces a mix.

How is a blocked task represented?

Only status=blocked records carry a non-null blocker, and its wording is explicitly fictional demo content.