Templates

Templates are pre-built schemas for common application types. Pass a template name to the generate endpoint and get back a fully relational dataset with sensible defaults. Use the scale parameter to multiply the default record counts.

Scale Parameter

Every template has default record counts per table. The scale parameter multiplies all counts proportionally.

Scale
0.1
Effect
10% of default counts (minimum 1 per table)
Use Case
Quick smoke test
Scale
1
Effect
Default counts
Use Case
Development and unit tests
Scale
5
Effect
5x default counts
Use Case
Integration testing
Scale
50
Effect
50x default counts
Use Case
Performance and load testing
Scale
100
Effect
Maximum multiplier
Use Case
Stress testing (subject to per-request limits)

ecommerce 5 tables

A full e-commerce dataset with customers, products, orders, line items, and reviews. All foreign keys are valid, order totals are consistent with line item prices, and dates are chronologically ordered.

Tables and Default Counts

Table
customers
Count
100
Columns
id, first_name, last_name, email, phone, address, city, country, postal_code, avatar_url, created_at, updated_at, is_active
Table
products
Count
50
Columns
id, name, description, category, price, sku, image_url, stock_quantity, created_at, updated_at
Table
orders
Count
300
Columns
id, order_number, customer_id (ref), status, total, currency, payment_method, ordered_at, updated_at
Table
order_items
Count
900
Columns
id, order_id (ref), product_id (ref), quantity, unit_price
Table
reviews
Count
200
Columns
id, customer_id (ref), product_id (ref), rating, title, body, created_at

Example Request

POST /api/v1/generate
Content-Type: application/json
Authorization: Bearer mh_7a1c3b24f8d4e6a9b2c1d3e5f7a8b9c0

{
  "template": "ecommerce",
  "scale": 1,
  "format": "json"
}

Example Response (truncated)

{
  "data": {
    "customers": [
      {
        "id": "c1a2b3d4-...",
        "first_name": "Amara",
        "last_name": "Okafor",
        "email": "amara.okafor@example.com",
        "phone": "+1 (555) 234-5678",
        "address": "742 Evergreen Terrace",
        "city": "Portland",
        "country": "US",
        "postal_code": "97201",
        "avatar_url": "https://api.dicebear.com/7.x/avataaars/svg?seed=291",
        "created_at": "2024-08-12T14:30:00Z",
        "updated_at": "2025-01-10T09:15:00Z",
        "is_active": true
      }
    ],
    "products": [
      {
        "id": "p5e6f7a8-...",
        "name": "Ergonomic Mesh Chair",
        "description": "Premium ergonomic office chair with adjustable lumbar support.",
        "category": "Electronics",
        "price": 189.50,
        "sku": "SKU-8A3F2C",
        "image_url": "https://picsum.photos/640/480?random=7",
        "stock_quantity": 234,
        "created_at": "2024-09-11T00:00:00Z",
        "updated_at": "2025-08-20T00:00:00Z"
      }
    ],
    "orders": [
      {
        "id": "o9b0c1d2-...",
        "order_number": "ORD-1001",
        "customer_id": "c1a2b3d4-...",
        "status": "delivered",
        "total": 264.49,
        "currency": "USD",
        "payment_method": "credit_card",
        "ordered_at": "2025-01-15T10:22:00Z",
        "updated_at": "2025-01-20T14:30:00Z"
      }
    ],
    "order_items": [
      {
        "id": "i3e4f5a6-...",
        "order_id": "o9b0c1d2-...",
        "product_id": "p5e6f7a8-...",
        "quantity": 1,
        "unit_price": 189.50
      }
    ]
  },
  "meta": {
    "tables": 5,
    "total_records": 1550,
    "format": "json",
    "seed": 5519832,
    "generation_time_ms": 412
  }
}

blog 5 tables

A content management dataset with authors, posts (including markdown bodies and slugs), comments, tags, and a many-to-many join table for post-tag relationships.

Tables and Default Counts

