Export the account's configuration.
const url = 'https://api.siteqwality.com/v1/export';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.siteqwality.com/v1/export \ --header 'Authorization: Bearer <token>'Authorizations
Section titled “Authorizations ”Responses
Section titled “ Responses ”Monitors, notification groups and channels, integrations, alert sources, services and escalation policies, each in its /v1 shape and without secrets. A scoped key needs read:monitors, read:notifications and read:incidents
Everything the account has configured, each list in its /v1 shape. Secrets stay out, as on every read.
object
The document’s format version, 1.
object
Unique identifier for the HTTP job.
Unique identifier for the account associated with the HTTP job.
The current state of the HTTP job (e.g., active, paused).
Why a paused monitor is paused: user or dormancy (older rows may say billing).
The current status of the HTTP job (e.g., success, failure).
The regions from which the HTTP job will be checked.
The minimum number of healthy regions required for the HTTP job to be considered healthy.
A name set by the user to identify the HTTP job.
Indicates whether the HTTP job should follow redirects.
Reserved and currently unused.
The HTTP method used for the request (e.g., GET, POST).
A keyword to search for in the response body.
Indicates whether the keyword search is inverted (i.e., the job fails if the keyword is found).
Indicates whether the keyword search is case-sensitive, default is false.
Indicates whether to interpret the keyword search as a regex.
The timeout for the HTTP request in milliseconds.
The URI to which the HTTP request is sent.
http, tcp or ping; fixed once created.
TCP: sent once connected, with \r \n \t \0 \\ \xHH escapes.
TCP: the response must contain this, with the same escapes.
TCP: complete a verified TLS handshake before send and expect.
Ping: echo requests per check.
Ping: fail at or above this percent of packets lost.
Whether a failed run is checked once more before it counts: off,
same_location or another_cloud.
Whether check requests are signed with Web Bot Auth as SiteQwality Monitor.
The body of the HTTP request to be sent.
The username used for authentication.
True when a basic-auth password or a bearer token is stored for this
monitor. This is what a read gets in place of the secret itself; see
auth_type for which kind of credential it is.
A list of HTTP status codes that indicate a successful response.
A list of HTTP status codes that indicate a failed response.
A map of custom HTTP headers to be included in the request.
Names are returned. Values are readable only for the seven headers in
secrets::RETURNABLE_REQUEST_HEADERS, matched case-insensitively.
Other values become secrets::REDACTED; sending that placeholder back
preserves the stored value (secrets::restore_redacted_header_values).
The last time the HTTP job was run.
The last time the status of the HTTP job changed, (e.g., from success to failure).
The interval in seconds at which the HTTP job runs.
Indicates whether the HTTP job runs every 30 seconds.
A list of notification groups associated with the HTTP job. This is the same as
group_notification_ids, but with the full notification group object.
object
The group monitors get when they are created without group_notification_ids.
object
object
object
object
object
object
object
object
object
Severity of trigger events sent through this notification. Defaults
to critical when the caller omits it.
object
object
object
object
object
How this channel’s recent deliveries went: whether the last alert reached anyone, and why not when it did not (a revoked Slack token, a bouncing inbox). Present on the read endpoints; absent on create and update responses.
object
healthy: the most recent delivery reached the provider.
degraded: it was refused, bounced, complained about, could not be
sent, or skipped for a reason the channel must fix (such as
sms_quota), so the next alert will likely not arrive either.
unknown: nothing sent in the lookback window.
A skip by design, such as heartbeat_channel_unsupported, is listed in
recent but never judged.
Newest first, at most [CHANNEL_HEALTH_RECENT].
One delivery, as a channel’s health shows it.
object
Sent | delivered | delayed | soft_bounced | failed | rejected | bounced | complained | skipped
The provider’s reason for a non-success status, URLs reduced to hosts.
For skipped, a slug such as sms_quota or tls_channel_unsupported.
An email channel whose address hard-bounced or complained after its last delivery:
SES now suppresses it, so the channel is degraded until the address is fixed.
object
bounce or complaint.
E.g. Permanent/General, Permanent/OnAccountSuppressionList.
The ID of the TLS job associated with the HTTP job.
Indicates whether the HTTP job monitors TLS.
The ID of the DNS job associated with the HTTP job.
Indicates whether the HTTP job monitors DNS.
The ID of the page speed job associated with the HTTP job.
Indicates whether the HTTP job monitors page speed.
When the HTTP job was created.
A list of tags associated with the HTTP job.
The ID of the service this HTTP job belongs to.
Preferred HTTP version for the check client (auto / http1_1 / http2 / http2_with_fallback).
Number of consecutive failed checks required before the monitor is considered down and notifications are sent. 1 = alert on the first failed check.
Uptime percentage over the last 24h (successful checks / total) checks). Only populated on the monitor list endpoint; omitted when the monitor has no checks in the window.
Port the paired TLS check connects to. Only on GET /http/job/{id}
when TLS is monitored.
Whether an invalid certificate alerts. Only on GET /http/job/{id}
when TLS is monitored.
The website’s icon. Only on GET /http/job/{id}, once one is found.
object
Public HTTPS URL of the PNG. The same image always has the same URL.
How the icon reads on a transparent background: dark or light is a mark of that tone,
which needs a contrasting backdrop on a surface of the same tone. neutral reads on either.
Healthy runs in a row before a recovery is notified. 1 = notify on the first.
Whether alerts are held while the monitor flaps: the override, or else the account’s notification setting.
This monitor’s own flap hold; null follows the account’s notification setting.
object
Extra seconds after the interval before a missing ping alerts. 0 alerts as soon as the interval passes.
object
The group monitors get when they are created without group_notification_ids.
object
object
object
object
object
object
object
object
object
Severity of trigger events sent through this notification. Defaults
to critical when the caller omits it.
object
object
object
object
object
How this channel’s recent deliveries went: whether the last alert reached anyone, and why not when it did not (a revoked Slack token, a bouncing inbox). Present on the read endpoints; absent on create and update responses.
object
healthy: the most recent delivery reached the provider.
degraded: it was refused, bounced, complained about, could not be
sent, or skipped for a reason the channel must fix (such as
sms_quota), so the next alert will likely not arrive either.
unknown: nothing sent in the lookback window.
A skip by design, such as heartbeat_channel_unsupported, is listed in
recent but never judged.
Newest first, at most [CHANNEL_HEALTH_RECENT].
One delivery, as a channel’s health shows it.
object
Sent | delivered | delayed | soft_bounced | failed | rejected | bounced | complained | skipped
The provider’s reason for a non-success status, URLs reduced to hosts.
For skipped, a slug such as sms_quota or tls_channel_unsupported.
An email channel whose address hard-bounced or complained after its last delivery:
SES now suppresses it, so the channel is degraded until the address is fixed.
object
bounce or complaint.
E.g. Permanent/General, Permanent/OnAccountSuppressionList.
Why a paused monitor is paused: user or dormancy (older rows may say billing).
object
Why a paused monitor is paused: user or dormancy (older rows may say billing).
Notification groups resolved from group_notification_ids. This is
what the dashboard edit form seeds from.
object
The group monitors get when they are created without group_notification_ids.
object
object
object
object
object
object
object
object
object
Severity of trigger events sent through this notification. Defaults
to critical when the caller omits it.
object
object
object
object
object
How this channel’s recent deliveries went: whether the last alert reached anyone, and why not when it did not (a revoked Slack token, a bouncing inbox). Present on the read endpoints; absent on create and update responses.
object
healthy: the most recent delivery reached the provider.
degraded: it was refused, bounced, complained about, could not be
sent, or skipped for a reason the channel must fix (such as
sms_quota), so the next alert will likely not arrive either.
unknown: nothing sent in the lookback window.
A skip by design, such as heartbeat_channel_unsupported, is listed in
recent but never judged.
Newest first, at most [CHANNEL_HEALTH_RECENT].
One delivery, as a channel’s health shows it.
object
Sent | delivered | delayed | soft_bounced | failed | rejected | bounced | complained | skipped
The provider’s reason for a non-success status, URLs reduced to hosts.
For skipped, a slug such as sms_quota or tls_channel_unsupported.
An email channel whose address hard-bounced or complained after its last delivery:
SES now suppresses it, so the channel is degraded until the address is fixed.
object
bounce or complaint.
E.g. Permanent/General, Permanent/OnAccountSuppressionList.
Consecutive failed runs before DOWN; null means 1.
Whether a failed run is rerun once from the same location before it
counts; null means off.
A DNS record monitor as the api returns it.
object
object
pending | baselined | changed | unreachable.
Deliberately never success: a monitor that has never run says so
instead of claiming to be fine.
When set, everything displayed for this monitor is LAST KNOWN, not current: a failed check keeps the previous values rather than nulling them, so this field is what makes the staleness legible.
object
The group monitors get when they are created without group_notification_ids.
object
object
object
object
object
object
object
object
object
Severity of trigger events sent through this notification. Defaults
to critical when the caller omits it.
object
object
object
object
object
How this channel’s recent deliveries went: whether the last alert reached anyone, and why not when it did not (a revoked Slack token, a bouncing inbox). Present on the read endpoints; absent on create and update responses.
object
healthy: the most recent delivery reached the provider.
degraded: it was refused, bounced, complained about, could not be
sent, or skipped for a reason the channel must fix (such as
sms_quota), so the next alert will likely not arrive either.
unknown: nothing sent in the lookback window.
A skip by design, such as heartbeat_channel_unsupported, is listed in
recent but never judged.
Newest first, at most [CHANNEL_HEALTH_RECENT].
One delivery, as a channel’s health shows it.
object
Sent | delivered | delayed | soft_bounced | failed | rejected | bounced | complained | skipped
The provider’s reason for a non-success status, URLs reduced to hosts.
For skipped, a slug such as sms_quota or tls_channel_unsupported.
An email channel whose address hard-bounced or complained after its last delivery:
SES now suppresses it, so the channel is degraded until the address is fixed.
object
bounce or complaint.
E.g. Permanent/General, Permanent/OnAccountSuppressionList.
object
object
object
object
object
object
object
object
object
Severity of trigger events sent through this notification. Defaults
to critical when the caller omits it.
object
object
object
object
object
How this channel’s recent deliveries went: whether the last alert reached anyone, and why not when it did not (a revoked Slack token, a bouncing inbox). Present on the read endpoints; absent on create and update responses.
object
healthy: the most recent delivery reached the provider.
degraded: it was refused, bounced, complained about, could not be
sent, or skipped for a reason the channel must fix (such as
sms_quota), so the next alert will likely not arrive either.
unknown: nothing sent in the lookback window.
A skip by design, such as heartbeat_channel_unsupported, is listed in
recent but never judged.
Newest first, at most [CHANNEL_HEALTH_RECENT].
One delivery, as a channel’s health shows it.
object
Sent | delivered | delayed | soft_bounced | failed | rejected | bounced | complained | skipped
The provider’s reason for a non-success status, URLs reduced to hosts.
For skipped, a slug such as sms_quota or tls_channel_unsupported.
An email channel whose address hard-bounced or complained after its last delivery:
SES now suppresses it, so the channel is degraded until the address is fixed.
object
bounce or complaint.
E.g. Permanent/General, Permanent/OnAccountSuppressionList.
object
object
Masked bot token, e.g. ****abcd.
object
Masked endpoint, e.g. https://example.com/****.
The signing secret, present ONLY on the create response. Reads never carry it: the mask rules have no entry for it.
object
object
Masked webhook URL.
object
Masked Workflows webhook URL.
object
Masked Events API v2 routing key.
object
Masked API key.
object
Masked webhook URL.
object
Masked webhook URL.
object
Masked user key.
Masked application token.
object
Masked access token.
How deliveries through it are going. Only the list carries it.
object
Why it is not healthy: the vendor’s words or a skip slug.
The newest receipt, skips by design included.
object
Sent | delivered | delayed | soft_bounced | failed | rejected | bounced | complained | skipped
The vendor’s reason for a non-success status, URLs cut to hosts; a slug for skipped.
Slack | webhook | pagerduty | …
Masked: a Slack channel, a webhook host.
What produced it, such as http_transition; null on older rows.
What happened, such as down; null on older rows.
The older slug for why it was sent, such as monitor_down.
The monitor it was about, and which table: http | cron | browser | page_speed | tls | dns.
A test send from the dashboard.
For a webhook, the delivery whose attempts the webhook log shows.
Microsoft Teams only: whether a check card goes out each month to keep the flow running. The list and edits that set it carry it.
Whether anything sends through it: a channel in a group, a service target or a contact method. Only the list carries it.
A source as the api returns it. The key is never stored, only its hash and first characters.
object
Incidents open on this service.
Overrides the service’s escalation policy for incidents this source opens.
The key’s first characters, to tell keys apart.
Where an email source receives alerts. Rolling the key replaces it.
How an email source reads each email.
object
A subject that matches resolves its incident instead of opening one, for example ^(UP|RECOVERY|OK)\b.
Its first group, or the whole match, is the dedup key, so each thing it names gets its own incident: for
example (?:DOWN|UP): (.+). Left out, or with no match, all of the address’s emails share one incident.
Where a generic_json source finds each field.
object
The dedup key: events with the same one open, update and close one incident.
The status. Left out, every event triggers.
Status values that trigger, ignoring case. Empty takes trigger, triggered, firing, alert, alerting,
open, problem and down.
Status values that resolve. Empty takes resolve, resolved, ok, recovered, closed, up, normal and
cleared.
Status values that acknowledge. Empty takes acknowledge, acknowledged and ack.
The severity: critical, error, warning, info or a common synonym.
An http(s) link back to the alert.
With a signing secret set: the header holding the body’s HMAC-SHA256, in hex or base64, with or without
sha256=. Left out, X-Signature.
With a signing secret set: a header holding the Unix time the sender signed at. When named, the signature
covers <timestamp>.<body> and must be under 10 minutes old.
Whether a signing secret is set (sentry and generic_json). The secret itself is never returned.
While set, each event keeps its body, redacted, for debugging. Ends 24 hours after it was turned on.
object
Whether a failing monitor opens an incident on its service.
Deprecated and unused: every failure joins the service’s open auto incident.
A failure this many minutes after a resolved auto incident’s last alert reopens it; 0 never does.
Whether an auto-created incident resolves itself once every monitor recovers.
When the service was switched off; while set its monitors open no auto incidents.
Prefills Publish and words auto-published incidents.
object
The public title; auto-published incidents never show the monitor’s name.
The first public update when the incident is published.
The public “Resolved” update.
The team that owns the service; filter the list with team.
Free-form labels; filter the list with tag.
Who is on call for this service; without it, the escalation policy’s first level.
The roll-up of incidents, monitors, maintenance and on call. On the list and get routes.
object
The worst of incident and monitor state. Maintenance never changes it.
A maintenance window naming this service is running now. It holds paging, never the status.
Linked monitors failing now; paused ones are left out.
When the newest incident on the service opened.
The service’s on-call schedule, else every user and schedule on the policy’s first level.
One person on call for a service right now.
object
The schedule that puts them on call; absent for a user named on the policy directly.
When the schedule hands off; absent for a direct user or past 90 days.
object
Times to run through every level again after the first pass.
object
What happens when the repeats are used up, or no level reaches anyone.
The policy escalate_to_policy runs once; null otherwise.
Example
{ "http_monitors": [ { "state": "active", "current_status": "success", "check_type": "http", "recheck_on_failure": "off", "content_type": "json", "auth_type": "basic", "group_notifications": [ { "notifications": [ { "type": "email", "details": { "pagerduty_severity": "critical" } } ] } ], "http_version": "auto", "not_checked_reason": "quota", "icon": { "tone": "dark" } } ], "heartbeat_monitors": [ { "current_status": "success", "group_notifications": [ { "notifications": [ { "type": "email", "details": { "pagerduty_severity": "critical" } } ] } ], "state": "active" } ], "browser_monitors": [ { "state": "active", "current_status": "success", "group_notifications": [ { "notifications": [ { "type": "email", "details": { "pagerduty_severity": "critical" } } ] } ], "not_checked_reason": "quota" } ], "notification_groups": [ { "notifications": [ { "type": "email", "details": { "pagerduty_severity": "critical" } } ] } ], "notifications": [ { "type": "email", "details": { "pagerduty_severity": "critical" } } ], "integrations": [ { "type": "slack", "external_ref": { "region": "eu", "endpoint": "jsm" }, "health": { "state": "healthy" } } ], "services": [ { "incident_creation_mode": "auto", "auto_resolve": "always", "default_incident_severity": "minor", "health": { "status": "operational" } } ], "escalation_policies": [ { "on_exhausted": "notify_owners" } ]}Missing or invalid credentials
An RFC 9457 problem, the body of every /v1 error.
object
https://docs.siteqwality.com/errors/ and the failure’s code, such as not_found.
urn:uuid: and the request id.
The invalid fields, when the request body was refused.
One validation failure; pointer is an RFC 6901 pointer into the request body.
object
Example generated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example", "errors": [ { "pointer": "example", "detail": "example" } ]}The key or member may not do this, or lacks the scope it needs
An RFC 9457 problem, the body of every /v1 error.
object
https://docs.siteqwality.com/errors/ and the failure’s code, such as not_found.
urn:uuid: and the request id.
The invalid fields, when the request body was refused.
One validation failure; pointer is an RFC 6901 pointer into the request body.
object
Example generated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example", "errors": [ { "pointer": "example", "detail": "example" } ]}Too many requests; wait for the time in Retry-After
An RFC 9457 problem, the body of every /v1 error.
object
https://docs.siteqwality.com/errors/ and the failure’s code, such as not_found.
urn:uuid: and the request id.
The invalid fields, when the request body was refused.
One validation failure; pointer is an RFC 6901 pointer into the request body.
object
Example generated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example", "errors": [ { "pointer": "example", "detail": "example" } ]}