Skip to content

API reference

Browser checks

Browser checks endpoints of the StatusTick REST API: zones a browser check can run in, run a browser script now, get a browser run.

GET/v1/monitors/browser-zones

The browser runner's zones (none while browser checks are off), then your organization's private locations. Use the locationId values in a BROWSER monitor's locationIds setting and a zone value to run a script now. A private location has no zone; runsBrowserChecks is false while none of its agents has browser runs above 0, and a BROWSER monitor cannot pick it then (location.no_browser_runs.unprocessable).

Authorization

apiKey
AuthorizationBearer <token>

Your organization's API key.

In: header

Response Body

application/json

curl -X GET "https://example.com/v1/monitors/browser-zones"
[  {    "zone": "US_EAST",    "name": "US East",    "locationId": "loc_70QYAWZXHXgGldJh1yUxrz",    "type": "PUBLIC",    "runsBrowserChecks": true  },  {    "zone": null,    "name": "Office network",    "locationId": "loc_5HbRz8TtYw3nMaK1pQv0Ud",    "type": "PRIVATE",    "runsBrowserChecks": false  }]

Run a browser script now

POST/v1/monitors/browser-runs

Needs a READ_WRITE key. Runs the saved script of monitorId once, or browser against url (both are needed without monitorId; with it they replace the saved ones for this run only). The run is kept with the monitor's runs but never changes its status. 5 runs a minute per organization.

Authorization

apiKey
AuthorizationBearer <token>

Your organization's API key.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/monitors/browser-runs" \  -H "Content-Type: application/json" \  -d '{    "monitorId": "mnt_7QpLx2VbN9cRt4WmZs1HyE"  }'
{  "completed": true,  "run": {    "id": "string",    "monitorId": "string",    "zone": "GLOBAL",    "zoneName": "string",    "manual": true,    "status": "UP",    "result": "PASSED",    "message": "string",    "durationMs": 0,    "failedStep": "string",    "error": "string",    "steps": [      {        "test": "string",        "title": "string",        "durationMs": 0,        "passed": true      }    ],    "slowSteps": [      "string"    ],    "webVitals": {      "lcpMs": 0,      "cls": 0,      "tbtMs": 0    },    "screenshotURL": "string",    "traceURL": "string",    "createdAt": "2019-08-24T14:15:22Z"  }}

Get a browser run

GET/v1/monitors/browser-runs/{runId}

Runs are kept 30 days. The screenshot and trace links work for a few minutes; get the run again for new ones.

Authorization

apiKey
AuthorizationBearer <token>

Your organization's API key.

In: header

Path Parameters

runId*string

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/monitors/browser-runs/brn_3VtQm8ZkLx2WcRy7Hn0PaB"
{  "id": "brn_3VtQm8ZkLx2WcRy7Hn0PaB",  "monitorId": "mnt_7QpLx2VbN9cRt4WmZs1HyE",  "zone": "EUROPE_WEST",  "zoneName": "Europe West",  "manual": false,  "status": "DOWN",  "result": "FAILED",  "message": "Step \"checkout > click pay\" failed from Europe West: Timeout 5000ms exceeded waiting for getByRole('button', { name: 'Pay' })",  "durationMs": 8420,  "failedStep": "checkout > click pay",  "error": "Timeout 5000ms exceeded waiting for getByRole('button', { name: 'Pay' })",  "steps": [    {      "test": "checkout",      "title": "login",      "durationMs": 1830,      "passed": true    },    {      "test": "checkout",      "title": "checkout > click pay",      "durationMs": 5010,      "passed": false    }  ],  "slowSteps": [],  "webVitals": {    "lcpMs": 1240,    "cls": 0.02,    "tbtMs": 180  },  "screenshotURL": "https://api.statustick.com/v1/browser-runs/brn_3VtQm8ZkLx2WcRy7Hn0PaB/artifacts/screenshot?expires=1759053900&signature=9f2c…",  "traceURL": "https://api.statustick.com/v1/browser-runs/brn_3VtQm8ZkLx2WcRy7Hn0PaB/artifacts/trace?expires=1759053900&signature=41ab…",  "createdAt": "2026-09-28T10:00:00Z"}
POST/v1/monitors/browser-checks/generate

