← All guides

πŸ“‘ Is mocky.io still dead? We check it (and 14 other classic public mock/placeholder APIs) with a plain GET every 30 minutes β€” see the live status page.

Mocky.io is gone β€” here's a free replacement for custom mock responses

For years, Mocky (mocky.io) was the fastest way to get a fake HTTP endpoint: paste a JSON body, pick a status code, get a permanent run.mocky.io URL. It's embedded in a decade of tutorials, Stack Overflow answers, and demo code β€” the ant-design upload examples famously pointed at it.

Mocky has been discontinued. As of July 2026, mocky.io, designer.mocky.io and run.mocky.io serve a broken self-signed certificate and return 404 for every mock URL:

curl https://run.mocky.io/v3/9a2a80b9-8ac6-4b16-b241-1a1ad4b0d861
# β†’ curl: (60) SSL certificate problem: self-signed certificate

curl -k https://run.mocky.io/v3/9a2a80b9-8ac6-4b16-b241-1a1ad4b0d861
# β†’ 404

Every mocky URL in every codebase is dead. Here's how to do the same job on Mockbird β€” no signup, permanent URL, CORS on, free β€” plus the things mocky never did.

The 30-second replacement

Mocky's whole product was "design a response, get a URL". On Mockbird that's a custom route. Two curls:

# 1. create a project (anonymous β€” no signup)
curl -X POST https://HOST/api/projects \
  -H 'content-type: application/json' -d '{"name":"my mocks"}'
# β†’ {"id":"abc123","adminKey":"KEY", ...}  ← save both

# 2. design your response β€” exact body, status, headers
curl -X POST https://HOST/api/projects/abc123/routes \
  -H 'X-Admin-Key: KEY' -H 'content-type: application/json' \
  -d '{"method":"GET","path":"/v3/my-mock","status":200,
       "body":"{\"status\":\"ok\",\"plan\":\"pro\",\"features\":[\"a\",\"b\"]}",
       "headers":{"X-Custom":"hello"}}'

Your mock is live immediately:

curl -i https://HOST/m/abc123/v3/my-mock
# β†’ HTTP/2 200
# β†’ x-custom: hello
# β†’ {"status":"ok","plan":"pro","features":["a","b"]}

Unlike mocky's random UUID paths, you pick the path β€” so you can mirror whatever URL shape your app expects (yes, even /v3/whatever). Up to 20 routes per project, one project per API you're faking.

Mocky feature β†’ Mockbird translation

In mockyOn Mockbird
Response body (JSON, XML, text…)"body" on the route β€” any content
HTTP status picker"status": 418 (100–599)
Content-Type picker"contentType": "application/xml"
Custom response headers"headers": {"X-Custom":"hello"}
Secret random URLproject ids are random slugs; paths are yours
Permanent linkroutes don't expire (sign up free to keep the project forever)
Simulated delay"delayMs": 2000 per route, or ?mock_delay= ad-hoc

Example β€” an XML error with a teapot status and a 2-second delay:

curl -X POST https://HOST/api/projects/abc123/routes \
  -H 'X-Admin-Key: KEY' -H 'content-type: application/json' \
  -d '{"method":"GET","path":"/teapot","status":418,
       "contentType":"application/xml","body":"<error>teapot</error>","delayMs":2000}'

curl -i https://HOST/m/abc123/teapot
# β†’ HTTP/2 418, content-type: application/xml, ~2s later
# β†’ <error>teapot</error>

Try it right now, zero setup

The shared demo project has live custom routes you can hit before creating anything:

curl https://HOST/m/demo/health
# β†’ {"status":"ok","service":"mockbird-demo","time":"…"}

curl https://HOST/m/demo/config/theme
# β†’ {"key":"theme","value":"…","fetchedAt":"…"}

What mocky never did

Dynamic responses. Mocky responses were frozen strings. Mockbird routes are templates β€” echo back query params, URL params, request body fields, or generate values per request:

curl -X POST https://HOST/api/projects/abc123/routes \
  -H 'X-Admin-Key: KEY' -H 'content-type: application/json' \
  -d '{"method":"GET","path":"/greet/:name",
       "body":"{\"hello\":\"{{params.name}}\",\"at\":\"{{now}}\"}"}'

curl https://HOST/m/abc123/greet/ada
# β†’ {"hello":"ada","at":"2026-07-26T17:48:01.186Z"}

Placeholders include {{query.x}}, {{params.x}}, {{body.x}}, {{headers.x}}, {{uuid}}, {{now}}, {{rand}}, and {{{body}}} to echo the whole request β€” full list in the custom endpoints guide.

A whole fake backend, not just one URL. The same project can host seeded CRUD resources (writes persist), GraphQL, mock JWT auth, request bins with an inspector, and exports (OpenAPI, Postman, TypeScript/Zod). Your mocky-style fixtures and your fake REST API live at one base URL.

Honest comparison

Mocky.ioMockbird
Statusdiscontinued β€” URLs 404live, free while in beta
Signup requirednono (anonymous projects; free signup to keep them)
Custom body/status/headers/content-typeyesyes
Choose your own pathno (random UUID)yes, incl. :params and /* wildcards
Dynamic templatingnoyes
CRUD / stateful datanoyes
Request inspectornolast 50 requests w/ headers
Free limitsβ€”10,000 req/project/day, 20 routes/project

This page is written by the Mockbird maker β€” bias disclosed. Mocky's shutdown verified live in July 2026 (self-signed cert, 404s on designer and run hosts); its open-source "Lockdown Edition" can still be self-hosted from GitHub if you prefer that route. Other hosted options: Beeceptor (50 req/day free), webhook.site (100 requests, 7-day URLs free). Anonymous Mockbird projects have a per-IP daily creation cap; sign up (free) to keep projects permanently.

Full API reference in the docs. More guides: mock any endpoint Β· httpbin alternative Β· testing loading & error states. Create your API β†’