I built a mock e-commerce REST API that returns realistic, seeded product data — great for prototyping storefronts, testing checkout flows, or building portfolio projects without standing up a real backend.
Live API: https://store.halukaksoy.dev
Live Stats
Seeded Product Catalog
The catalog is pre-seeded with 5,000 products across 20 categories using the The Amazon Berkeley Objects (ABO) Dataset. Big kudos to them. Each product has a UUID, name, description, price (in cents), stock count, category, brand, SKU, rating, and review count. Prices and stock are randomised but deterministic — the same product UUID always returns the same data. If need arises, I can take the sample size up to 10 or even 50k in the future. Please feel free to reach out.
curl https://store.halukaksoy.dev/api/products
{
"data": [
{
"uuid": "0197f...",
"name": "Ergonomic Mesh Chair",
"description": "...",
"price_cents": 34999,
"stock": 42,
"category": "Furniture",
"brand": "ErgoForm",
"sku": "ERG-0042",
"rating": 4.3,
"review_count": 187
}
],
"meta": {
"total": 5000,
"page": 1,
"per_page": 20,
"pages": 250
}
}
You can paginate with ?page=2&per_page=50, filter by category with ?category=Electronics, and search with ?search=wireless.
Categories
curl https://store.halukaksoy.dev/api/categories
Returns all 20 categories with product counts, letting you build category nav or filter dropdowns instantly.
Cart & Checkout Flow
The full purchase flow is supported:
1. Create a cart
curl -X POST https://store.halukaksoy.dev/api/cart
Returns a session_id you use for all subsequent cart operations.
2. Add items
curl -X POST https://store.halukaksoy.dev/api/cart/{session_id}/items \
-H "Content-Type: application/json" \
-d '{"product_uuid": "0197f...", "quantity": 2}'
3. View cart
curl https://store.halukaksoy.dev/api/cart/{session_id}
Returns line items, quantities, individual prices, and a cart total.
4. Checkout
curl -X POST https://store.halukaksoy.dev/api/checkout \
-H "Content-Type: application/json" \
-d '{
"session_id": "abc123",
"email": "[email protected]",
"payment_method": "card",
"shipping_address": {
"line1": "123 Main St",
"city": "Springfield",
"state": "IL",
"zip": "62701",
"country": "US"
}
}'
Returns an order object with an order_number for lookup.
Random User Profile
Need a fake buyer for your checkout form?
curl https://store.halukaksoy.dev/api/users/random
Returns a realistic user with name, email, address, phone number, and avatar URL — useful for seeding test data or autofilling checkout forms in demos.
Order Lookup
curl https://store.halukaksoy.dev/api/orders/{order_number}
Returns the full order: line items, totals, shipping address, payment method, and timestamps.
Mock Request Headers
Two headers let you simulate real-world conditions without touching your code:
| Header | Effect |
|---|---|
X-Mock-Delay: 800 |
Delays the response by 800 ms — test loading states and spinners |
X-Mock-Error-Rate: 25 |
Returns a 500 error on ~25% of requests — test error boundaries |
# Simulate a slow network
curl -H "X-Mock-Delay: 1200" https://store.halukaksoy.dev/api/products
# Test your error handling
curl -H "X-Mock-Error-Rate: 50" https://store.halukaksoy.dev/api/products
OpenAPI Specification
A machine-readable spec is available at /openapi.json. Import it into Postman, Insomnia, or any OpenAPI-compatible client.
Rate Limiting
The API allows 60 requests per minute per IP. Rate limit state is tracked with a fixed-window algorithm. Responses include standard headers:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 58
X-RateLimit-Reset: 1746392460
When the limit is exceeded you get a 429 Too Many Requests with a Retry-After header indicating seconds until the window resets.
Data Notes
- All data is seeded — changes (carts, orders) persistent across requests, but the product catalog is fixed
- UUIDs are stable: the same product UUID always refers to the same product
- Prices are in cents throughout — divide by 100 for display
- Carts do not expire automatically; they persist until checked out
Quick Endpoint Reference
| Method | Path | Description |
|---|---|---|
| GET | / |
API index |
| GET | /docs |
Interactive reference |
| GET | /openapi.json |
OpenAPI 3.x spec |
| GET | /api/products |
List products (paginated, filterable) |
| GET | /api/products/{uuid} |
Single product |
| GET | /api/categories |
All categories |
| POST | /api/cart |
Create cart |
| POST | /api/cart/{session_id}/items |
Add item to cart |
| GET | /api/cart/{session_id} |
View cart |
| POST | /api/checkout |
Checkout |
| GET | /api/users/random |
Random user profile |
| GET | /api/orders/{order_number} |
Order details |
Full interactive documentation with a built-in try-it panel: https://store.halukaksoy.dev/docs