Needs a READ_WRITE key. Writes a script for url from description and runs it once; nothing is saved.

Authorization

apiKey
AuthorizationBearer <token>

Your organization's API key.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/monitors/browser-checks/generate" \  -H "Content-Type: application/json" \  -d '{    "url": "https://shop.example.com",    "description": "Add a product to the cart and open the checkout."  }'
{  "script": "string",  "variables": [    "string"  ],  "run": {    "completed": true,    "run": {      "id": "string",      "monitorId": "string",      "zone": "GLOBAL",      "zoneName": "string",      "manual": true,      "status": "UP",      "result": "PASSED",      "message": "string",      "durationMs": 0,      "failedStep": "string",      "error": "string",      "steps": [        {          "test": "string",          "title": "string",          "durationMs": 0,          "passed": true        }      ],      "slowSteps": [        "string"      ],      "webVitals": {        "lcpMs": 0,        "cls": 0,        "tbtMs": 0      },      "screenshotURL": "string",      "traceURL": "string",      "createdAt": "2019-08-24T14:15:22Z"    }  }}
PUT/v1/monitors/{monitorId}/browser

Needs a READ_WRITE key. Only for BROWSER monitors. Replaces the script, variables, allowed hosts and step thresholds; send ******** as a variable's value to keep the stored one.

Authorization

apiKey
AuthorizationBearer <token>

Your organization's API key.

In: header

Path Parameters

monitorId*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

curl -X PUT "https://example.com/v1/monitors/mnt_4KrVK3M1DqhDTFouCffKie/browser" \  -H "Content-Type: application/json" \  -d '{    "script": "import { test, expect } from \'@playwright/test\';\\n\\ntest(\'checkout\', async ({ page }) => {\\n  await test.step(\'login\', async () => {\\n    await page.goto(\'https://shop.example.com/login\');\\n    await page.getByLabel(\'Password\').fill(process.env.SHOP_PASSWORD);\\n  });\\n});\\n",    "language": "TYPESCRIPT",    "variables": {      "SHOP_PASSWORD": "********"    },    "allowedHosts": [      "*.stripe.com"    ],    "slowStepThresholdsMs": {      "login": 3000    }  }'
{  "id": "string",  "name": "string",  "slug": "string",  "url": "string",  "type": "HTTP",  "intervalSeconds": 0,  "settings": {    "notificationDelayMinutes": 0,    "timeoutSeconds": 0,    "sslCheckEnabled": true,    "redirectCheckEnabled": true,    "httpMethod": "GET",    "requestHeaders": {      "property1": "string",      "property2": "string"    },    "requestBody": "string",    "requestBodyType": "RAW",    "expectedStatusCodes": [      0    ],    "expectedResponseHeaders": {      "property1": "string",      "property2": "string"    },    "responseTextCheck": "string",    "responseTextMode": "CONTAINS",    "responseTextCaseSensitive": true,    "jsonAssertions": [      {        "path": "string",        "equals": "string",        "exists": true      }    ],    "zones": [      "GLOBAL"    ],    "locationIds": [      "string"    ],    "requiredFailingZones": 0,    "blockedOpensIncident": true,    "degradedResponseTimeMs": 0,    "ipVersion": "AUTO",    "sslExpiryAlertDays": [      0    ],    "sslOnTCP": true,    "domainExpiryCheckEnabled": true,    "domainExpiryAlertDays": [      0    ],    "assetCheckEnabled": true,    "assetIgnoreHosts": [      "string"    ],    "dnsRecordType": "string"  },  "locationIds": [    "string"  ],  "nextCheckAt": "2019-08-24T14:15:22Z",  "lastCheckAt": "2019-08-24T14:15:22Z",  "lastCheckStatus": "UP",  "lastResponseTimeMs": 0,  "certificate": {    "validFrom": "string",    "validTo": "string",    "issuer": "string",    "subject": "string",    "valid": true,    "error": "string",    "checkedAt": "string"  },  "heartbeat": {    "pingPath": "string",    "pingURL": "string",    "graceSeconds": 0,    "lastPingAt": "string",    "lastDurationMs": 0,    "cron": "string",    "timeZone": "string",    "rotatingUntil": "string",    "urlLastUsedAt": "string",    "previousURLLastUsedAt": "string"  },  "domain": {    "name": "string",    "expiresAt": "string",    "registrar": "string",    "checkedAt": "string"  },  "pageAssets": {},  "browser": {    "script": "string",    "language": "TYPESCRIPT",    "variables": {      "property1": "string",      "property2": "string"    },    "allowedHosts": [      "string"    ],    "slowStepThresholdsMs": {      "property1": 1,      "property2": 1    }  },  "database": {    "database": "string",    "user": "string",    "password": "string",    "userEnv": "string",    "passwordEnv": "string",    "tls": false,    "tlsVerify": true,    "query": "string",    "expectedValue": "string"  },  "mcp": {    "authHeaderName": "string",    "authHeaderValue": "string",    "toolCount": 0,    "toolsHash": "string",    "schemaChangedAt": "2019-08-24T14:15:22Z",    "serverName": "string",    "serverVersion": "string",    "protocolVersion": "string"  },  "protocol": {    "grpcService": "string",    "tlsMode": "NONE",    "tlsVerify": true,    "requireStartTLS": false  },  "vendorIds": [    "string"  ],  "inMaintenance": true,  "locationOffline": true,  "tags": [    "string"  ],  "group": "string",  "managedBy": "KUBERNETES",  "managedKey": "string",  "status": "ACTIVE",  "createdAt": "2019-08-24T14:15:22Z",  "updatedAt": "2019-08-24T14:15:22Z"}
GET/v1/monitors/{monitorId}/browser-runs

