Help & guides ›
Advanced monitors
› Multi-step / API monitoring
Multi-step / API monitoring
5 min read · Advanced monitors
Multi-step monitoring runs a sequence of HTTP requests as a single monitor: it logs in, saves a token, uses it in the next step and verifies the response via JSONPath. It is ideal for monitoring APIs and login flows where one request is not enough. Available on the Pro and Business plans for HTTP monitors.
Where do I set it up?
- Open an HTTP monitor's detail page.
- In the Multi-step / API monitoring section paste the JSON list of steps and click Save.
- An empty field returns the monitor to a classic single check.
Step format
Steps are a JSON list (max 10). Each step is an object with these fields:
url- the step address (required). May contain a variable, e.g..method- GET, POST, PUT, PATCH, DELETE, HEAD (default GET).headers- a headers object (optional).body- request body as text (optional).expect_status- expected HTTP status (default 200).expect_contains- text that must be present in the response.expect_jsonpath+expect_value- a path in the JSON response and the expected value.save- a variable → JSONPath object; the value is stored for later steps.name- a step label shown in the error message (optional).
Example: login + verification
[
{
"name": "login",
"method": "POST",
"url": "https://api.example.com/auth/login",
"headers": { "Content-Type": "application/json" },
"body": "{\"user\": \"demo\", \"pass\": \"...\"}",
"expect_status": 200,
"save": { "token": "data.access_token" }
},
{
"name": "profile",
"url": "https://api.example.com/me",
"headers": { "Authorization": "Bearer " },
"expect_jsonpath": "user.active",
"expect_value": "True"
}
]
JSONPath
Supports dot notation and array indexes: data.items[0].id, user.name, optional $. prefix.
How the status is decided: the monitor is Up only if all steps pass. On the first failure it goes Down and the error names the failing step number and label. Response time = the sum of all steps.
Good to know
- A multi-step monitor runs from the primary region only (multi-region consensus is skipped).
- Target addresses must not point to the internal network (same protection as regular monitors).
- Variables from
saveare valid within a single check only.
Was this guide helpful?