For years, “Henry's Post Test Server V2” at ptsv2.com was the quickest way to see what your client actually sends: claim a toilet, point your script at ptsv2.com/t/<name>/post, and browse the dumps โ headers, form fields, query params, file contents โ in a browser. It's gone. The Wayback Machine last captured it alive on November 22, 2022; by May 2023 it was archiving 404s. Checked again September 2026: HTTPS connections to ptsv2.com fail at the TLS handshake, and plain HTTP serves a bare Google 404 โ the App Engine app behind the domain no longer exists. Every ptsv2.com/t/โฆ URL baked into old shell scripts, IoT firmware, cron jobs and Stack Overflow answers now fails.
Mockbird gives you the same thing, free and without signup: one curl creates a URL that accepts any method on any path, logs method, headers, query and body to a browsable inspector, and replies with whatever status, body and delay you configure โ the exact knobs ptsv2 had.
๐ก Is ptsv2.com still down? We check it every 30 minutes with a plain GET, alongside Hookbin, requestb.in and other request-bin services: live status page (badge + Atom feed included).
The shared demo project has a catch-all bin with a public inspector โ post a dump right now:
curl -X POST https://mockbird.mockbird.workers.dev/m/demo/hooks/anything \
-H 'content-type: application/json' -d '{"dump":"hello"}'
# browse the dumps (method, path, headers, body):
curl https://mockbird.mockbird.workers.dev/api/projects/demo/requests
(The demo is shared and resets daily โ your own private bin is below.)
# 1. create a project (no signup)
curl -X POST https://mockbird.mockbird.workers.dev/api/projects \
-H 'content-type: application/json' -d '{"name":"my-dump"}'
# โ {"id":"abc123","adminKey":"KEY", ...}
# 2. add a catch-all route โ any method, any path, your choice of reply
curl -X POST https://mockbird.mockbird.workers.dev/api/projects/abc123/routes \
-H 'X-Admin-Key: KEY' -H 'content-type: application/json' \
-d '{"method":"ANY","path":"/*","status":202,"body":{"ok":true},"delayMs":2000}'
Old muscle memory works verbatim โ the catch-all doesn't care what the path looks like, so you can keep the ptsv2 shape and just swap the host:
curl -X POST "https://mockbird.mockbird.workers.dev/m/abc123/t/mytoilet/post" \
-d 'field1=value1&field2=value2'
# โ 202 {"ok":true} (after the 2s delay you configured)
# read your dumps back (admin key required โ your bin is private):
curl -H 'X-Admin-Key: KEY' \
https://mockbird.mockbird.workers.dev/api/projects/abc123/requests
Every command above was run against production before this page was published โ the form-encoded body, the 202, and the measured ~2.1 s delay all captured exactly as shown. Prefer a UI? The dashboard's Recent requests card has a “live” mode: click a row to expand headers and body.
| Post Test Server V2 | Mockbird |
|---|---|
Claim a toilet at /t/<name> | create a project + one ANY /* catch-all route (above) |
Submit dumps to /t/<name>/post | any method, any path under /m/<project>/โฆ โ keep the old path if you like |
| Browse dumps in the toilet page; JSON/text views for scripts | GET /api/projects/<project>/requests (JSON) or the dashboard's live inspector |
| Configure the response status code (“200 is the default, 202 is another common value”) | "status": 202 on the route โ or override per-request with ?mock_status=500 |
| Configure the response body (paste a JSON string) | "body" on the route โ plus templating ptsv2 never had: {"challenge":"{{body.challenge}}"} echoes request fields, {{now}}, {{uuid}}, {{query.x}} |
| Configure a delay (max 5 s โ and marked “currently broken” on App Engine) | "delayMs": 2000 per route, or ?mock_delay=3000 per request โ up to 5 s, and it works |
| Toilets get “clogged” under load; old dumps deleted as new arrive | 10,000 requests/project/day; inspector keeps the last 50 requests |
| CORS header on all responses (added 2019) | CORS on by default, everywhere |
| Ephemeral by design โ data can vanish anytime | projects and URLs don't expire (inspector is still a rolling window, not an archive) |
Honesty section. ptsv2 let you put HTTP basic auth in front of a toilet so you could test that your client sends credentials properly โ Mockbird's mock auth is JWT-bearer-style, not basic auth, so that specific test doesn't translate. ptsv2 also showed uploaded file contents inside a dump; our inspector truncates stored bodies at ~2,000 characters and doesn't unpack multipart files. And its magic response strings ({{LINK}}, {{URL-TEXT}}, {{URL-JSON}}) returned a link back to the dump itself โ no equivalent here. If you need any of those, webhook.site (100 requests, 7-day free URLs) shows file uploads, and Beeceptor (50 requests/day free) has a rules engine.
Catch-alls are a fallback: seeded resources and specific routes always win. The same project can serve /products as a full fake REST backend โ CRUD, filters, pagination, GraphQL โ while the catch-all quietly logs every stray request your client makes. Which, if you were debugging with ptsv2, was probably the question anyway.
Written by the Mockbird maker โ bias disclosed. The death timeline is from the Internet Archive (last live capture 2022-11-22, archived 404s from 2023-05-27) plus a direct check on September 4, 2026 (TLS handshake failure on 443; Google 404 on 80). ptsv2's feature list โ status/body/delay/auth configuration, dump views, CORS, throttling โ is from its own archived documentation pages, same source.