Skip to content

List uptime checks

View Markdown
GET https://app.honeybadger.io/v3/projects/{project_id}/sites/{site_id}/checks
Required scope uptime:read

Returns a list of uptime check results for a site.

Example request
Terminal window
curl "https://app.honeybadger.io/v3/projects/$PROJECT_ID/sites/$SITE_ID/checks" \
-H "Authorization: Bearer $HONEYBADGER_API_TOKEN"

Parameters

5

Path parameters

FieldTypeDescription
project_id requiredstringProject ID.
site_id requireduuidSite identifier (uuid).

Query parameters

FieldTypeDescription
limitintegerMaximum items to return. Values above 100 are treated as 100. Default: 25. Min 1, max 100.
created_afternumberWith created_before, limits the list to a window. Alone, returns the items just after it, newest first. A Unix timestamp (seconds, not ISO 8601). Take it from links.newer; fractional seconds count.
created_beforenumberOnly items created before this Unix timestamp (seconds, not ISO 8601). Take it from links.older; fractional seconds count.

Responses

1

200 Success

Example payload
{
"data": [
{
"created_at": "2026-01-01T00:00:00Z",
"duration": 182,
"location": "Virginia",
"up": true
}
],
"pagination": {
"limit": 25,
"has_older": true,
"has_newer": true,
"oldest_cursor": "eyJ0IjoxNzA0MDY3MjAwLCJpIjoiTm04cFF4In0",
"newest_cursor": "eyJ0IjoxNzA0MTUzNjAwLCJpIjoiWGs5bVpwIn0"
},
"links": {
"self": "/v3/projects/Xk9mZp/sites/9f8b6d2e-4c1a-4b7f-9e35-2a6c8d0f1b47/checks?limit=25",
"older": "/v3/projects/Xk9mZp/sites/9f8b6d2e-4c1a-4b7f-9e35-2a6c8d0f1b47/checks?before=eyJ0IjoxNzA0MDY3MjAwMTIzNDU2LCJpIjoiRHAyeU5rIn0&limit=25",
"newer": "/v3/projects/Xk9mZp/sites/9f8b6d2e-4c1a-4b7f-9e35-2a6c8d0f1b47/checks?after=eyJ0IjoxNzA0MTUzNjAwMTIzNDU2LCJpIjoiRHA4d1FzIn0&limit=25"
},
"meta": {
"request_id": "6f1c2b0e-8d4a-4f6e-9b2a-3c5d7e9f1a2b"
}
}
Response schema17
FieldTypeDescription
data requiredarray<object>
data[].created_at requireddate-timeWhen the check was performed.
data[].durationinteger | nullResponse time in whole milliseconds.
data[].locationstring | nullMonitoring location that performed the check. A location uptime checks run from. Allowed values: Virginia, Frankfurt, Singapore, London, Oregon.
data[].upboolean | nullWhether the site was up.
paginationobjectPagination for a time-ordered collection.
pagination.limit requiredintegerMaximum items per page. Min 1, max 100.
pagination.has_older requiredbooleanWhether older items exist. When true, follow links.older.
pagination.has_newer requiredbooleanWhether newer items exist. When true, follow links.newer.
pagination.oldest_cursorstring | nullCursor for the oldest item on this page. Pass it back unchanged as before. Absent or null on collections that page on a timestamp rather than a cursor; use links.older instead.
pagination.newest_cursorstring | nullCursor for the newest item on this page. Pass it back unchanged as after. Absent or null on collections that page on a timestamp rather than a cursor, and on one-directional collections; use links.newer instead.
linksobjectNavigation links for a time-ordered collection. Each link is a root-relative path (/v3/...); resolve it against the API host.
links.self requireduri-referenceThis page.
links.olderstring | nullPage of older items, or null when none exist.
links.newerstring | nullPage of newer items, or null when none exist. Always null on one-directional collections, which are documented as such.
metaobject
meta.request_idstringUnique identifier for the request, for correlating with support.

