API Monitor & Endpoint Tester

Test any API with custom headers, auth tokens and JSON assertions. Monitor it every 5 minutes with email pass/fail reports, Slack alerts and a free status page.

Rate this tool

About this tool

Wrklyst's API monitor does two jobs that normally need two products. First, it is an endpoint tester: paste a URL, pick a method, add whatever headers and body the request needs, and get back the status code, the total round trip, the time to first byte, every response header and the full body — sent from our server rather than your browser, so CORS never gets in the way and you can set headers a browser would refuse to send. Second, it is an uptime monitor: press Monitor this and the same request runs every 5, 15 or 60 minutes against assertions you define, with a public status page, a 24-hour response-time graph, and alerts by webhook or email when it starts failing. There is no signup for either half. A one-off check stores nothing at all — not the URL, not your headers, not the response. A scheduled monitor is held behind a manage key shown to you once, and its saved configuration is encrypted before it is written to disk.

How to Test and Monitor an API Endpoint

  1. 1

    Enter the endpoint URL and choose a method, or paste a cURL command with Import cURL. Add query parameters under Params, credentials under Auth — a bearer token, Basic username and password, or an API key in a header or the query string — and any custom headers under Headers. POST, PUT and PATCH take a JSON, form, XML or text body; GET and HEAD cannot carry one, so that tab is disabled for them, which is the same rule the HTTP spec applies.

  2. 2

    Set what a healthy response looks like under Assertions. The default is a 2xx status. You can also assert on a JSON path — $.data.status equals ok, $.items[0].id exists, $.balance is greater than 0 — or on a substring of the raw body for endpoints that do not return JSON. Press Run check and the result appears with each assertion marked pass or fail and the reason spelled out: "Expected $.status to equal ok, got degraded".

  3. 3

    Run it a second time and the Diff tab compares the two responses. It reports structural changes separately from textual ones, because those mean different things: a timestamp moving is noise, a field disappearing or a number arriving as a string is the change that breaks your client days later.

  4. 4

    If you want it watched continuously, press Monitor this on a schedule. Name it, choose an interval, set the latency above which a check counts as degraded, and optionally add an email address or a webhook URL. You get a public status page link you can share and a manage key you must save — that key is the only way to pause, edit or delete the monitor, because there is no account attached to it.

Why Use Wrklyst's API Monitor

No Signup, Not Even for the Monitoring
Every hosted uptime service wants an account before it will check a single URL. Here the one-off check needs nothing, and a scheduled monitor is identified by an unguessable manage key generated in the response — a design borrowed from our ghost accounts. No email address is required at any point unless you actually want email alerts.
The Request Runs Server-Side
A browser cannot call an arbitrary third-party API and read the answer: CORS blocks the response, and headers like Authorization, Referer and User-Agent are off limits to page JavaScript. Routing the request through our server removes both problems, which is why this works on endpoints that a browser-only tool silently fails on.
Assertions, Not Just Ping
An endpoint returning 200 with an empty body or a JSON error payload is broken, and a monitor that only watches the status code will happily report it as up for weeks. JSON path assertions check the thing you actually care about — that the field is present, that the flag says ok, that the count is above zero.
Schema Changes Alert Separately
Comparing whole response bodies fires on every check, because real APIs include timestamps and request ids. We fingerprint the structure and types instead, so a value changing is silent and a field being renamed, removed, or changed from number to string raises a distinct "changed" alert — healthy, but worth looking at. That is a different event from an outage and it is paged differently.
A Status Page You Can Actually Share
Each monitor gets a link showing uptime percentage, average and p95 response time, incident count, a 24-hour graph with the degraded threshold drawn on it, and the last dozen checks. It deliberately never shows the full URL, your headers, or any response body — only the hostname — so pasting it in a public channel does not leak your API.
Credentials Are Encrypted at Rest
Monitoring a real API means storing a real token. A saved monitor's URL, headers and body are sealed with AES-256-GCM before they touch the database, so a stolen dump is inert. We are explicit that this is not end-to-end encryption — our checker has to send the request, so it can open the envelope — and we would rather say that than imply more.

When You'd Reach for This

The tester and the monitor get used at different moments, usually by the same person a few minutes apart.

Debugging a CORS-Blocked Request
Your fetch fails in the browser console and you cannot tell whether the API is broken or the browser is refusing to show you the answer. Running the same request server-side gives you the real status and body in one step.
Verifying a Deploy
Paste the endpoint after a release, assert on the version field in the response, and confirm the new build is actually serving before you tell anyone it shipped.
Watching a Third-Party Dependency
Your product depends on someone else's API and their status page is optimistic. Monitor the specific endpoint you call, with the assertion you rely on, and find out before your users do.
Catching a Silent Contract Change
A provider renames a field or starts returning a number as a string in a minor release. Nothing 500s, nothing alerts, and your parser breaks. The changed alert is the one that catches this.
A Status Page for a Side Project
You want somewhere to point users when they ask whether the API is down, without running a status-page product for a project with eleven users. The shareable link does that.
Checking a Webhook Receiver
Send a representative POST body to your own webhook endpoint and confirm it responds correctly, which is awkward to do repeatedly from a terminal and impossible from a browser tab.

How It Compares

Endpoint testing and uptime monitoring are usually sold separately, and both usually want an account first.

