Skip to main content

Mock Loki is now Stage! Read the announcement

Simulatechangeswithouttouchingproduction.

Override API responses to test inventory, pricing, content, and promotions on real pages — instantly.

A simulation layer for PMs and designers to preview site changes without engineering bottlenecks or risky deploys.

https://app.yourcompany.com/products
// Your production code
fetch(
'https://gateway.usestage.dev/
  gw/YOUR_KEY/cms/products'
)
Try different scenarios:
API Response
Production
Premium Widget
$99.99
In Stock
Deluxe Gadget
$149.99
In Stock
Same production environment
No production data changed
Change scenarios with a header

See the simulation in action

Preview how your site would look if inventory changed, promotions went live, or content updated — all without touching real data.

Real API

GET /products

{
  "products": [
    {
      "id": 1,
      "name": "Winter Jacket",
      "price": 99.99,
      "inStock": true
    },
    {
      "id": 2,
      "name": "Summer Dress",
      "price": 49.99,
      "inStock": true
    }
  ]
}
Staged

GET /products?scenario=spring-promo

{
  "products": [
    {
      "id": 1,
      "name": "Winter Jacket",
      "price": 79.99,
      "inStock": true,
      "tag": "SALE"
    },
    {
      "id": 2,
      "name": "Summer Dress",
      "price": 39.99,
      "inStock": true,
      "tag": "SALE"
    },
    {
      "id": 3,
      "name": "Spring Collection Preview",
      "price": 59.99,
      "inStock": false
    }
  ]
}

Stage transforms responses in real-time without modifying your production data. Perfect for previewing campaigns, testing edge cases, and QA scenarios.

Why teams choose Stage

See, Don't Imagine

Stop mocking up screenshots. Preview real scenarios on your actual site with live data.

Zero Risk to Data

Read-only to your systems of record. Production and staging data stay untouched.

Skip the Engineering Queue

PMs and designers simulate changes themselves. No tickets, no waiting, no staging deploys.

One line to unlock simulation

Point your API calls through Stage. Everything else stays the same.

# Before
const response = await fetch('https://api.cms.com/products')
# After
const response = await fetch(
  'https://gateway.usestage.dev/gw/YOUR_KEY/cms/products',
  { headers: { "X-Scenario": "spring-promo" } }
)

Stop imagining. Start simulating.

See exactly how your site would behave with different data — no database changes, no risky deploys.

Start Free