Help & guidesAdvanced 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 a single request is not enough. Available on the Pro and Business plans for HTTP type monitors.

New monitor form - HTTP type selection, address and interval
Multi-step is set up on an HTTP monitor (you pick the type when creating it).

Where do I set it up?

  1. Open the detail of an HTTP monitor.
  2. In the Multi-step / API monitoring section, paste the JSON with the list of steps and click Save.
  3. An empty field returns the monitor to the 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). It can contain a variable, e.g. .
  • method - GET, POST, PUT, PATCH, DELETE, HEAD (GET by default).
  • headers - a headers object (optional).
  • body - the request body as text (optional).
  • expect_status - the expected HTTP status (200 by default).
  • expect_contains - text that must be present in the response.
  • expect_jsonpath + expect_value - the path in the JSON response and the expected value.
  • save - a variable to JSONPath object, the value is saved for the next steps.
  • name - the step name 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, with an optional $. prefix.

How the status is evaluated: the monitor is Up only if all steps pass. On the first failure it is Down and the error includes the number and name of the step. Response time = the sum of all steps.

Good to know

  • A multi-step monitor runs only from the primary region (multi-region consensus is skipped).
  • Target addresses must not point to the internal network (the same protection as for regular monitors).
  • Variables from save are valid only within a single check.
Was this guide helpful?