Skip to content

🧪 HTTP Testing API

Echo requests, force status codes, simulate slow networks and get placeholder images.

These endpoints help you check that your HTTP client does what you think. /echo shows exactly what arrived: method, headers, query and body. /status/{code} returns any status so you can test error screens, and /delay/{seconds} answers slowly so you can test loading spinners, timeouts and cancel buttons.

/images/placeholder draws a PNG or SVG of any size with your text and colours: useful for list mock-ups, avatars and image caching tests. Pair them with the REST API Client to try requests in your browser.

Base URL https://toolorca.com/api/v1 No key · CORS open · JSON · conventions and limits

Endpoints

GETPOSTPUTPATCHDELETE /api/v1/echo #

Returns the request: method, path, query, headers and body (parsed JSON or form data, plus the raw text).

Works with GET, POST, PUT, PATCH and DELETE. Bodies up to 100 KB.

Parameter In Type Description
… query any Any query parameters (repeated keys become arrays).
… body any JSON, form-urlencoded or plain text.
curl -X POST 'https://toolorca.com/api/v1/echo?lang=km&page=2' \
  -H 'Content-Type: application/json' \
  -d '{"name":"Sokha","city":"ភ្នំពេញ"}'
POST /echo?lang=km&page=2
Example response
{
  "method": "POST",
  "path": "/echo",
  "query": {
    "lang": "km",
    "page": "2"
  },
  "headers": {
    "host": "toolorca.com",
    "user-agent": "curl/8.7.1",
    "accept": "*/*",
    "content-type": "application/json"
  },
  "body": {
    "name": "Sokha",
    "city": "ភ្នំពេញ"
  },
  "bodyText": "{\"name\":\"Sokha\",\"city\":\"ភ្នំពេញ\"}",
  "contentType": "application/json",
  "receivedAt": "2026-11-14T05:15:25.717Z"
}

GETPOSTPUTPATCHDELETE /api/v1/status/{code} #

Responds with the status code you ask for (200–599).

3xx codes add a Location header, 401 adds WWW-Authenticate, 429 and 503 add Retry-After. 204 and 304 have no body.

Parameter In Type Description
code required path integer HTTP status code, e.g. 404 or 500.
curl 'https://toolorca.com/api/v1/status/404'
GET /status/404
Example response (404)
{
  "status": 404,
  "message": "Not Found",
  "ok": false
}

GETPOSTPUTPATCHDELETE /api/v1/delay/{seconds} #

Waits, then answers. Use it to test loading states and timeouts.

Parameter In Type Description
seconds required path number 0 to 5, decimals allowed (e.g. 1.5).
curl 'https://toolorca.com/api/v1/delay/2'
GET /delay/2
Example response
{
  "delayed": 2,
  "tookMs": 2001,
  "method": "GET"
}

GET /api/v1/images/placeholder/{width}x{height}.png #

A PNG placeholder image (up to 1600×1600). Works in every image widget.

The PNG font draws Latin letters, digits and common symbols; use SVG for Khmer or other scripts.

Parameter In Type Description
width x height required path string e.g. 600x400.png; 300.png makes a square.
text query string Text to draw (default: the size).
bg / fg query hex colour Background and text colour without #, e.g. bg=0f6fde&fg=ffffff.
curl 'https://toolorca.com/api/v1/images/placeholder/600x300.png?text=Hello%20Cambodia&bg=0f6fde&fg=ffffff'
GET /images/placeholder/600x300.png?text=Hello%20Cambodia&bg=…
Example image Placeholder image from /images/placeholder/{width}x{height}.png

GET /api/v1/images/placeholder/{width}x{height}.svg #

An SVG placeholder (up to 4000×4000) that can show any script, including Khmer. Also the default without an extension.

Parameter In Type Description
width x height required path string e.g. 600x300.svg or 600x300.
text query string Text to draw.
bg / fg query hex colour Colours without #.
curl 'https://toolorca.com/api/v1/images/placeholder/600x300.svg?text=%E1%9E%9F%E1%9E%BD%E1%9E%9F%E1%9F%92%E1%9E%8F%E1%9E%B8&bg=16a34a&fg=ffffff'
GET /images/placeholder/600x300.svg?text=%E1%9E%9F%E1%9E%BD%E…
Example image Placeholder image from /images/placeholder/{width}x{height}.svg

Ideas for tests

Point your error handling at /status/500, /status/401 and /status/429 and check each one shows the right message. Set your client timeout to 2 seconds and call /delay/3 to make sure the timeout fires. Send a form with /echo to confirm the content type and encoding your library really uses.

Frequently asked questions

Is there a limit on the delay?

Yes, 5 seconds, so that slow requests do not tie up the server.

Why does my request show extra headers in /echo?

Browsers and HTTP libraries add headers such as User-Agent, Accept and Accept-Encoding. /echo shows them so you can see exactly what was sent.

Can I hotlink the placeholder images?

Yes, in prototypes and tutorials. They are cached for a day and have a generous separate rate limit.

Do these endpoints support CORS?

Yes, every /api/v1 endpoint sends Access-Control-Allow-Origin: * and answers preflight requests.

More free APIs