POST
Required scope https://app.honeybadger.io/v3/projects/{project_id}/faults/unignore
faults:write
Marks faults as no longer ignored. Name them with fault_ids, narrow them with q or a time filter, or pass "all": true to unignore every fault in the project. The request must include one of these.
Example request
curl -X POST "https://app.honeybadger.io/v3/projects/$PROJECT_ID/faults/unignore" \ -H "Authorization: Bearer $HONEYBADGER_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "fault_ids": [ "12345", "12346" ]}'Parameters
1Path parameters
| Field | Type | Description |
|---|---|---|
project_id required | string | Project ID. |
Request body
Selects the faults a bulk operation applies to
| Field | Type | Description |
|---|---|---|
all | boolean | Apply to every fault the other filters match, which with no other filters is every fault in the project. Required to make an unbounded change explicit; ignored when fault_ids names specific faults. |
dry_run | boolean | Report what the request would change without changing it — no state change, no comments, no timeline entries. The response has the same shape either way, with dry_run echoed back. |
fault_ids | array<string> | IDs of the faults to change. If any ID isn't a fault in this project, nothing changes. Omit to act on everything the query and time filters match; with no filters, that requires "all": true. |
q | string | Search query, in the syntax of the web UI's error search, applied when fault_ids is left out. See Error search for the syntax and filters. |
created_after | number | Only faults created after this Unix timestamp. Applied when fault_ids is omitted, alongside q. |
occurred_after | number | Only faults that occurred after this Unix timestamp. Applied when fault_ids is omitted, alongside q. |
occurred_before | number | Only faults that occurred before this Unix timestamp. Applied when fault_ids is omitted, alongside q. |
Responses
1
200
Applied, or reported without applying when dry_run was set.
The body says how many faults changed and names them.
Example payload
{ "data": { "count": 12, "dry_run": false, "fault_ids": [ "12345", "12346" ], "fault_ids_truncated": false }, "meta": { "request_id": "6f1c2b0e-8d4a-4f6e-9b2a-3c5d7e9f1a2b" }}Response schema7
| Field | Type | Description |
|---|---|---|
data required | object | |
data.count required | integer | How many faults changed. Exact, and counts what changed rather than what matched: resolving a hundred faults of which ninety were already resolved reports ten. On a dry run, how many would have changed. |
data.dry_run required | boolean | True when nothing was written. Echoed back so a response is never ambiguous about whether it took effect. |
data.fault_ids required | array<string> | IDs of the faults that changed, capped at 100. count is exact regardless; see fault_ids_truncated. |
data.fault_ids_truncated | boolean | True when more faults changed than fault_ids lists. |
meta | object | |
meta.request_id | string | Unique 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
| Field | Type | Description |
|---|---|---|
error required | object | |
error.code required | string | Machine-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 required | string | Human-readable explanation. |
error.details | array<object> | object | A 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. |
meta | object | |
meta.request_id | string | Unique 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
| Field | Type | Description |
|---|---|---|
error required | object | |
error.code required | string | Machine-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 required | string | Human-readable explanation. |
error.details | array<object> | object | A 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. |
meta | object | |
meta.request_id | string | Unique 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
| Field | Type | Description |
|---|---|---|
error required | object | |
error.code required | string | Machine-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 required | string | Human-readable explanation. |
error.details | array<object> | object | A 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. |
meta | object | |
meta.request_id | string | Unique identifier for the request, for correlating with support. |
422
Unprocessable Content
The request was refused and nothing was changed. error.code and error.details say why — see the examples below.
Example payload: missing_selection (The body named no faults)
{ "error": { "code": "validation_error", "message": "Name the faults to change with fault_ids, narrow them with a filter, or pass all=true to change every fault in the project.", "details": [ { "field": "fault_ids", "message": "required unless a filter or all=true is given" } ] }, "meta": { "request_id": "abc123" }}Example payload: unrecognised_filter (q contained a filter that matches nothing)
{ "error": { "code": "validation_error", "message": "Unrecognised search filters: is:unresolved. They match nothing, so this would have applied to every fault the rest of the query matched.", "details": [ { "field": "q", "message": "unrecognised filter is:unresolved" } ] }, "meta": { "request_id": "abc123" }}Example payload: unknown_fault_ids (`fault_ids` named a fault that isn't in this project)
{ "error": { "code": "validation_error", "message": "fault_ids has unknown ids: 99999", "details": [ { "field": "fault_ids", "message": "has unknown ids: 99999" } ] }, "meta": { "request_id": "abc123" }}Example payload: ambiguous_account (`assignee:me` in q, from a credential that covers more than one account)
{ "error": { "code": "ambiguous_account", "message": "This credential covers more than one account, so \"me\" is ambiguous." }, "meta": { "request_id": "abc123" }}Response schema6
| Field | Type | Description |
|---|---|---|
error required | object | |
error.code required | string | Machine-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 required | string | Human-readable explanation. |
error.details | array<object> | object | A 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. |
meta | object | |
meta.request_id | string | Unique identifier for the request, for correlating with support. |