REST · OpenAPI 3.0
API reference
JSONPlaceholder-style REST API across 118 collections. GET returns JSON, while HEAD
returns the same status and headers without a body. POST,
PUT,
PATCH, and
DELETE
are accepted and return realistic responses but do not persist. Use them to
prototype CRUD flows and exercise client-side error handling.
List
curl https://example-data.com/api/v1/users Get one
curl https://example-data.com/api/v1/users/1 Create a tag (fake)
curl -X POST https://example-data.com/api/v1/tags \
-H 'Content-Type: application/json' \
-d '{"name":"tutorial","slug":"tutorial","color":"#7c3aed","useCount":1}' Rate limits
/api/v1/* responses publish a
recommended client budget of
60 requests/min/IP
(and 1000/hour/IP). A deployment can enforce that budget with Cloudflare edge rules; the Worker
itself does not maintain a per-IP counter. Responses include
X-RateLimit-Limit,
X-RateLimit-Remaining,
X-RateLimit-Reset, and
X-RateLimit-Policy headers. The
Worker can't read the edge counter directly, so X-RateLimit-Remaining
is a static informational hint. When edge enforcement is enabled, the source of truth is a 429
with Retry-After
if you exceed the limit.
Error format
API-generated 4xx/5xx responses follow RFC 7807 Problem Details. Each
type URL opens human-readable
documentation:
{
"type": "https://example-data.com/errors/validation-failed",
"title": "Validation failed",
"status": 422,
"detail": "Request body failed validation against the users schema.",
"instance": "/api/v1/users",
"invalidParams": [{ "name": "email", "reason": "Invalid email format" }]
} Reference
Powered by the OpenAPI spec at /openapi.json.
Download a declaration for any collection from /types/<collection>.d.ts,
such as /types/users.d.ts. Save it locally before importing it into TypeScript; collection-page snippets include the
exact command.
Loading the interactive API reference. You can also open the JSON specification.