GraphQL support now available

API monitoring that catches what 200 OK misses

Validate response bodies, check from 6 regions, get alerts in <45s. REST and GraphQL.

99.99% platform uptime | 2M+ daily checks

monitors
3/3 operational
endpoint
uptime
regions
/v1/users
POST
99.97%
us-east eu-west +1
assertions 3/3 passed
status == 201
responseTime < 500ms
$.user.id exists
/v1/orders
GET
100%
us-east eu-west +4
/v1/payments
POST
99.94%
us-east +5

Configuration

Define your checks in JSON or Visually

monitor.json
{
  "endpoint": "https://api.example.com/v1/users",
  "method": "POST",
  "headers": {
    "Authorization": "Bearer ${API_KEY}",
    "Content-Type": "application/json"
  },
  "body": {
    "email": "[email protected]"
  },
  "assertions": [
    { "type": "status", "equals": 201 },
    { "type": "responseTime", "lessThan": 500 },
    { "type": "jsonPath", "path": "$.user.id", "exists": true }
  ],
  "regions": ["us-east", "eu-west", "ap-south"],
  "interval": 30
}
response
Response received: 201 Created (142ms)
Assertions:
status equals 201
responseTime < 500ms (142ms)
$.user.id exists ("usr_abc123")
Response body:
{
  "user": {
    "id": "usr_abc123",
    "email": "[email protected]",
    "created_at": "2024-01-15T10:30:00Z"
  }
}

Capabilities

200 OK isn't always OK

Validate status codes, response times, headers, and JSON response bodies. Assert that $.data.users[0].id exists and matches a pattern.

// assertions
status == 200
time < 500ms
$.user.active == true

6 regions, one view

Catch regional outages before they become global incidents.

us-east us-west eu-west eu-central ap-south ap-east

Alerts that reach you

Route critical APIs to on-call, the rest to a channel.

Slack Discord PagerDuty Email Webhooks

Full HTTP control

Any method, headers, and body. Test APIs exactly as your app calls them.

GET POST PUT PATCH DELETE

First-class GraphQL

Write queries, set variables, validate specific fields. Not just HTTP status.

query { user { id } }

Zero manual setup

Drop your OpenAPI spec. 40 monitors in 5 minutes.

Drop openapi.yaml

Status pages

Custom domain, incident timeline, subscriber notifications, privacy settings. Included free.

status.yourcompany.com
Acme Inc. All Systems Operational
REST API
99.9%
GraphQL API
 100%
Webhooks
99.7%

Response validation

Assert on anything

Most monitoring tools check if your API is up. We check if it's working correctly. Define assertions on status codes, response times, headers, and deep JSON paths.

status

HTTP status code equals, not-equals, or in-range

responseTime

Less than threshold in milliseconds

header

Header exists or matches value

jsonPath

Any JSON path expression: exists, equals, contains, matches

body

Raw body contains string or matches regex

Assertion Builder

jsonPath
$.data.users[0].active
equals
true
status == 200
responseTime < 500
$.data.users[0].active == true

Pricing

Start free, scale when ready

Free

$0 /month
  • 5 monitors
  • 5-minute intervals
  • 1 region
  • Email alerts
  • 24 hours retention
  • Status pages included
  • 1 team member
Start free
Popular

Pro

$25 /month
  • 30 monitors
  • 1-minute intervals
  • 3 regions
  • Slack, Discord, webhooks
  • 30 days retention
  • Status pages included
  • 3 team members
Start 14-day trial

Team

$65 /month
  • 100 monitors
  • 30-second intervals
  • All 6 regions
  • Slack, Discord, webhooks, PagerDuty, Teams
  • 90 days retention
  • Status pages included
  • Unlimited team members
Start 14-day trial

Need more? additional monitors can be added for $0.50 with all regions enabled.

Comparison

Simple pricing, no surprises

Most monitoring tools charge per check. We charge per monitor. Run checks every 30 seconds from 6 regions without watching your bill grow.

Unlimited checks included — no per-request fees
Feature APIAssert $25/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
Actual interval
1 min
1.5 hour
1.5 hour
30 sec 1 min
Regions 3 4 Multiple 19
Data retention 30 days 30 days 5K results 30 days
Status pages 1 1
Status page white-label Included $208/page/mo
GraphQL support
Slack / Discord
Team members 3 3 1 1 +$29/responder 5
Overage costs $0.50/monitor $8/25 monitors + $1.80/10K checks $21/50 monitors $0.70/1K checks

Data from public pricing pages, Dec 2025.

Frequently asked questions

The free plan includes 5 monitors with 5-minute check intervals, 1 region, and 24 hours of data retention. No credit card required. You can upgrade anytime when you need more monitors or faster intervals.
We immediately send alerts through your configured channels (email, Slack, Discord, webhooks, PagerDuty, or Teams). You'll get detailed information about what failed, including response codes, timing data, and which assertions didn't pass.
Assertions let you validate more than just uptime. Check response times, verify JSON structure, validate specific field values, ensure headers are present, and more. If any assertion fails, the check is marked as failed and you're alerted.
We monitor from 6 global regions: US East, US West, Europe, Asia Pacific, South America, and Australia. Multi-region monitoring helps you detect regional outages and latency issues that single-region monitoring would miss.
Yes. You can add custom headers including Authorization tokens, API keys, and any other headers your API requires. We support Bearer tokens, Basic auth, and custom authentication schemes.
Yes, annual billing is available with a discount. Contact us for details on annual plans and custom enterprise pricing.
Every plan includes public status pages. You can create branded status pages showing the real-time status of your monitors. Share them with your users to communicate uptime and incidents transparently.
Yes, you can cancel your subscription at any time. You'll retain access until the end of your billing period. No long-term contracts or cancellation fees.