A real REST API for your app, one click away
Describe your resources, press Create and get an HTTPS URL with full CRUD that your web app, emulator or phone can call right now. Free, no account, json-server compatible.
Checking the service…
GET api.pes.elpagesweb.com/rdn0xchah2s0/tasks?_expand=project
Editor
Schema
textparagraphnamecompanyemailphoneurlimageaddresscitycountrylatlngint 0-20number 0-40booldatedatetimeenum A|Buuidcolorref resourcejson
Load a project file exported here, or any db.json: the schema is inferred from the values and your rows are kept.
By creating an API you accept the terms of use. Fictitious data only.
Your API will appear here
Pick an example or describe your resources, then press Create API. You get a URL your app can call right away.
- Describe resources and fields
- Create the API
- Call it from the console or your app
Edit token and keys
Save the edit token somewhere safe: it changes the schema and deletes the API, and anyone with it can edit. It is stored in this browser only.
Send the write key in the X-Api-Key header. It is fine in app code; the edit token is not.
Routes
Client code, ready to paste
Uses your API's URL.
Open it in editor.swagger.io to browse the contract.
The same data works offline. Download db.json and serve it with json-server, the same query syntax as this API:
npx json-server@0.17.4 --watch db.json --port 8080 --host 0.0.0.0
My APIs
Kept in this browser with their edit tokens. Export one to keep working another day or on another computer: importing the file recreates it with its data.
What every resource understands
The json-server 0.17 query syntax, plus delays and errors on demand to test loading and error states.
| Request | Does |
|---|---|
GET /tasks?done=true | Equal to a value. Repeat the parameter for OR. |
?priority_gte=2&priority_lte=3 | Ranges with _gte and _lte, different with _ne. |
?title_like=report | Contains, ignoring case. |
?q=report | Searches every text field. |
?_sort=priority,id&_order=desc,asc | Sorts by one or more fields. |
?_page=2&_limit=10 | Pages, with X-Total-Count and Link headers. _start and _end slice. |
GET /projects/1/tasks | Children of a row (POST fills projectId). |
?_expand=project · ?_embed=tasks | Adds the parent row, or the child rows. |
?_delay=1500 | Answers after 1.5 s (up to 3 s), to see your loading state. |
?_status=503 | Answers with that error and changes nothing, to test error handling. |
GET /db | The whole data set. |
Stricter than json-server on purpose: fields that are not in the schema are rejected with their name, values are checked against their type, and ids are integers assigned by the server. Typos in your app show up at once instead of weeks later.
Limits, stated plainly
| Resources per API | |
| Fields per resource | |
| Rows per resource | |
| Size of an API | |
| Characters per text value | |
| New APIs per network and hour | |
| Deleted after this many days without changes | |
| Maximum life of an API, in days |
When many people use it at once
The service runs on free infrastructure with daily quotas. Under high demand, creating new APIs pauses first, so the ones that already exist keep working. Every refusal comes back as JSON with a clear message and a Retry-After header, and the page tells you when to try again. If even existing APIs stop answering, the free daily quota is spent: it comes back at midnight UTC. Meanwhile download db.json and run it yourself.
Moving to your real backend
Your app only knows a base URL. When the real API is ready, change that line; if it follows the same routes, nothing else changes.
Questions
Is it really free?
Yes. There is no account and no paid plan. Ads on this page help cover it, and the limits above keep it free for everyone.
How long does my API last?
It is deleted 30 days after the last change, and in any case 180 days after it was created. Export it from My APIs to keep the schema and data, and import the file to bring it back.
Can my team edit the same API?
Yes: Share edit access copies a link that adds the API, with its edit token, to the browser that opens it. Share it only with people you trust.
Can I store real data?
No. Use fictitious data only: no real people's data, passwords or payment details. Open and read-only APIs can be read by anyone who has the URL.
Does it work from an Android emulator or a phone?
Yes. It is served over HTTPS with CORS open, so emulators, phones and web apps can call it without cleartext exceptions or proxies.
How is it different from json-server?
It is hosted, so the whole team and every device share one API without running anything. It speaks the same query syntax, validates writes against your schema, and adds simulated delays and errors. Deleting a row does not delete its children.
Report an API
If an API holds illegal content, real personal data or anything that breaks the terms of use, tell us. Reports are reviewed without undue delay. You can also write to appsdelpages@gmail.com.