/api/v1. Unless noted, requests require:
Authorization: Bearer {token}Accept: application/json- Verified user email
- Appropriate OAuth scope
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:readTeam permission:
viewAny on teams
Response 200: { "data": [ Team, ... ] }
GET /teams/{team}
Show one team by UUID. Scope:teams:readTeam 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:readTeam permission:
view team
Response 200:
PATCH /teams/{team}/monitoring
Update team monitoring defaults. Mirrors the dashboard Monitoring page (automatic checks, issue rules, escalation, and quiet time). Scope:teams:writeTeam permission:
updateMonitoring (admins and owners)Response
200: Same shape as GET /teams/{team}/monitoring
Body:
Tool-specific fields match the monitoring settings schema.
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}.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:readTeam permission:
viewAny sites
Query parameters:
Response
200: Paginated Site collection
POST /teams/{team}/sites
Create a site. Scope:sites:writeTeam permission:
create siteResponse:
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.POST /teams/{team}/sites/bulk
Create up to 100 sites in one request. Scope:sites:writeTeam permission:
create siteResponse
200: Bulk response
Body:
GET /sites/{site}
Show one site by uuid. Scope:sites:readTeam 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 (includingurl).
Scope: sites:writeTeam permission:
update siteResponse
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:deleteTeam permission:
delete siteResponse:
204 No Content
Checks
GET /sites/{site}/checks
Paginated check history for a site. Scope:checks:readTeam 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:runTeam permission:
createCheckRate 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
pendingon-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
422):
Poll
GET /checks/{check} until status is terminal. See Check results.GET /checks/{check}
Show one check by uuid, including fullresult and nested site summary.
Scope: checks:readTeam permission:
view check (via site team membership)
Response 200: Check resource
DELETE /checks/{check}
Delete an on-demand check (automatic: false).
Scope: checks:deleteTeam permission:
deleteCheckResponse:
204 on success; 403 for automatic checks
Reports
Read-only aggregates. Requiresites: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:readTeam 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:readTeam permission:
view the issue’s team
Response 200: Issue resource