Skip to main content
By the end of this guide, you’ll have monitors that detect slow endpoints before they become outages — using layered response time thresholds at warn and fail severity.

Why response time budgets matter

An endpoint that’s technically “up” but responding in 10 seconds is effectively broken for users. Response time assertions let you define performance budgets at multiple levels, catching degradation early.

Set up layered thresholds

Use two assertions — a warning for early detection and a failure for critical slowdowns:
This gives you:
  • Warning at 500ms — endpoint is slower than expected, investigate
  • Failure at 2000ms — endpoint is critically slow, open a DEGRADED incident
In the CLI, the shorthand --assertion 'response_time<N' creates a warn-severity assertion; pass a JSON object (as above) when you need fail severity. To add a threshold to an existing monitor, use POST /api/v1/monitors/{monitorId}/assertions with a body like {"severity": "warn", "config": {"type": "response_time", "thresholdMs": 500}}.

Combine with trigger rules

Response time assertions detect individual slow checks. For incident creation, use a response_time trigger rule to aggregate across checks:
This creates a DEGRADED incident when the p95 response time exceeds 2 seconds across any region, while still opening a DOWN incident for complete failures.

Aggregation types

Route differently by severity

Use notification policies to handle DEGRADED and DOWN incidents differently:

Choosing thresholds

Base your thresholds on baseline measurements. Use the Dashboard’s response time charts to understand normal performance for each monitor.

Next steps

Incident policies

Configure trigger rules and response time aggregation.

HTTP assertions

Full list of HTTP assertion types.

Alert routing by tag

Send degraded and down alerts to different teams.