api-response-mocker

dkyazzentwatwa's avatarfrom dkyazzentwatwa

Generate realistic mock API responses with fake data. Use for testing, prototyping, or creating sample data for frontend development.

⭐1stars🔀0forks📁View on GitHub🕐Updated Dec 17, 2025

When & Why to Use This Skill

The API Response Mocker is a robust Claude skill designed to streamline the development lifecycle by generating realistic, schema-based mock API responses. Leveraging the Faker library, it allows developers to define complex data structures—including nested objects, arrays, and relational data—to produce high-quality JSON or XML outputs. This tool is essential for decoupling frontend and backend development, enabling faster prototyping and more reliable testing environments.

Use Cases

  • Frontend Development: Build and test UI components independently by simulating backend API responses before the actual endpoints are developed.
  • Automated Testing & QA: Generate diverse, realistic datasets to validate application logic, error handling, and edge cases without relying on a live database.
  • Prototyping and Demos: Quickly populate application prototypes with believable user data, financial records, or product catalogs for stakeholder presentations.
  • Performance and Load Testing: Use the batch generation feature to create large volumes of mock data to stress-test system performance and data processing pipelines.
nameapi-response-mocker
descriptionGenerate realistic mock API responses with fake data. Use for testing, prototyping, or creating sample data for frontend development.

API Response Mocker

Generate realistic mock API responses with fake data using Faker.

Features

  • Schema-Based Generation: Define response structure
  • Faker Integration: Realistic fake data
  • Nested Objects: Complex nested structures
  • Arrays: Generate lists of objects
  • Relationships: Reference other mock data
  • Multiple Formats: JSON, XML output

Quick Start

from api_mocker import APIMocker

mocker = APIMocker()

# Generate user response
user = mocker.generate({
    "id": "uuid",
    "name": "name",
    "email": "email",
    "created_at": "datetime"
})

# Generate list of users
users = mocker.generate_list({
    "id": "uuid",
    "name": "name",
    "email": "email"
}, count=10)

CLI Usage

# Generate from schema file
python api_mocker.py --schema user_schema.json --output user.json

# Generate list
python api_mocker.py --schema product.json --count 50 --output products.json

# Generate with seed (reproducible)
python api_mocker.py --schema order.json --seed 42 --output order.json

# Preview without saving
python api_mocker.py --schema customer.json --preview

Schema Format

Define fields using Faker provider names:

{
    "id": "uuid",
    "first_name": "first_name",
    "last_name": "last_name",
    "email": "email",
    "phone": "phone_number",
    "company": "company",
    "address": {
        "street": "street_address",
        "city": "city",
        "state": "state",
        "zip": "zipcode",
        "country": "country"
    },
    "created_at": "date_time_this_year",
    "is_active": "boolean"
}

Available Data Types

Personal

  • name, first_name, last_name
  • email, safe_email
  • phone_number
  • ssn

Address

  • address, street_address
  • city, state, state_abbr
  • zipcode, postcode
  • country, country_code
  • latitude, longitude

Internet

  • url, domain_name
  • ipv4, ipv6
  • user_name, password
  • uuid, uuid4
  • mac_address

Business

  • company, company_suffix
  • job, job_title
  • bs, catch_phrase

Financial

  • credit_card_number
  • iban, bban
  • currency_code
  • price (custom: returns float)

Date/Time

  • date, time
  • date_time, date_time_this_year
  • date_of_birth
  • iso8601

Text

  • text, sentence, paragraph
  • word, words
  • slug

Numeric

  • random_int, random_number
  • random_float (use {"type": "float", "min": 0, "max": 100})
  • boolean

Advanced Schemas

Arrays

{
    "id": "uuid",
    "name": "name",
    "tags": {
        "_array": true,
        "_count": 3,
        "_item": "word"
    },
    "orders": {
        "_array": true,
        "_count": 5,
        "_item": {
            "order_id": "uuid",
            "amount": "random_int",
            "date": "date"
        }
    }
}

Custom Values

{
    "id": "uuid",
    "status": {
        "_choice": ["pending", "active", "completed"]
    },
    "priority": {
        "_range": [1, 5]
    },
    "score": {
        "_float": {"min": 0.0, "max": 100.0, "decimals": 2}
    }
}

Nested Objects

{
    "user": {
        "id": "uuid",
        "profile": {
            "bio": "paragraph",
            "avatar_url": "image_url",
            "social": {
                "twitter": "user_name",
                "linkedin": "url"
            }
        }
    }
}

API Reference

APIMocker Class

class APIMocker:
    def __init__(self, locale: str = "en_US", seed: int = None)

    # Generation
    def generate(self, schema: dict) -> dict
    def generate_list(self, schema: dict, count: int = 10) -> list

    # File operations
    def from_schema_file(self, filepath: str) -> dict
    def save(self, data: any, filepath: str, format: str = "json")

    # Utilities
    def set_seed(self, seed: int)
    def get_faker(self) -> Faker

Example Schemas

User Response

{
    "id": "uuid",
    "username": "user_name",
    "email": "email",
    "profile": {
        "first_name": "first_name",
        "last_name": "last_name",
        "avatar": "image_url",
        "bio": "sentence"
    },
    "created_at": "iso8601",
    "last_login": "date_time_this_month"
}

E-commerce Product

{
    "sku": "uuid",
    "name": "catch_phrase",
    "description": "paragraph",
    "price": {"_float": {"min": 9.99, "max": 999.99}},
    "currency": "currency_code",
    "category": {"_choice": ["Electronics", "Clothing", "Home", "Sports"]},
    "in_stock": "boolean",
    "rating": {"_float": {"min": 1, "max": 5, "decimals": 1}},
    "reviews_count": {"_range": [0, 500]}
}

API Error Response

{
    "error": {
        "code": {"_choice": ["NOT_FOUND", "UNAUTHORIZED", "BAD_REQUEST"]},
        "message": "sentence",
        "request_id": "uuid",
        "timestamp": "iso8601"
    }
}

Dependencies

  • faker>=22.0.0