Skip to content

Get an incident

View Markdown
GET https://app.honeybadger.io/v3/status_pages/{status_page_id}/incidents/{incident_id}
Required scope incidents:read

Returns a single incident.

Example request
Terminal window
curl "https://app.honeybadger.io/v3/status_pages/$STATUS_PAGE_ID/incidents/$INCIDENT_ID" \
-H "Authorization: Bearer $HONEYBADGER_API_TOKEN"

Parameters

2

Path parameters

FieldTypeDescription
status_page_id requiredstringStatus page ID.
incident_id requiredstringIncident ID.

Responses

1

200 Success

Example payload
{
"data": {
"id": "In3pKr",
"status_page_id": "Sp7bMq",
"title": "Database connectivity issues",
"retro_should_notify": true,
"retro_notify_message": null,
"build_type": "current",
"current_status": "maintenance_scheduled",
"current_severity": "problem_detected",
"start_at": "2026-01-01T00:00:00Z",
"closed_at": "2026-01-01T00:00:00Z",
"created_at": "2026-01-01T00:00:00Z",
"updated_at": "2026-01-01T00:00:00Z",
"updates": [
{
"id": "Iu6tMn",
"incident_id": "In3pKr",
"message": "We have identified the cause and are rolling back.",
"status": "maintenance_scheduled",
"severity": "problem_detected",
"start_at": "2026-01-01T00:00:00Z",
"should_notify": true,
"notified_at": "2026-01-01T00:00:00Z",
"created_at": "2026-01-01T00:00:00Z",
"updated_at": "2026-01-01T00:00:00Z"
}
],
"links": {
"web": "https://app.honeybadger.io/projects/Xk9mZp"
}
},
"meta": {
"request_id": "6f1c2b0e-8d4a-4f6e-9b2a-3c5d7e9f1a2b"
}
}
Response schema28
FieldTypeDescription
data requiredobjectAn incident on a status page. An incident is a container for a thread of updates: the prose lives on each update, and current_status, current_severity and closed_at are derived from them and are never writable.
data.id requiredstring
data.status_page_id requiredstringID of the status page.
data.title requiredstringIncident title.
data.retro_should_notify requiredbooleanFor a retroactive incident, whether to announce it once on the status page's connected accounts.
data.retro_notify_message requiredstring | nullThe announcement sent when retro_should_notify is true.
data.build_type requiredstringHow the incident was opened. current is happening now, retroactive records something already over, scheduled_maintenance is planned. Only a scheduled_maintenance incident may have updates starting in the future. Allowed values: current, retroactive, scheduled_maintenance.
data.current_statusstring | nullStatus of the update in effect now. Derived from the updates. An incident's status. Allowed values: maintenance_scheduled, in_maintenance, maintenance_complete, investigating, identified, resolving, monitoring, resolved.
data.current_severitystring | nullSeverity of the update in effect now. Derived from the updates. An incident's severity. Allowed values: problem_detected, degraded_performance, partial_outage, outage, operational.
data.start_atdate-time | nullWhen the incident starts. Derived from the updates.
data.closed_atdate-time | nullWhen the incident closed, or null while it is open. Derived from the updates: it is set once an update reaches resolved or maintenance_complete.
data.created_atdate-timeWhen the incident was created.
data.updated_atdate-timeWhen the incident was last updated.
data.updates requiredarray<object>The incident's thread, newest first. Always at least one update.
data.updates[].id requiredstring
data.updates[].incident_id requiredstringID of the incident.
data.updates[].messagestring | nullThe update's prose.
data.updates[].status requiredstringAn incident's status. Allowed values: maintenance_scheduled, in_maintenance, maintenance_complete, investigating, identified, resolving, monitoring, resolved.
data.updates[].severity requiredstringAn incident's severity. Allowed values: problem_detected, degraded_performance, partial_outage, outage, operational.
data.updates[].start_atdate-timeWhen the update takes effect. A future time schedules it.
data.updates[].should_notifyboolean | nullWhether the update is announced on the status page's connected accounts.
data.updates[].notified_atdate-time | nullWhen the announcement was sent.
data.updates[].created_atdate-timeWhen the update was posted.
data.updates[].updated_atdate-timeWhen the update was last changed.
data.links requiredobjectLinks into the Honeybadger web UI.
data.links.web requireduriThe resource's page in the Honeybadger web UI, as an absolute URL. Resources without a page, such as outages and deploys, don't have links. For a project provisioned through Heroku, error, notice and comment links go through Heroku's single sign-on.
metaobject
meta.request_idstringUnique identifier for the request, for correlating with support.

Errors

4

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.