Scheduled runs and "Run now" runs, newest first. Runs are kept 30 days.

Authorization

apiKey
AuthorizationBearer <token>

Your organization's API key.

In: header

Path Parameters

monitorId*string

Query Parameters

limit?integer
Rangevalue <= 100
Default20
before?string

Only runs at or before this time.

Formatdate-time

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/monitors/mnt_4KrVK3M1DqhDTFouCffKie/browser-runs"
[  {    "id": "string",    "monitorId": "string",    "zone": "GLOBAL",    "zoneName": "string",    "manual": true,    "status": "UP",    "result": "PASSED",    "message": "string",    "durationMs": 0,    "failedStep": "string",    "error": "string",    "steps": [      {        "test": "string",        "title": "string",        "durationMs": 0,        "passed": true      }    ],    "slowSteps": [      "string"    ],    "webVitals": {      "lcpMs": 0,      "cls": 0,      "tbtMs": 0    },    "screenshotURL": "string",    "traceURL": "string",    "createdAt": "2019-08-24T14:15:22Z"  }]
POST/v1/monitors/{monitorId}/browser-runs/{runId}/repair

Needs a READ_WRITE key. A new locator for the one the failed run could not find. Changes nothing.

Authorization

apiKey
AuthorizationBearer <token>

Your organization's API key.

In: header

Path Parameters

monitorId*string
runId*string

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/monitors/mnt_4KrVK3M1DqhDTFouCffKie/browser-runs/brn_3VtQm8ZkLx2WcRy7Hn0PaB/repair"
{  "failedStep": "string",  "oldLocator": "string",  "newLocator": "string",  "diff": "string",  "script": "string"}

Save a suggested fix

POST/v1/monitors/{monitorId}/browser-runs/{runId}/repair/accept

Needs a READ_WRITE key. Saves script of a suggestion as the check's script.

