Skip to main content
All paths are prefixed with /api/v1. Unless noted, requests require:
  • Authorization: Bearer {token}
  • Accept: application/json
  • Verified user email
  • Appropriate OAuth scope
Team-scoped routes also require active team subscription.

Me

GET /me

Returns the authenticated user and all teams they belong to. Scope: teams:read Response 200:

Teams

GET /teams

List teams for the authenticated user. Scope: teams:read
Team permission: viewAny on teams
Response 200: { "data": [ Team, ... ] }

GET /teams/{team}

Show one team by UUID. Scope: teams:read
Team permission: view on team
Response 200: Team resource

GET /teams/{team}/monitoring

Read team monitoring defaults: enabled tools, cadences, request header, issue settings, quiet time, escalation, cadence presets, and UI helper metadata. Scope: teams:read
Team permission: view team
Response 200:
See Team monitoring resource for field details.

PATCH /teams/{team}/monitoring

Update team monitoring defaults. Mirrors the dashboard Monitoring page (automatic checks, issue rules, escalation, and quiet time). Scope: teams:write
Team permission: updateMonitoring (admins and owners)
Response 200: Same shape as GET /teams/{team}/monitoring
Body: Tool-specific fields match the monitoring settings schema.
monitoring_settings.tools must include the tools you want configured. Dashboard updates send the full settings object.
DNS expected records are not writable through this endpoint. Configure them on a site’s edit page or with dns_expected_records on POST /teams/{team}/sites or PATCH /sites/{site}.
Example:
Updating cadences resyncs automatic schedules for all team sites.

Monitoring settings fields

The same nested shape is used for team monitoring updates and per-site overrides. At site level, provide both request_header.name and request_header.value to replace the team header. Omit the object or leave it empty to inherit the team value.

Sites

Team-scoped site management uses the team UUID as {team}. Individual site routes use {site} uuid.

GET /teams/{team}/sites

Paginated site list for a team. Includes latest check per tool. Scope: sites:read
Team permission: viewAny sites
Query parameters: Response 200: Paginated Site collection

POST /teams/{team}/sites

Create a site. Scope: sites:write
Team permission: create site
Response: 201 with Site resource
Body:
The API accepts omitted name. The dashboard add-site form requires a display name and exposes detailed overrides on the site edit page after creation.
Plan limits apply to site count and automatic monitoring cadence.
Example:

POST /teams/{team}/sites/bulk

Create up to 100 sites in one request. Scope: sites:write
Team permission: create site
Response 200: Bulk response
Body:

GET /sites/{site}

Show one site by uuid. Scope: sites:read
Team permission: view site
Response 200: Site resource with latest_checks

PATCH /sites/{site}

Update a site. Sends the full site shape expected by the dashboard update form (including url). Scope: sites:write
Team permission: update site
Response 200: Updated Site resource
Body: url is required on every request. The other fields are optional. Example:
Updating enabled checks or cadences resyncs automatic schedules.

DELETE /sites/{site}

Delete a site and its schedules, checks, and issues. Scope: sites:delete
Team permission: delete site
Response: 204 No Content

Checks

GET /sites/{site}/checks

Paginated check history for a site. Scope: checks:read
Team permission: viewChecks
Query parameters: Response 200: Paginated Check collection

POST /sites/{site}/checks

Queue one or more on-demand checks. Every check queued through the API is an on-demand check, counts against your team’s monthly on-demand check quota, and is subject to API cadence protection. Scope: checks:run
Team permission: createCheck
Rate limit: 10 requests / minute
Response: 202 Accepted with array of Check resources (usually pending)
Body: Rules:
  • Each tool must be enabled on the site
  • The tool must not already have a pending on-demand check on the site
  • Through the API, the same tool can only be queued again after its minimum on-demand cadence has passed for the site
  • Automatic checks do not block on-demand runs
Example:
Validation errors (422):
Poll GET /checks/{check} until status is terminal. See Check results.

GET /checks/{check}

Show one check by uuid, including full result and nested site summary. Scope: checks:read
Team permission: view check (via site team membership)
Response 200: Check resource

DELETE /checks/{check}

Delete an on-demand check (automatic: false). Scope: checks:delete
Team permission: deleteCheck
Response: 204 on success; 403 for automatic checks

Reports

Read-only aggregates. Require sites:read and view on the site.

GET /sites/{site}/reports/uptime

Daily uptime percentages from automatic status checks. Query: days (integer, default 90, max 365) Response 200: Uptime report

GET /sites/{site}/reports/performance

Daily performance aggregates from automatic performance checks. Query: days (integer, default 30, max 365) Response 200: Performance report

Issues

Read-only access to issue records. The dashboard Issues page supports acknowledge, resolve, and bulk actions; those operations are not available through the API.

GET /issues

Paginated list of issues across teams the user can view. Scope: issues:read
Team permission: viewIssues per team
Query parameters: Response 200: Paginated collection of Issue resources.

GET /issues/{issue}

Retrieve a single issue with related site, check, timeline, and acknowledgement/resolution metadata. Scope: issues:read
Team permission: view the issue’s team
Response 200: Issue resource

Endpoint summary

Quick reference table:

See also