Table
authors
Count
30
Columns
id, country, first_name, last_name, email, username, avatar_url, bio, created_at
Table
posts
Count
150
Columns
id, author_id (ref), title, slug, excerpt, content (markdown), featured_image, status, created_at, published_at, updated_at
Table
comments
Count
600
Columns
id, post_id (ref), commenter_name, commenter_email, body, is_approved, created_at
Table
tags
Count
20
Columns
id, name, slug
Table
post_tags
Count
400
Columns
id, post_id (ref), tag_id (ref)

Example Request

POST /api/v1/generate
Content-Type: application/json
Authorization: Bearer mh_7a1c3b24f8d4e6a9b2c1d3e5f7a8b9c0

{
  "template": "blog",
  "scale": 1,
  "format": "json"
}

Example Response (truncated)

{
  "data": {
    "authors": [
      {
        "id": "a1b2c3d4-...",
        "country": "US",
        "first_name": "Priya",
        "last_name": "Sharma",
        "email": "priya.sharma@techblog.io",
        "username": "psharma",
        "avatar_url": "https://api.dicebear.com/7.x/avataaars/svg?seed=482",
        "bio": "Staff engineer writing about distributed systems and developer tooling.",
        "created_at": "2023-04-12T00:00:00Z"
      }
    ],
    "posts": [
      {
        "id": "e5f6a7b8-...",
        "author_id": "a1b2c3d4-...",
        "title": "Understanding Event-Driven Architecture",
        "slug": "understanding-event-driven-architecture",
        "excerpt": "Event-driven architecture decouples producers from consumers.",
        "content": "## Introduction\n\nEvent-driven architecture decouples producers...",
        "featured_image": "https://picsum.photos/800/400?random=3",
        "status": "published",
        "created_at": "2025-09-20T00:00:00Z",
        "published_at": "2025-11-03T09:14:00Z",
        "updated_at": "2025-11-10T00:00:00Z"
      }
    ],
    "comments": [
      {
        "id": "c9d0e1f2-...",
        "post_id": "e5f6a7b8-...",
        "commenter_name": "Liam Chen",
        "commenter_email": "liam.chen@example.com",
        "body": "Great writeup! The section on event sourcing really clicked for me.",
        "is_approved": true,
        "created_at": "2025-11-04T12:03:00Z"
      }
    ],
    "tags": [
      { "id": "t1a2b3c4-...", "name": "Architecture", "slug": "architecture" }
    ],
    "post_tags": [
      { "id": "j1k2l3m4-...", "post_id": "e5f6a7b8-...", "tag_id": "t1a2b3c4-..." }
    ]
  },
  "meta": {
    "tables": 5,
    "total_records": 1200,
    "format": "json",
    "seed": 3318274,
    "generation_time_ms": 287
  }
}

saas 4 tables

A multi-tenant SaaS dataset with organizations, members scoped to organizations, subscriptions, and invoices with realistic billing data and timestamps.

Tables and Default Counts

Table
organizations
Count
20
Columns
id, name, slug, domain, country, created_at, updated_at
Table
members
Count
100
Columns
id, org_id (ref), first_name, last_name, email, role, job_title, avatar_url, invited_at
Table
subscriptions
Count
20
Columns
id, org_id (ref), plan, status, interval, amount, currency, current_period_start, current_period_end, trial_end, started_at, updated_at
Table
invoices
Count
120
Columns
id, invoice_number, subscription_id (ref), amount, currency, status, issued_at, due_date

Example Request

POST /api/v1/generate
Content-Type: application/json
Authorization: Bearer mh_7a1c3b24f8d4e6a9b2c1d3e5f7a8b9c0

{
  "template": "saas",
  "scale": 2,
  "format": "json"
}

Example Response (truncated)

