Skip to content

Change a heartbeat monitor.

PATCH
/v1/heartbeat-monitors/{heartbeat_monitor_id}
curl --request PATCH \
--url https://api.siteqwality.com/v1/heartbeat-monitors/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "friendly_name": "example", "check_interval_seconds": 1, "grace_seconds": 1, "group_notification_ids": [ "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" ], "state": "active", "tags": [ "example" ], "service_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" }'
heartbeat_monitor_id
required
string format: uuid
Idempotency-Key
string
<= 255 characters

Makes a retry safe: the same key and body within 24 hours returns the first response with Idempotent-Replayed: true. The same key with another body is refused with 422 idempotency_key_reused, and one still running with 409 idempotency_key_in_use.

Media type application/json
object
friendly_name
string | null
check_interval_seconds
integer | null format: int32
grace_seconds

Extra seconds, 0 to 86400, after the interval before a missing ping alerts.

integer | null format: int32
group_notification_ids
array | null
state
One of:
string
Allowed values: active paused
tags
array | null
service_id

The service this monitor belongs to; null detaches it and omission keeps it.

string | null format: uuid

The monitor as saved; fields left out keep their values. warnings as on create

Media type application/json
object
id
required
string format: uuid
account_id
required
string format: uuid
created_at
required
string format: date-time
current_status
required
string
Allowed values: success failed
friendly_name
string | null
last_received_at
string | null format: date-time
last_status_change_at
string | null format: date-time
last_checked_at
string | null format: date-time
check_interval_seconds
required
integer format: int32
grace_seconds

Extra seconds after the interval before a missing ping alerts. 0 alerts as soon as the interval passes.

integer format: int32
group_notification_ids
array | null
group_notifications
array | null
object
id
required
string format: uuid
account_id
required
string format: uuid
friendly_name
required
string
delay_send_after_minutes
integer | null format: int32
resend_every_minutes
integer | null format: int32
is_default

The group monitors get when they are created without group_notification_ids.

boolean
created_at
required
string format: date-time
notifications
required
Array<object>
object
id
required
string format: uuid
account_id
required
string format: uuid
type
required
string
Allowed values: email sms slack webhook telegram discord microsoft_teams pagerduty opsgenie google_chat mattermost pushover pushbullet
details
required
One of:
object
email_address
required
string
created_at
required
string format: date-time
health
One of:

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
state
required

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.

string
recent
required

Newest first, at most [CHANNEL_HEALTH_RECENT].

Array<object>

One delivery, as a channel’s health shows it.

object
at
required
string format: date-time
status
required

Sent | delivered | delayed | soft_bounced | failed | rejected | bounced | complained | skipped

string
reason

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.

string | null
bouncing
One of:

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
since
required
string format: date-time
event_type
required

bounce or complaint.

string
sub_type

E.g. Permanent/General, Permanent/OnAccountSuppressionList.

string | null
numb_of_sites
integer | null format: int64
state
required
string
Allowed values: active paused
paused_reason

Why a paused monitor is paused: user or dormancy (older rows may say billing).

string | null
tags
array | null
service_id
string | null format: uuid
Example
{
"current_status": "success",
"group_notifications": [
{
"notifications": [
{
"type": "email",
"details": {
"pagerduty_severity": "critical"
}
}
]
}
],
"state": "active"
}
Idempotent-Replayed
string

true when this is the stored first response

Invalid request body

Media type application/problem+json

An RFC 9457 problem, the body of every /v1 error.

object
type
required

https://docs.siteqwality.com/errors/ and the failure’s code, such as not_found.

string
title
required
string
status
required
integer format: int32
detail
string | null
instance

urn:uuid: and the request id.

string | null
errors

The invalid fields, when the request body was refused.

array | null

One validation failure; pointer is an RFC 6901 pointer into the request body.

object
pointer
required
string
detail
required
string
Example generated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example",
"errors": [
{
"pointer": "example",
"detail": "example"
}
]
}

Missing or invalid credentials

Media type application/problem+json

An RFC 9457 problem, the body of every /v1 error.

object
type
required

https://docs.siteqwality.com/errors/ and the failure’s code, such as not_found.

string
title
required
string
status
required
integer format: int32
detail
string | null
instance

urn:uuid: and the request id.

string | null
errors

The invalid fields, when the request body was refused.

array | null

One validation failure; pointer is an RFC 6901 pointer into the request body.

object
pointer
required
string
detail
required
string
Example generated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example",
"errors": [
{
"pointer": "example",
"detail": "example"
}
]
}

Resuming would pass the plan’s monitor limit

Media type application/problem+json

An RFC 9457 problem, the body of every /v1 error.

object
type
required

https://docs.siteqwality.com/errors/ and the failure’s code, such as not_found.

string
title
required
string
status
required
integer format: int32
detail
string | null
instance

urn:uuid: and the request id.

string | null
errors

The invalid fields, when the request body was refused.

array | null

One validation failure; pointer is an RFC 6901 pointer into the request body.

object
pointer
required
string
detail
required
string
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

Media type application/problem+json

An RFC 9457 problem, the body of every /v1 error.

object
type
required

https://docs.siteqwality.com/errors/ and the failure’s code, such as not_found.

string
title
required
string
status
required
integer format: int32
detail
string | null
instance

urn:uuid: and the request id.

string | null
errors

The invalid fields, when the request body was refused.

array | null

One validation failure; pointer is an RFC 6901 pointer into the request body.

object
pointer
required
string
detail
required
string
Example generated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example",
"errors": [
{
"pointer": "example",
"detail": "example"
}
]
}

No such monitor in this account

Media type application/problem+json

An RFC 9457 problem, the body of every /v1 error.

object
type
required

https://docs.siteqwality.com/errors/ and the failure’s code, such as not_found.

string
title
required
string
status
required
integer format: int32
detail
string | null
instance

urn:uuid: and the request id.

string | null
errors

The invalid fields, when the request body was refused.

array | null

One validation failure; pointer is an RFC 6901 pointer into the request body.

object
pointer
required
string
detail
required
string
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

Media type application/problem+json

An RFC 9457 problem, the body of every /v1 error.

object
type
required

https://docs.siteqwality.com/errors/ and the failure’s code, such as not_found.

string
title
required
string
status
required
integer format: int32
detail
string | null
instance

urn:uuid: and the request id.

string | null
errors

The invalid fields, when the request body was refused.

array | null

One validation failure; pointer is an RFC 6901 pointer into the request body.

object
pointer
required
string
detail
required
string
Example generated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example",
"errors": [
{
"pointer": "example",
"detail": "example"
}
]
}