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.
/v1/monitors/browser-zonesThe 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 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 }]/v1/monitors/browser-runsNeeds 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 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" }}/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 Your organization's API key.
In: header
Path Parameters
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"}/v1/monitors/browser-checks/generateNeeds a READ_WRITE key. Writes a script for url from description and runs it once; nothing is saved.
Authorization
apiKey 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" } }}/v1/monitors/{monitorId}/browserNeeds 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 Your organization's API key.
In: header
Path Parameters
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"}/v1/monitors/{monitorId}/browser-runsScheduled runs and "Run now" runs, newest first. Runs are kept 30 days.
Authorization
apiKey Your organization's API key.
In: header
Path Parameters
Query Parameters
value <= 10020Only runs at or before this time.
date-timeResponse 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" }]/v1/monitors/{monitorId}/browser-runs/{runId}/repairNeeds a READ_WRITE key. A new locator for the one the failed run could not find. Changes nothing.
Authorization
apiKey Your organization's API key.
In: header
Path Parameters
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"}/v1/monitors/{monitorId}/browser-runs/{runId}/repair/acceptNeeds a READ_WRITE key. Saves script of a suggestion as the check's script.
Authorization
apiKey Your organization's API key.
In: header
Path Parameters
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"}