{
  "data": {
    "organizations": [
      {
        "id": "org_1a2b3c-...",
        "name": "Meridian Systems",
        "slug": "meridian-systems",
        "domain": "meridian.systems",
        "country": "US",
        "created_at": "2023-06-15T00:00:00Z",
        "updated_at": "2025-09-10T00:00:00Z"
      }
    ],
    "members": [
      {
        "id": "usr_4d5e6f-...",
        "org_id": "org_1a2b3c-...",
        "first_name": "Jordan",
        "last_name": "Rivera",
        "email": "jordan@meridian.systems",
        "role": "admin",
        "job_title": "VP of Engineering",
        "avatar_url": "https://api.dicebear.com/7.x/avataaars/svg?seed=194",
        "invited_at": "2023-06-15T10:00:00Z"
      }
    ],
    "subscriptions": [
      {
        "id": "sub_7a8b9c-...",
        "org_id": "org_1a2b3c-...",
        "plan": "enterprise",
        "status": "active",
        "interval": "yearly",
        "amount": "1990.00",
        "currency": "USD",
        "current_period_start": "2026-03-01T00:00:00Z",
        "current_period_end": "2026-04-15T00:00:00Z",
        "started_at": "2024-06-15T00:00:00Z",
        "updated_at": "2026-03-01T00:00:00Z"
      }
    ],
    "invoices": [
      {
        "id": "inv_d0e1f2-...",
        "invoice_number": "INV-1001",
        "subscription_id": "sub_7a8b9c-...",
        "amount": "1990.00",
        "currency": "USD",
        "status": "paid",
        "issued_at": "2025-12-01T00:00:00Z",
        "due_date": "2026-04-20T00:00:00Z"
      }
    ]
  },
  "meta": {
    "tables": 4,
    "total_records": 520,
    "format": "json",
    "seed": 6617493,
    "generation_time_ms": 356
  }
}

social 5 tables

A social network dataset with user profiles, posts, likes, follow relationships, and direct messages. Follows and likes reference valid users and posts.

Tables and Default Counts

Table
users
Count
150
Columns
id, country, username, first_name, last_name, email, avatar_url, display_name, bio, is_verified, created_at, updated_at
Table
posts
Count
600
Columns
id, user_id (ref), content, hashtag, created_at
Table
likes
Count
3000
Columns
id, user_id (ref), post_id (ref), created_at
Table
follows
Count
2000
Columns
id, follower_id (ref users), following_id (ref users), created_at
Table
messages
Count
1000
Columns
id, sender_id (ref), receiver_id (ref), body, is_read, sent_at

Example Request

POST /api/v1/generate
Content-Type: application/json
Authorization: Bearer mh_7a1c3b24f8d4e6a9b2c1d3e5f7a8b9c0

{
  "template": "social",
  "scale": 0.5,
  "format": "json"
}

Example Response (truncated)

{
  "data": {
    "users": [
      {
        "id": "u1a2b3c4-...",
        "country": "US",
        "username": "liam_chen",
        "first_name": "Liam",
        "last_name": "Chen",
        "email": "liam.chen@example.com",
        "avatar_url": "https://api.dicebear.com/7.x/avataaars/svg?seed=738",
        "display_name": "Liam Chen",
        "bio": "Full-stack dev. Coffee enthusiast. Open source contributor.",
        "is_verified": false,
        "created_at": "2024-03-22T10:00:00Z",
        "updated_at": "2025-08-01T00:00:00Z"
      }
    ],
    "posts": [
      {
        "id": "p5e6f7a8-...",
        "user_id": "u1a2b3c4-...",
        "content": "Just shipped a new feature using MockHero for all our test data. Game changer.",
        "hashtag": "#devtools",
        "created_at": "2025-12-18T16:45:00Z"
      }
    ],
    "likes": [
      { "id": "l9b0c1d2-...", "user_id": "u3e4f5a6-...", "post_id": "p5e6f7a8-...", "created_at": "2025-12-18T17:02:00Z" }
    ],
    "follows": [
      { "id": "f7a8b9c0-...", "follower_id": "u3e4f5a6-...", "following_id": "u1a2b3c4-...", "created_at": "2024-05-10T00:00:00Z" }
    ],
    "messages": [
      {
        "id": "m1d2e3f4-...",
        "sender_id": "u3e4f5a6-...",
        "receiver_id": "u1a2b3c4-...",
        "body": "Hey! Loved your post about MockHero. Want to collaborate?",
        "is_read": true,
        "sent_at": "2025-12-18T18:30:00Z"
      }
    ]
  },
  "meta": {
    "tables": 5,
    "total_records": 3375,
    "format": "json",
    "seed": 9912847,
    "generation_time_ms": 298
  }
}