Errors

5

400 Bad Request

A query parameter is malformed or outside its allowed values. error.details names the parameter.

Example payload
{
"error": {
"code": "invalid_parameter",
"message": "unmapped must be true or false",
"details": [
{
"field": "unmapped",
"message": "must be true or false"
}
]
},
"meta": {
"request_id": "abc123"
}
}
Response schema6
FieldTypeDescription
error requiredobject
error.code requiredstringMachine-readable code. Branch on this, not the message. Allowed values: unauthorized, unsupported_auth_scheme, credential_in_query, access_denied, insufficient_scope, requires_user_token, project_restricted, account_inactive, account_parked, feature_unavailable, not_found, validation_error, delete_failed, limit_reached, rate_limit_exceeded, concurrent_request, streams_provisioning, ingestion_key_not_accepted, maintenance_mode, invalid_parameter, forbidden_attributes, service_unavailable, ambiguous_account, fault_merged.
error.message requiredstringHuman-readable explanation.
error.detailsarray<object> | objectA list of {field, message} on validation_error and invalid_parameter, and on feature_unavailable or limit_reached when one field caused the refusal; {required_scope, token_scopes} on insufficient_scope; {merged_into, location} on fault_merged. Absent when there's nothing to add.
metaobject
meta.request_idstringUnique identifier for the request, for correlating with support.

401 Unauthorized

The credential is missing, invalid, expired or revoked (unauthorized), or was sent in a way v3 doesn’t accept (see the examples).

Example payload: unauthorized (Missing, malformed, expired or revoked credential)
{
"error": {
"code": "unauthorized",
"message": "Access denied"
},
"meta": {
"request_id": "abc123"
}
}
Example payload: unsupported_auth_scheme (Sent as HTTP basic, which v3 does not accept)
{
"error": {
"code": "unsupported_auth_scheme",
"message": "Send the credential as `Authorization: Bearer <token>`; v3 does not accept HTTP basic"
},
"meta": {
"request_id": "abc123"
}
}
Example payload: credential_in_query (Sent as the `auth_token` query parameter)
{
"error": {
"code": "credential_in_query",
"message": "Credentials must be sent in the Authorization header"
},
"meta": {
"request_id": "abc123"
}
}
Response schema6
FieldTypeDescription
error requiredobject
error.code requiredstringMachine-readable code. Branch on this, not the message. Allowed values: unauthorized, unsupported_auth_scheme, credential_in_query, access_denied, insufficient_scope, requires_user_token, project_restricted, account_inactive, account_parked, feature_unavailable, not_found, validation_error, delete_failed, limit_reached, rate_limit_exceeded, concurrent_request, streams_provisioning, ingestion_key_not_accepted, maintenance_mode, invalid_parameter, forbidden_attributes, service_unavailable, ambiguous_account, fault_merged.
error.message requiredstringHuman-readable explanation.
error.detailsarray<object> | objectA list of {field, message} on validation_error and invalid_parameter, and on feature_unavailable or limit_reached when one field caused the refusal; {required_scope, token_scopes} on insufficient_scope; {merged_into, location} on fault_merged. Absent when there's nothing to add.
metaobject
meta.request_idstringUnique identifier for the request, for correlating with support.

403 Forbidden

The credential isn’t allowed to do this. error.code says why. An account or project the credential doesn’t cover is 404 not_found, not 403.

