Mock API endpoints: any format, any HTTP status
8 formats times 14 status codes, each one a live URL you can curl right now. For example https://demo-json-503.supercrontab.com/ always answers 503 with a JSON body. Use them to test retries, error handling, parsers and cron jobs without standing up a server.
Pick a format
application/jsonJSONThe default for REST APIs. Parse it with response.json() and check the ok field.application/xmlXMLCommon in SOAP, payment and legacy enterprise APIs. Good for testing XML parsers and namespaces.text/plain; charset=utf-8TextPlain text, no structure. Handy for health checks and for clients that only read the status code.text/csv; charset=utf-8CSVA header row and three data rows. Use it to test CSV importers, exports and spreadsheet links.text/html; charset=utf-8HTMLA tiny page. Useful for scrapers, uptime monitors and testing how a client treats HTML error pages.application/yamlYAMLUsed by config loaders and some infrastructure APIs. Test indentation handling and list parsing.application/rss+xmlRSSA valid RSS 2.0 feed with one item. Point a feed reader or a cron job at it to test polling.application/javascriptJavaScriptA script body with the application/javascript type. Test script loaders, CDNs and MIME checks.
Pick a status code
Every status is available in every format. The JSON link is the most common starting point.
| Status | When you see it | Retry? | Try it |
|---|---|---|---|
| 200 OK | The request succeeded and the body holds the result. This is the normal case for GET and most POST calls. | No | JSON 200 |
| 201 Created | A POST or PUT created a new resource. APIs often return the new object and a Location header pointing at it. | No | JSON 201 |
| 204 No Content | The request worked but there is nothing to return, typical for DELETE, PUT and OPTIONS preflight responses. | No | JSON 204 |
| 400 Bad Request | The server could not understand the request: malformed JSON, a missing field or a wrong parameter type. | No | JSON 400 |
| 401 Unauthorized | No credentials were sent, or the token is expired or invalid. Common after an API key rotation. | No | JSON 401 |
| 403 Forbidden | The credentials are valid but this identity is not allowed to do this action, or the IP is blocked. | No | JSON 403 |
| 404 Not Found | The path does not exist or the resource was deleted. Also returned by some APIs to hide private resources. | No | JSON 404 |
| 409 Conflict | The request clashes with current state: a duplicate unique key, a stale version number or a concurrent edit. | No | JSON 409 |
| 422 Unprocessable Content | The request was well formed but failed validation: an email without @, a date in the past, a value out of range. | No | JSON 422 |
| 429 Too Many Requests | You hit a rate limit. Most APIs send a Retry-After header or X-RateLimit-Reset telling you when to come back. | Once, after a delay | JSON 429 |
| 500 Internal Server Error | The server crashed while handling the request: an unhandled exception, a bug or a dependency that failed. | Once, after a delay | JSON 500 |
| 502 Bad Gateway | A proxy or load balancer got an invalid response from the upstream app, often during a deploy or a crash. | Yes, with backoff | JSON 502 |
| 503 Service Unavailable | The service is overloaded or down for maintenance. Servers may include Retry-After to say how long. | Yes, with backoff | JSON 503 |
| 504 Gateway Timeout | A proxy waited for the upstream app and gave up. The request may or may not have been processed. | Yes, with backoff | JSON 504 |
Need a specific body, header or delay?
A Supercrontab endpoint returns whatever you configure, logs every incoming request and can fail a set percentage of the time. Free plan included.
Create your own endpoint