Authorization

apiKey
AuthorizationBearer <token>

Your organization's API key.

In: header

Path Parameters

monitorId*string
runId*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/monitors/mnt_4KrVK3M1DqhDTFouCffKie/browser-runs/brn_3VtQm8ZkLx2WcRy7Hn0PaB/repair/accept" \  -H "Content-Type: application/json" \  -d '{    "script": "string"  }'
{  "id": "string",  "name": "string",  "slug": "string",  "url": "string",  "type": "HTTP",  "intervalSeconds": 0,  "settings": {    "notificationDelayMinutes": 0,    "timeoutSeconds": 0,    "sslCheckEnabled": true,    "redirectCheckEnabled": true,    "httpMethod": "GET",    "requestHeaders": {      "property1": "string",      "property2": "string"    },    "requestBody": "string",    "requestBodyType": "RAW",    "expectedStatusCodes": [      0    ],    "expectedResponseHeaders": {      "property1": "string",      "property2": "string"    },    "responseTextCheck": "string",    "responseTextMode": "CONTAINS",    "responseTextCaseSensitive": true,    "jsonAssertions": [      {        "path": "string",        "equals": "string",        "exists": true      }    ],    "zones": [      "GLOBAL"    ],    "locationIds": [      "string"    ],    "requiredFailingZones": 0,    "blockedOpensIncident": true,    "degradedResponseTimeMs": 0,    "ipVersion": "AUTO",    "sslExpiryAlertDays": [      0    ],    "sslOnTCP": true,    "domainExpiryCheckEnabled": true,    "domainExpiryAlertDays": [      0    ],    "assetCheckEnabled": true,    "assetIgnoreHosts": [      "string"    ],    "dnsRecordType": "string"  },  "locationIds": [    "string"  ],  "nextCheckAt": "2019-08-24T14:15:22Z",  "lastCheckAt": "2019-08-24T14:15:22Z",  "lastCheckStatus": "UP",  "lastResponseTimeMs": 0,  "certificate": {    "validFrom": "string",    "validTo": "string",    "issuer": "string",    "subject": "string",    "valid": true,    "error": "string",    "checkedAt": "string"  },  "heartbeat": {    "pingPath": "string",    "pingURL": "string",    "graceSeconds": 0,    "lastPingAt": "string",    "lastDurationMs": 0,    "cron": "string",    "timeZone": "string",    "rotatingUntil": "string",    "urlLastUsedAt": "string",    "previousURLLastUsedAt": "string"  },  "domain": {    "name": "string",    "expiresAt": "string",    "registrar": "string",    "checkedAt": "string"  },  "pageAssets": {},  "browser": {    "script": "string",    "language": "TYPESCRIPT",    "variables": {      "property1": "string",      "property2": "string"    },    "allowedHosts": [      "string"    ],    "slowStepThresholdsMs": {      "property1": 1,      "property2": 1    }  },  "database": {    "database": "string",    "user": "string",    "password": "string",    "userEnv": "string",    "passwordEnv": "string",    "tls": false,    "tlsVerify": true,    "query": "string",    "expectedValue": "string"  },  "mcp": {    "authHeaderName": "string",    "authHeaderValue": "string",    "toolCount": 0,    "toolsHash": "string",    "schemaChangedAt": "2019-08-24T14:15:22Z",    "serverName": "string",    "serverVersion": "string",    "protocolVersion": "string"  },  "protocol": {    "grpcService": "string",    "tlsMode": "NONE",    "tlsVerify": true,    "requireStartTLS": false  },  "vendorIds": [    "string"  ],  "inMaintenance": true,  "locationOffline": true,  "tags": [    "string"  ],  "group": "string",  "managedBy": "KUBERNETES",  "managedKey": "string",  "status": "ACTIVE",  "createdAt": "2019-08-24T14:15:22Z",  "updatedAt": "2019-08-24T14:15:22Z"}
All docs