Skip to content

🧑‍💻 Free Sample API for Developers

38 ready-to-use JSON endpoints for app prototypes, tutorials and testing. No key, no sign-up.

Base URL https://toolorca.com/api/v1 Try requests in the REST client

📚 Dictionary API

Khmer–Khmer (Chuon Nath), English–Khmer, Khmer–English, Korean, Japanese and Chinese with Khmer meanings.

/dictionaries 4 endpoints →

🗓️ Khmer Calendar API

Lunar date (កើត/រោច), Buddhist Era, animal year, sak, sila days, holidays and Khmer New Year.

/khmer-calendar/date 4 endpoints →

🛒 Fake Store API

Products with Khmer names, USD prices, ratings and images, plus categories and carts.

/products 11 endpoints →

👥 Fake Users & Posts API

30 users with Khmer names and avatars, 100 posts, 300 comments, 150 todos and Khmer proverbs.

/users 11 endpoints →

🔐 Fake Auth API

Log in with demo users, get a JWT, call /auth/me with a Bearer token and refresh it.

/auth/login 3 endpoints →

🧪 HTTP Testing API

Echo any request, return any status code, add delays and generate placeholder images.

/echo 5 endpoints →

What is the ToolOrca API?

ToolOrca runs a small, free REST API for students and developers in Cambodia and everywhere else. Two parts serve real data: the Khmer dictionaries and the Khmer lunar calendar. The rest is fake but realistic data, like JSONPlaceholder or FakeStoreAPI, with Khmer names and Cambodian products, so you can build a shop, a social feed, a to-do app or a login screen before your own backend is ready.

Every page shows the endpoint, its parameters, code for curl, JavaScript, Flutter/Dart, Kotlin and Swift, an example response and a Try it button that calls the live API.

Quick start

fetch('https://toolorca.com/api/v1/products?limit=5')
  .then((res) => res.json())
  .then(({ data, meta }) => console.log(data, meta));

Conventions

Responses

All responses are UTF-8 JSON. Single items are returned as an object. Lists always look like this, so one model class fits every list:

{
  "data": [
    {
      "id": 1,
      "title": "…"
    },
    {
      "id": 2,
      "title": "…"
    }
  ],
  "meta": {
    "total": 69,
    "limit": 2,
    "skip": 0,
    "page": 1,
    "pages": 35
  }
}

Pagination, search and sorting

Use ?limit= (default 30, max 100) with ?skip= or ?page=. Fake data lists also accept ?q= for search, ?sortBy= with ?order=asc|desc, and ?select=title,price to return only some fields. Add ?pretty to any URL to get indented JSON in the browser.

Errors

Errors use the right HTTP status code and the same shape every time:

{
  "error": {
    "status": 404,
    "code": "not_found",
    "message": "No product with id 999."
  }
}

Common codes: 400 bad parameter, 401 missing or invalid token, 404 not found, 405 method not allowed, 413 body over 100 KB, 422 missing required fields, 429 rate limit reached.

Write requests

POST, PUT, PATCH and DELETE on the fake data are accepted and answered like a real API (201 Created with a new id, the updated object, or the deleted object with isDeleted: true), but nothing is saved. Send JSON with Content-Type: application/json; bodies are limited to 100 KB.

CORS

Every /api/v1 response includes Access-Control-Allow-Origin: *, and OPTIONS preflight requests are answered, so browser apps on any domain (and localhost) can call the API directly. Native apps (Flutter, Android, iOS) are not affected by CORS.

Rate limits

EndpointsPer minutePer day
Dictionaries903,000
Calendar, fake data, auth, testing12010,000
Placeholder images60030,000

Limits are per IP address. Every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset (seconds until the minute window resets). Over the limit you get 429 with a Retry-After header. GET responses are cacheable; cache them in your app to stay well inside the limits.

Terms of use

  • Free for learning, teaching, personal projects, hackathons and prototypes. No key or account needed.
  • No SLA and no guarantee: endpoints may change or be down. Do not build a business-critical product on it.
  • The fake data is invented. People, phone numbers, emails (example.com), companies and brands are fictional.
  • Do not try to download whole dictionaries, overload the server or get around the limits. Abusive IPs may be blocked.
  • Fake auth tokens use a public key: never use them to protect real data.
  • A link to ToolOrca in your tutorial or app credits is appreciated. Questions: contact us.

Frequently asked questions

Is the ToolOrca API really free?

Yes. There is no key, no sign-up and no payment. It is meant for learning, tutorials, hackathons and prototypes, with fair per-IP rate limits.

Can I use it in a production app?

Only at your own risk. There is no SLA, data can change between versions and limits may be adjusted. For the fake data APIs, move to your own backend before launch.

Do write requests change the data?

No. POST, PUT, PATCH and DELETE on the fake data return realistic responses, but nothing is stored, so every user always sees the same data.

Does it work from a browser (CORS)?

Yes. Every /api/v1 endpoint sends Access-Control-Allow-Origin: * and answers OPTIONS preflight requests, so it works from React, Vue, Angular or plain JavaScript on any domain.

Which languages can I use?

Any language that can make HTTP requests. Each endpoint page has ready-made examples for curl, JavaScript, Flutter/Dart, Kotlin and Swift.