Synthetic uptime
Schedule HTTP, TCP, or DNS probes from one or more regions. Results are stored as pulse_synthetic_up{check="..."} time-series so they can be used in dashboards, alert rules and status pages.
Define a check
POST /api/synthetics
{
"name": "Checkout API",
"kind": "http",
"target": "https://api.acme.com/health",
"intervalMs": 60000,
"timeoutMs": 5000,
"regions": ["us-east-1", "eu-west-2"],
"expect": {
"status": 200,
"bodyMatches": "\"ok\":true"
},
"enabled": true
}
Check kinds
- http — request, status-code assertion, optional regex body match, TLS verification toggle.
- tcp — raw TCP connect with optional banner regex.
- dns — A/AAAA/CNAME/MX/TXT lookup with optional expected value.
Results matrix
GET /api/synthetics/matrix
# → [{
# "checkId":"checkout-api",
# "region":"us-east-1",
# "up":true,
# "durationMs":48,
# "detail":"200 OK"
# }, ...]
Use in alerts
expr: avg_over_time(pulse_synthetic_up{check="checkout-api"}[5m]) < 0.9
threshold: 0.9
forMs: 60000
severity: critical