Example payload: access_denied (The credential isn't allowed to do this to this record)
{
"error": {
"code": "access_denied",
"message": "Access denied"
},
"meta": {
"request_id": "abc123"
}
}
Example payload: insufficient_scope (The credential lacks the permission this endpoint requires)
{
"error": {
"code": "insufficient_scope",
"message": "Insufficient scope",
"details": {
"required_scope": "faults:write",
"token_scopes": [
"faults:read",
"insights:read"
]
}
},
"meta": {
"request_id": "abc123"
}
}
Example payload: requires_user_token (The endpoint records who acted, and an account token has nobody)
{
"error": {
"code": "requires_user_token",
"message": "This endpoint records the person who acted, so it requires a user credential rather than an account token"
},
"meta": {
"request_id": "abc123"
}
}
Example payload: project_restricted (A project-restricted credential cannot create a project)
{
"error": {
"code": "project_restricted",
"message": "Project-restricted tokens cannot create projects"
},
"meta": {
"request_id": "abc123"
}
}
Response schema6
FieldTypeDescription
error requiredobject
error.code requiredstringMachine-readable code. Branch on this, not the message. Allowed values: unauthorized, unsupported_auth_scheme, credential_in_query, access_denied, insufficient_scope, requires_user_token, project_restricted, account_inactive, account_parked, feature_unavailable, not_found, validation_error, delete_failed, limit_reached, rate_limit_exceeded, concurrent_request, streams_provisioning, ingestion_key_not_accepted, maintenance_mode, invalid_parameter, forbidden_attributes, service_unavailable, ambiguous_account, fault_merged.
error.message requiredstringHuman-readable explanation.
error.detailsarray<object> | objectA list of {field, message} on validation_error and invalid_parameter, and on feature_unavailable or limit_reached when one field caused the refusal; {required_scope, token_scopes} on insufficient_scope; {merged_into, location} on fault_merged. Absent when there's nothing to add.
metaobject
meta.request_idstringUnique identifier for the request, for correlating with support.

404 Not Found

Resource not found

Example payload
{
"error": {
"code": "not_found",
"message": "Resource not found"
},
"meta": {
"request_id": "abc123"
}
}
Response schema6
FieldTypeDescription
error requiredobject
error.code requiredstringMachine-readable code. Branch on this, not the message. Allowed values: unauthorized, unsupported_auth_scheme, credential_in_query, access_denied, insufficient_scope, requires_user_token, project_restricted, account_inactive, account_parked, feature_unavailable, not_found, validation_error, delete_failed, limit_reached, rate_limit_exceeded, concurrent_request, streams_provisioning, ingestion_key_not_accepted, maintenance_mode, invalid_parameter, forbidden_attributes, service_unavailable, ambiguous_account, fault_merged.
error.message requiredstringHuman-readable explanation.
error.detailsarray<object> | objectA list of {field, message} on validation_error and invalid_parameter, and on feature_unavailable or limit_reached when one field caused the refusal; {required_scope, token_scopes} on insufficient_scope; {merged_into, location} on fault_merged. Absent when there's nothing to add.
metaobject
meta.request_idstringUnique identifier for the request, for correlating with support.

422 Unprocessable Content

No path names the account, so the API token has to. This is returned when the token covers more than one account and the account a request applies to cannot be determined. Use a token bound to a single account.

Example payload
{
"error": {
"code": "ambiguous_account",
"message": "This credential covers more than one account, so the account a request applies to is ambiguous. Use a token bound to a single account."
},
"meta": {
"request_id": "abc123"
}
}
Response schema6
FieldTypeDescription
error requiredobject
error.code requiredstringMachine-readable code. Branch on this, not the message. Allowed values: unauthorized, unsupported_auth_scheme, credential_in_query, access_denied, insufficient_scope, requires_user_token, project_restricted, account_inactive, account_parked, feature_unavailable, not_found, validation_error, delete_failed, limit_reached, rate_limit_exceeded, concurrent_request, streams_provisioning, ingestion_key_not_accepted, maintenance_mode, invalid_parameter, forbidden_attributes, service_unavailable, ambiguous_account, fault_merged.
error.message requiredstringHuman-readable explanation.
error.detailsarray<object> | objectA list of {field, message} on validation_error and invalid_parameter, and on feature_unavailable or limit_reached when one field caused the refusal; {required_scope, token_scopes} on insufficient_scope; {merged_into, location} on fault_merged. Absent when there's nothing to add.
metaobject
meta.request_idstringUnique identifier for the request, for correlating with support.