MethodVerdictWhat that means
Postman or InsomniaBetter for building requests, no monitoring on the free tierA full API client beats this for composing complex requests, collections and environments. Their scheduled monitoring is a paid add-on with a run quota, and neither gives you a public status page you can share with users.
curl in a terminalFine for one request, no assertions or historycurl tells you what came back and nothing else. Getting timing, assertions, and a diff against the previous response means writing a script, and getting it on a schedule means owning a cron box.
UptimeRobot, Better Stack and similarMore features, requires an account and mostly checks status codesHosted monitoring does more — multiple regions, SMS, on-call rotation — and free tiers typically start at five-minute checks with an account and an email address. Body assertions and response-shape alerting are usually on a paid plan.
A GitHub Action on a scheduleFree and flexible, but no status page and awkward alertingA cron workflow running curl works and costs nothing on public repos, with a floor of about five minutes. You still have to build the assertions, the history, the graph and the notification path yourself, and your token lives in repo secrets.
Wrklyst API MonitorNo account for either half, assertions and status page includedA one-off check stores nothing and needs nothing. A scheduled monitor needs no signup, comes with a shareable status page, JSON path assertions, webhook and email alerts, and response-shape change detection — with the saved configuration encrypted at rest.

Getting More Out of Endpoint Monitoring

  • Monitor a dedicated health endpoint that touches your database and your critical dependencies, not the homepage. A static page returning 200 while the database is unreachable is the classic false-green.
  • Add a JSON path assertion on the field that actually indicates health. Plenty of APIs return 200 with {"status":"degraded"} in the body, and only an assertion catches that.
  • Set the degraded threshold near your real p95, not at a round number. The point is to notice the day latency doubles, which a 5000 ms threshold on a 120 ms endpoint never will.
  • Use a webhook into Slack or Discord for the team channel and email for yourself — the webhook payload includes the reason, the status code, the response time, and the specific schema changes.
  • Keep the failure threshold at two or higher for anything on the public internet. Single-check alerting on a five-minute interval mostly teaches people to ignore the alerts.
  • Run the check twice in the tool before you save the monitor, and read the Diff tab. If two consecutive responses already differ structurally, the changed alerts will be noisy and you want to know that now.

Frequently asked questions

Is the API monitor really free?

Yes. On-demand checks are limited to six a minute and sixty an hour per network, which is far more than interactive use needs, and you can create up to five scheduled monitors a day per network. Monitors run at your chosen interval for 30 days and the clock resets every time you open the manage page, so anything you are actually using keeps running. There is no paid tier holding back assertions, alerts, or the status page.

Why does my localhost URL get rejected?

The check runs on our server, not your machine, so localhost there would mean our server — and letting strangers aim requests at private addresses is a well-known class of vulnerability called SSRF. We refuse any URL that resolves to a loopback, private, link-local, or reserved address, we re-check every redirect hop for the same thing, and we pin the connection to the address we validated so DNS cannot change its answer in between. To test a local service, expose it through a tunnel such as ngrok or Cloudflare Tunnel and monitor the public URL.

What is the difference between down, degraded, and changed?

Down means the request failed or an assertion failed: the endpoint is not doing its job. Degraded means every assertion passed but the response took longer than the threshold you set — correct, but slow. Changed means the response passed and was quick, but its structure moved since the last check. Uptime percentage counts degraded and changed as up, because both mean the endpoint answered correctly, and folding them into downtime would make the number mean something other than availability.

How does the JSON path assertion syntax work?

It is a deliberate subset of JSONPath: dotted and bracketed segments, with a leading $ that is optional. $.data.user.email, data[0].id, $["odd.key"], and $.items[-1].status all work — a negative index counts from the end, which is how you assert on the last item without knowing the length. Wildcards, filters, and recursive descent are not supported, because each of them can be made to walk a large response expensively and this runs on a free tier.

What happens if I lose the manage key?

The monitor keeps running until it expires, and you cannot pause, edit, or delete it. There is genuinely no recovery: we store only a scrypt hash of the key, and there is no account or email address to prove ownership against. That is the direct cost of not requiring a signup, and it is why the key is presented with a confirmation checkbox rather than as a quiet line of text. If the monitor is sending you unwanted email, every alert carries a link that switches the emails off without needing the key.

How often do alerts arrive when something stays down?

Once. An alert fires when a monitor has failed the number of consecutive checks you set — two by default, which rides out a single dropped request — and repeats of the same state are then throttled to one every thirty minutes. You get a separate notification when the endpoint recovers. A five-minute monitor on a six-hour outage sends a handful of messages rather than seventy-two.

Can I monitor an endpoint that needs authentication?

Yes, that is the normal case. Add the Authorization header, or whatever custom header your API expects, and it is sent on every scheduled check. Those values are encrypted before storage and are never shown on the public status page. Use a token scoped as narrowly as your provider allows — a read-only health-check key rather than a full-access one — which is good practice with any monitoring service, hosted or self-run.

How large a response can it handle?

We read up to 512 KB of the response and run assertions against all of it, then keep the first 64 KB for display and diffing. Anything past that is discarded rather than buffered, and the panel tells you when it happened. Requests time out after ten seconds including redirects, of which at most five are followed.

Guides for API Monitor