Mocks

The state you need is a toggle, not a ticket.

Replace any response your app receives — status, headers, body, delay — for your session only. Staging keeps humming for everyone else.

"Can someone put an account into the expired-card state?"

"That's a backend change."

"Next sprint."

Or: flip a switch, get a 402, and file the bug before standup.

Mock toggle → checkout

Toggle Payment declined (402) and watch the checkout error state.

  • Library row for POST /payment
  • Live checkout recovers when toggled off
  • Second toggle: Slow shipping quote (10s)

Only your traffic changes.

A mock is scoped to your session by default. Your teammate hitting the same endpoint on the same staging environment gets the real response. Nobody has to declare a maintenance window to test an error state.

In-product visual

Build the library once, reuse it forever.

Every environment gets a mock library — "Empty cart", "Payment declined (402)", "Server error on checkout", "Slow shipping quote". Name them after what a person would say out loud, not after route numbers. Anyone on the team can activate any published mock on their own session.

In-product visual

Match precisely, or broadly.

Match on method and path, and narrow further with query params or request body when you need to. More specific matchers win, so POST /pay with {"amount": 0} beats a blanket POST /pay. Exactly one mock wins per request — no ambiguity about what you're looking at.

In-product visual

Drafts keep experiments off the team's radar.

New mocks start as drafts: yours, editable, invisible to everyone else. Publish when it's stable and the team can activate it. Untouched drafts get archived after 7 days so the library doesn't turn into a junk drawer.

In-product visual

Write the body however you like.

Paste JSON. Or edit field by field in the form view. Or describe the change — "make every task critical priority" — and let the AI edit apply it to the real captured payload. Set the status code, add headers, add a delay.

In-product visual

Details a careful buyer checks

A mock can setStatus code · headers · body · response delay
MatchersMethod, path, query params, request body
ResolutionOne winner — most specific matcher
LifecycleDraft (private) → Published (team can activate)
ActivationPer session, via scenario, or via the API
Safety railMocks auto-pause after 4h of session inactivity
Auto-pause windowConfigurable org-wide, per project, and per person in your own account settings

Common objection

How do I know what's real right now?

The session strip is always on screen: active scenario, how many mocks are on, whether a delay is set. Click it and the Active mocks drawer lists everything currently shaping your traffic. When nothing is on it says so plainly — "You're seeing real upstream traffic. Nothing is being faked for your session." And every mocked request is badged in Traffic, so a mock you forgot about can't quietly become a bug report.

One URL change. That's the whole integration.

Free plan, no card, two-minute setup.