Complete API Reference
The UtilityForge Mock API is a fully-featured, free REST API for frontend developers, testers, and prototypers. No sign-up, no rate limits on basic access, no backend required. Every endpoint returns realistic JSON instantly.
Base URL
https://utilityforges.com/api/mock/Datasets
8 unique, compliance-safe datasets covering common app domains. All endpoints support GET, POST, PUT/PATCH, and DELETE.
| Dataset | Endpoint | Records | Key Fields |
|---|---|---|---|
| Inventory | /api/mock/inventory | 150 | id, name, brand, price, category, inStock, quantity, rating |
| Accounts | /api/mock/accounts | 100 | id, username, email, firstName, lastName, age, isActive, role |
| Articles | /api/mock/articles | 200 | id, title, content, authorId, topic, views, published |
| Feedback | /api/mock/feedback | 300 | id, articleId, accountId, body, likes |
| Tasks | /api/mock/tasks | 100 | id, title, completed, assigneeId, priority |
| Citations | /api/mock/citations | 100 | id, author, text |
| Restaurants | /api/mock/restaurants | 100 | id, name, cuisine, rating, isOpen, location |
| Movies | /api/mock/movies | 150 | id, title, genre, releaseYear, director, rating |
Standard CRUD operations:
# Get all items (returns { [resource]: [...], total, skip, limit })
GET https://utilityforges.com/api/mock/inventory
# Get single item by ID
GET https://utilityforges.com/api/mock/inventory/1
# Search all text fields
GET https://utilityforges.com/api/mock/inventory/search?q=laptop
# Add a new item (stateless — returns what you sent + id)
POST https://utilityforges.com/api/mock/inventory/add
Content-Type: application/json
{ "name": "My Widget", "price": 49.99 }
# Update an item (stateless — returns merged object)
PUT https://utilityforges.com/api/mock/inventory/1
Content-Type: application/json
{ "price": 39.99 }
# Delete an item (stateless — returns confirmation)
DELETE https://utilityforges.com/api/mock/inventory/1Core Query Parameters
All collection endpoints support the following query parameters. They can be combined freely.
| Parameter | Type | Description | Example |
|---|---|---|---|
limit | number | Max items to return (default: 30) | ?limit=10 |
skip | number | Items to skip for pagination | ?skip=20 |
sortBy | string | Field name to sort by | ?sortBy=price |
order | asc|desc | Sort direction (default: asc) | ?order=desc |
q | string | Full-text search across all string fields | ?q=laptop |
select | string | Comma-separated field projection | ?select=id,name,price |
shuffle | boolean | Randomize results before limit/skip | ?shuffle=true |
delay | number | Add artificial latency in ms (max 10000) | ?delay=2000 |
status | number | Force a specific HTTP status code | ?status=503 |
rateLimit | number | Trigger 429 after N calls / 60s per IP | ?rateLimit=5 |
[key]=[val] | any | Filter by exact field value matches | ?category=Electronics |
# Paginate: page 2 with 10 items per page
GET https://utilityforges.com/api/mock/inventory?limit=10&skip=10
# Sort by price, descending
GET https://utilityforges.com/api/mock/inventory?sortBy=price&order=desc
# Filter Electronics items, pick 3 fields only
GET https://utilityforges.com/api/mock/inventory?category=Electronics&select=id,name,price
# Search + paginate + sort together
GET https://utilityforges.com/api/mock/articles?q=technology&sortBy=views&order=desc&limit=5
# Random 3 movies (for a "random picks" feature)
GET https://utilityforges.com/api/mock/movies?shuffle=true&limit=3Unique Endpoints
These endpoints go beyond standard CRUD and are available completely free — no equivalents exist on DummyJSON or JSONPlaceholder.
🔐 Auth Simulation
POST /api/mock/auth/loginSimulates a login flow returning a mock JWT token and user profile. Useful for testing auth-gated UI without a real backend.
const res = await fetch('https://utilityforges.com/api/mock/auth/login', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ username: 'john', password: 'pass123' })
});
const data = await res.json();
// Returns:
// {
// token: "eyJhbGciOiJIUzI1NiIsInR5...",
// user: { id: 1, username: "john", email: "john@example.com", role: "user" },
// expiresIn: 3600
// }🖼️ Dynamic SVG Images
GET /api/mock/imageGenerates on-the-fly SVG placeholder images with custom dimensions, colors, and text. Drop directly in an <img> tag.
<!-- 600x400 grey placeholder -->
<img src="https://utilityforges.com/api/mock/image?w=600&h=400" />
<!-- Custom colors and label -->
<img src="https://utilityforges.com/api/mock/image?w=300&h=200&bg=1a1a2e&text=ffffff&label=Product+Photo" />
// Parameters:
// w - width in pixels (default: 400)
// h - height in pixels (default: 300)
// bg - background hex color (no #, default: cccccc)
// text - text color hex (no #, default: 666666)
// label - custom label text (default: WxH)📊 GraphQL Mock
POST /api/mock/graphqlA lightweight GraphQL endpoint for testing query structures and field selection. Supports the main datasets as root query fields.
const res = await fetch('https://utilityforges.com/api/mock/graphql', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
query: `{ inventory { id name price category } }`
})
});
const { data } = await res.json();
// data.inventory = [ { id: 1, name: "...", price: 299.99, category: "..." }, ... ]
// Supported query fields: inventory, accounts, articles, feedback, tasks, citations, restaurants, movies🗂️ Schema Generator
POST /api/mock/generateAccepts a JSON schema and generates realistic mock data matching your structure. Perfect for prototyping custom API shapes.
const res = await fetch('https://utilityforges.com/api/mock/generate', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
count: 5,
schema: {
id: "number",
name: "string",
email: "email",
active: "boolean",
score: "number",
createdAt: "date"
}
})
});
const { data } = await res.json();
// Returns 5 objects matching your schema with generated values📤 File Upload Mock
POST /api/mock/uploadAccepts multipart/form-data file uploads and returns a simulated success response. No files are saved — 100% stateless.
const formData = new FormData();
formData.append('file', fileInput.files[0]);
formData.append('userId', '42');
const res = await fetch('https://utilityforges.com/api/mock/upload', {
method: 'POST',
body: formData // No Content-Type header needed — browser sets it
});
const data = await res.json();
// Returns:
// {
// message: "File uploaded successfully (simulated)",
// file: { name: "photo.jpg", size: 204800, type: "image/jpeg" },
// url: "https://mock-cdn.utilityforges.com/uploads/photo.jpg",
// uploadedAt: "2026-02-27T14:00:00.000Z"
// }🔁 Echo / Mirror
ANY /api/mock/echoMirrors the full incoming request back — method, headers, body, query params, and IP address. Invaluable for debugging your client code.
const res = await fetch('https://utilityforges.com/api/mock/echo?debug=true&env=production', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'X-Custom-Header': 'my-value' },
body: JSON.stringify({ action: 'test', userId: 99 })
});
const data = await res.json();
// Returns your full request back:
// {
// method: "POST",
// url: "/api/mock/echo?debug=true&env=production",
// headers: { "content-type": "application/json", "x-custom-header": "my-value", ... },
// query: { debug: "true", env: "production" },
// body: { action: "test", userId: 99 },
// ip: "203.0.113.42",
// receivedAt: "2026-02-27T14:00:00.000Z"
// }💾 Custom JSON Persistence
POST /api/mock/customStore any JSON payload (up to 20KB) and get back a unique, persistent URL to serve it. Use _meta to control status code and custom headers. Data expires in 7 days automatically.
// Step 1: Store your custom JSON
const res = await fetch('https://utilityforges.com/api/mock/custom', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
userId: 42,
plan: 'enterprise',
features: ['sso', 'audit-log', 'custom-domain'],
_meta: { status: 200, headers: { 'X-Plan': 'enterprise' } }
})
});
const { alias, url } = await res.json();
// alias: "my-custom-abc123"
// url: "https://utilityforges.com/api/mock/custom/my-custom-abc123"
// Step 2: Fetch it back from anywhere (GET)
const userData = await fetch(url).then(r => r.json());
// Returns your original JSON with your custom status and headers🪝 Webhook Inbox
Create a temporary inbox URL that captures incoming webhook events. Test what your app sends without needing a real webhook receiver. Inboxes expire in 5 minutes. Stores up to 50 events.
// Step 1: Create a new inbox
const { inboxId, inboxUrl } = await fetch('https://utilityforges.com/api/mock/webhook/register', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ name: 'My App Events' })
}).then(r => r.json());
// inboxUrl: "https://utilityforges.com/api/mock/webhook/inbox/abc12345"
// Step 2: Configure your app to send webhooks to inboxUrl
// (copy-paste inboxUrl into your app's webhook settings)
// Step 3: Read all captured events
const { events } = await fetch(inboxUrl).then(r => r.json());
// events = [
// { id: "evt_1709040012345", method: "POST", headers: {...}, body: {...}, receivedAt: "..." },
// ...
// ]
// Step 4: Clear the inbox
await fetch(inboxUrl, { method: 'DELETE' });🚦 Rate Limit Simulation
?rateLimit=NAppend ?rateLimit=N to any dataset endpoint. After N calls within 60 seconds from the same IP, the server returns a real 429 Too Many Requests response with proper headers — perfect for testing retry logic, exponential backoff, and rate limit UI.
// Will succeed for the first 3 calls, then return 429
const fetchWithRetry = async (attempts = 0) => {
const res = await fetch('https://utilityforges.com/api/mock/inventory?rateLimit=3');
if (res.status === 429) {
const { retryAfterMs } = await res.json();
console.log(`Rate limited! Retry in ${retryAfterMs}ms`);
// res.headers.get('Retry-After') → seconds to wait
// res.headers.get('X-RateLimit-Limit') → the configured limit
// res.headers.get('X-RateLimit-Remaining') → "0"
await new Promise(r => setTimeout(r, retryAfterMs));
return fetchWithRetry(attempts + 1);
}
return res.json();
};Interactive Playground Features
5-Language SDK Tabs
Every endpoint shows ready-to-copy code snippets for Fetch, Axios, cURL, Python, and Go.
Collapsible JSON Viewer
Responses render as a colour-coded, collapsible tree — explore deeply nested data with one click.
Network History Log
Slide-up drawer tracks every request you've made: method, path, status, latency, and timestamp.
Schema Explorer
Dedicated /mock-api/schema page shows every field name, type, and sample value for all 8 datasets.
Keyboard Shortcut
Press Cmd/Ctrl + Enter in the playground to execute the selected request instantly.
PRO Badge
Mock API appears with a PRO badge in the global Cmd+K search, clearly marking it as a premium tool.
Base URL Badge
The hero always shows the live base URL with a one-click copy button for quick integration.
CORS Fully Open
All endpoints return Access-Control-Allow-Origin: * so browser fetch() works from any domain.
Ready to start building?
Open the Interactive Playground