Fake API Playground ๐งช
Static JSON endpoints for testing an API client. No API key. No auth. No rate limit.
Every path is a plain GET that returns application/json, and
Access-Control-Allow-Origin is *, so you can call it from a browser.
- 30 endpoints
- CORS open
- GET only
- built 2026-08-08T09:47:12Z
Start here
curl -s https://this-site/index.json | jq .
/index.json lists every endpoint on this site, with a description. It is the machine-readable version of this page.
Related data
Ids are plain integers, and the collections point at each other. This lets you test more than one request in sequence:
/orders.json โ user_id ............ /users/{id}.json
โ items[].product_id . /products/{id}.json
/posts.json โ author_id .......... /users/{id}.json
/comments.json โ post_id ............ /posts/{id}.json
/posts/{id}.json โ includes its own comments
Pagination
The /page/N.json endpoints wrap the records in an envelope, so a client can
follow meta.next_page until it is null:
{
"meta": {
"page": 1, "per_page": 10, "total": 50, "total_pages": 5,
"next_page": "/users/page/2.json",
"prev_page": null
},
"data": [ ... ]
}
Collections
/quotes.json
111 famous quotes with author and tags. Real data.
/users.json
50 people with an address, a company and an avatar. Fake data.
/products.json
40 shop items with a price, stock level and image. Fake data.
/orders.json
200 orders. Each order points to a user_id and to product_ids.
/posts.json
60 blog posts. Each post points to an author_id in /users.json.
/comments.json
300 comments. Each comment points to a post_id in /posts.json.
/countries.json
250 countries with capital, currency and population. Real data, refreshed at build time.
/crypto.json
The top 20 coins by market cap. Real prices, refreshed at build time.
/news.json
40 headlines from public news feeds. Real data, refreshed at build time.
One record
/users/{id}.json
A single record by id. Ids 1 to 50.
try /users/1.json
/products/{id}.json
A single record by id. Ids 1 to 40.
try /products/1.json
/posts/{id}.json
A single record by id. Ids 1 to 60.
try /posts/1.json
Paginated
/quotes/page/{n}.json
/quotes.json in a page envelope, 25 per page. Pages 1 to 5. Page 6 is empty, with has_more false.
try /quotes/page/1.json
/users/page/{n}.json
/users.json in a page envelope, 25 per page. Pages 1 to 2. Page 3 is empty, with has_more false.
try /users/page/1.json
/products/page/{n}.json
/products.json in a page envelope, 25 per page. Pages 1 to 2. Page 3 is empty, with has_more false.
try /products/page/1.json
/orders/page/{n}.json
/orders.json in a page envelope, 25 per page. Pages 1 to 8. Page 9 is empty, with has_more false.
try /orders/page/1.json
/posts/page/{n}.json
/posts.json in a page envelope, 25 per page. Pages 1 to 3. Page 4 is empty, with has_more false.
try /posts/page/1.json
/comments/page/{n}.json
/comments.json in a page envelope, 25 per page. Pages 1 to 12. Page 13 is empty, with has_more false.
try /comments/page/1.json
/countries/page/{n}.json
/countries.json in a page envelope, 25 per page. Pages 1 to 10. Page 11 is empty, with has_more false.
try /countries/page/1.json
/crypto/page/{n}.json
/crypto.json in a page envelope, 25 per page. Pages 1 to 1. Page 2 is empty, with has_more false.
try /crypto/page/1.json
/news/page/{n}.json
/news.json in a page envelope, 25 per page. Pages 1 to 2. Page 3 is empty, with has_more false.
try /news/page/1.json
Utility
/large.json
5000 flat records, about 1 MB. Use it to test speed and memory.
/status.json
A small health-check payload.
Error payloads
/errors/400.json
An error-shaped body for HTTP 400. Served with status 200.
/errors/401.json
An error-shaped body for HTTP 401. Served with status 200.
/errors/403.json
An error-shaped body for HTTP 403. Served with status 200.
/errors/404.json
An error-shaped body for HTTP 404. Served with status 200.
/errors/422.json
An error-shaped body for HTTP 422. Served with status 200.
/errors/429.json
An error-shaped body for HTTP 429. Served with status 200.
/errors/500.json
An error-shaped body for HTTP 500. Served with status 200.