Catches what 200 OK misses
A status code says the server answered. Assert reads the answer — body, headers, latency — from six regions, every thirty seconds, and fails the check when the payload is wrong.
Three surfaces, one verdict
Every thirty seconds Assert sends the request from six regions, evaluates your assertions against what came back, and decides whether the endpoint is doing its job.
The body
Assert any JSON path with a typed operator: equality, regex, ranges, schema, GraphQL errors.
Six regions
A failure re-runs in the other regions before Assert pages anyone.
expected true · got false
One alert
It carries the diff, and closes itself when the assertion passes again.
Written like tests, because they are
Chain conditions across body, headers, timing and GraphQL errors. Build them in the editor or commit the JSON. It is the same file either way.
Build it in the editor, commit it as JSON
Every monitor is one file. Put it in the repository next to the service it watches, and the check moves with the code.
The rest of the surface area
Response validation
Assert on status, latency, headers and any JSON path. Equality, ranges, regex, schema, presence and deliberate absence.
Read onSix regions per check
Assert runs checks from six regions, and a failure re-runs in the others before it pages anyone. You never pay per region.
Read onGraphQL and REST
Send the query and the variables, then assert that the errors array is empty and the data underneath it is what you expect.
Read onOne alert per incident
Route the critical endpoints to on-call and the rest to a channel. Slack, Discord, PagerDuty, Teams, email and webhooks.
Read onImport an OpenAPI spec
Drop the spec in and Assert writes a monitor per operation, with the status and schema assertions already filled in.
Read onStatus pages
Publish the same verdicts your team sees. Custom domain, incident timeline, subscriber notifications, white-label on every paid plan.
Read onYour API returned 200 all day. It was wrong all day.
Uptime monitoring
Assert
Interval on every plan, free included.
Regions per check, never billed separately.
Assertions evaluated each month.
Alert per incident, once the regions agree.
Priced per monitor, not per check
Every plan runs thirty-second checks, the free one included. Checkly allows 25K checks a month, Assertible 500 per monitor. Assert counts neither.
- 5 monitors
- 5-minute intervals
- 1 region
- Email alerts
- 24 hours retention Detailed logs: response bodies, headers and assertion results. Assert keeps uptime metrics forever.
- Status pages included
- Status page white-label
- Custom domain support
- 1 team member
- 10 monitors
- 1-minute intervals
- 3 regions
- Email, Slack and Discord alerts
- 30 days retention Detailed logs: response bodies, headers and assertion results. Assert keeps uptime metrics forever.
- Status pages included
- Status page white-label
- Custom domain support
- 2 team members
- 30 monitors
- 1-minute intervals
- 3 regions
- Email, Slack and Discord alerts
- 30 days retention Detailed logs: response bodies, headers and assertion results. Assert keeps uptime metrics forever.
- Status pages included
- Status page white-label
- Custom domain support
- 5 team members
- 60 monitors
- 1-minute intervals
- 6 regions
- Every alert channel Alerts through email, Slack, Discord, webhooks, PagerDuty and Microsoft Teams.
- 90 days retention Detailed logs: response bodies, headers and assertion results. Assert keeps uptime metrics forever.
- Status pages included
- Status page white-label
- Custom domain support
- Unlimited team members
Add monitors past the plan limit for $0.50 each, every region enabled.
What the money actually buys
Most tools meter the checks. Assert meters the monitors, so a thirty-second interval across six regions costs the same as a five-minute one.
|
Feature
|
Assert
$23/mo
|
Checkly
$24/mo
|
Assertible
$25/mo
|
Better Stack
$29/mo
|
Runscope
$79/mo
|
|---|---|---|---|---|---|
| Monitors | 30 | 50 | 25 | 10 | — |
| Check limits | Unlimited | 25K/mo | 500/monitor | Unlimited | 250K/mo |
| Min interval | 1 min | 1 min | 1 min | 30 sec | 1 min |
| Interval you can afford How often you can actually check without the plan price going up. | 1 min | 1.5 hour 25K checks a month across 50 monitors is 500 per monitor: about 16 checks a day, or one every 1.5 hours, before the cost rises. | 1.5 hour 500 checks per monitor is about 16 checks a day, or one every 1.5 hours, before the cost rises. | 30 sec | 1 min |
| Regions | 3 | 4 | — | Multiple | 19 |
| Data retention Detailed logs. Assert keeps uptime metrics forever on every plan. | 30 days | 30 days | 5K results | 30 days | — |
| Status pages | 1 | — | — | 1 | — |
| Status page white-label | Included | — | — | $208/page/mo | — |
| GraphQL support | YES | — | — | — | — |
| Slack / Discord | YES | YES | YES | YES | YES |
| Team members | 5 | 3 | 1 | 1 + $29/responder | 5 |
| Overage | $0.50/monitor | $8/25 monitors + $1.80/10K checks | — | $21/50 monitors | $0.70/1K checks |
Taken from public pricing pages, December 2025.
Answered plainly
How does the free plan work?
The free plan gives you 5 monitors, 5-minute intervals, 1 region and 24 hours of detailed retention. We do not ask for a card. Upgrade when you want more monitors, faster intervals or more regions.
What happens when an assertion fails?
Assert re-runs the check in the other regions first. If they agree, it opens one incident carrying the assertion, the expected value, the received value and the regions that saw it, then sends that to email, Slack, Discord, webhooks, PagerDuty or Microsoft Teams. The incident closes itself when the assertion passes again.
What can an assertion read?
The status code, the response time, any header, any JSON path in the body, the raw body, and the GraphQL errors array. Operators cover equality, ranges, regular expressions, schema, presence and deliberate absence.
Which regions run the checks?
Six: US East, US West, Europe West, Europe Central, Asia Pacific and South America. The regions on your plan are part of the price, and Assert never charges per check.
Can Assert monitor an authenticated API?
Yes. Add the headers your API needs, including Authorization. Bearer tokens, Basic auth and custom schemes all work. Assert stores the secrets encrypted and redacts them from logs.
Do the checks count against a quota?
No. Assert charges for the monitor, not the check. A monitor at 30-second intervals across six regions costs the same as one at five minutes.
Is annual billing available?
Yes, at a discount. Write to us for annual terms and for plans larger than Team.
Can I cancel at any time?
Yes. The plan stays active until the end of the billing period. There is no contract and no cancellation fee.
$8 a month.
No call to find out.
Thirty-second checks on every plan, and Assert never bills a region separately. The incumbents charge per region and call it enterprise.