?delay=3000200Slow responses
See your loading states, skeletons and timeouts for real. Capped at 10 s so nobody ties up the server.
01·Mock API
Upload any JSON and get a URL. Then make it slow, flaky or wrong with a single query parameter. Test every spinner, retry and error screen before production tests them for you.
Self-hosted · zero dependencies · 202 tests
$ curl -X POST http://localhost:8001/upload -d '{"user":42}'
Mock created
http://localhost:8001/mock/gqqQumr3tmdItHEfSW7Z6w
Point any client at a URL: curl, fetch, a mobile app, a browser. No sign-up, no library, no code changes.
Delays, forced errors, random failures and scripted retry sequences, all from the query string.
Rate-limited writes, uploads that expire, capped storage and unguessable URLs. Put it online for your whole team.
02·Try it now
This server is live. Paste any JSON, create a mock, and point your app at its URL. No account needed; mocks expire after 24 hours.
$ curl -X POST http://localhost:8001/upload -H 'Content-Type: application/json' -d '{"hello":"world"}' $ curl 'http://localhost:8001/mock/<id>?delay=2000'
Save the token now. It's shown only once, and you need it to update or delete this mock.
Upload a response once. Every request can then choose how that response behaves: how long it takes, whether it fails, and in what order.
Your client just retries the same URL. The server keeps count, so there's nothing to reset between test runs.
03·Query controls
?delay=3000200See your loading states, skeletons and timeouts for real. Capped at 10 s so nobody ties up the server.
?status=401401Return any standard 4xx or 5xx with a proper error body. Build the "session expired" screen before the auth team ships.
?flaky=0.3500Fail 30% of calls at random. Add status=503 to choose the error your circuit breaker sees.
?sequence=500,503,ok3/3Fail, fail, then succeed, one step per call. The step is in X-Mock-Sequence.
?header_Retry-After=30hdrAdd Retry-After, Cache-Control or your own X-* headers. Unsafe ones are refused.
?cors=offCORSCORS is on by default. Turn it off for one request to see how your app handles a blocked call.
04·URL builder
Start from a scenario or set each control yourself. The URL and curl command update as you go. This page only builds them; nothing is sent.
http://localhost:8001/mock/gqqQumr3tmdItHEfSW7Z6w
curl -i 'http://localhost:8001/mock/gqqQumr3tmdItHEfSW7Z6w'
05·Endpoints
/echo"What is my app actually sending?" Echoes method, headers with original casing, query and body. Multipart forms come back split into fields, with a SHA-256 hash for each file.
/blackholeAccepts anything and answers like a real API would: 201 or 202 for POST, 200 or 204 for PUT, at random. Does your client handle both?
/api/v1/flights140 JFK → LAX flights with fares, layovers, gates and time zones that respect daylight saving. Enough data to build a real search UI.
/api/v1/stocks100 US tickers with daily moves, day and 52-week ranges and market cap. It changes every day and stays stable while you paginate.
If-None-Match. Guard updates with If-Match and get a real 412 on conflicts.ETag, X-Request-Id and rate-limit headers are readable from JavaScript.{ success, error, meta } shape with a request ID you can find in logs.12345678901234567890 and 2.50 come back exactly as sent, not rounded by a JSON round trip.no-store unless you opt in.06·Safe to put online
30 uploads per minute per IP, with Retry-After and RateLimit-* headers.
Uploads expire after 24 h. Storage is capped at 10,000 uploads and 500 MB.
128-bit IDs, delete tokens stored only as hashes, and IDs checked before any file is touched.
Header and body timeouts, a cap on concurrent delays, and graceful shutdown on deploy.
Build the happy path, the slow path and the broken path today.