How it works
One URL change. Real staging. Private sandboxes.
Think of FlowMock as a smart middleman. Your app sends requests to FlowMock. FlowMock either returns a mock response or forwards to your real staging API and passes the response back.
Your app → FlowMock proxy → Staging API
↓
Mock? Return it.
No mock? Forward.Three steps
Point your app at a FlowMock URL
Create a project, set your real staging API as upstream, and get a proxy URL. Change one base URL in your app — that's the integration.
Traffic flows; sessions appear
Requests hit FlowMock first. If a mock matches your session, you get that response. Otherwise the request goes to staging and the response comes back. Everything is logged live.
Flip states without colliding
Activate mocks or a whole scenario on your session. Teammates on the same URL keep seeing real staging (or their own mocks). CI uses an explicit session key for the same states.
The pieces
| Piece | What it is | Plain English |
|---|---|---|
| Project | A container for one staging API | "Our checkout backend" |
| Environment | A proxy endpoint with its own URL | "Staging" or "QA" |
| Session | An isolated override scope | "Alice's sandbox" |
| Mock | A response override for a route | "Return 402 for POST /pay" |
| Transform | A body patch after mock or upstream | "Mark every task done" |
| Scenario | A bundle of mocks you switch between | "Payment declined" preset |
Environments share a library, not traffic
Environments (proxy slots) are deployments of the same project. They share one mock library and one set of scenarios, but each gets its own proxy URL and its own traffic. Give staging one, give each parallel QA lane its own, give the mobile team theirs. A scenario saved on one environment is available on all of them — because the library belongs to the project, not the URL.
Session detection is usually zero work
For manual testers, FlowMock reads the identity your app already sends — JWT in Authorization or a cookie, a custom header, or heuristics — so people appear in the session list without setting a special header. Pipelines still use an explicit x-flowmock-session key when they need deterministic isolation. One project setting; your QA team never has to learn the plumbing. Full sources and fallbacks are on the QA Sessions page.
One URL for the whole team
Everyone on QA uses the same proxy URL. Isolation comes from sessions, not separate environments. Alice's empty cart doesn't empty Bob's. CI gets its own key and tears it down when the job finishes.
Prefer the long-form product docs? Start at /docs/how-it-works.
One URL change. That's the whole integration.
Free plan, no card, two-minute setup.