---
id: inbox-rule-delete-permanently
title: Delete an inbox rule permanently
description: >-
  Deletes one of your organization's inbox rules for good, together with
  everyone's inbox settings for it. This can't be undone.
sidebar_label: Delete an inbox rule permanently
hide_title: true
hide_table_of_contents: true
api: >-
  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
sidebar_class_name: delete api-method
info_path: docs/api/communications
custom_edit_url: null
canonical: 'https://docs.nullplatform.com/docs/api/inbox-rule-delete-permanently'
---
<Heading
  as={"h1"}
  className={"openapi__heading"}
  children={"Delete an inbox rule permanently"}
>
</Heading>

<MethodEndpoint
  method={"delete"}
  path={"/communications/inbox_rule/{id}/permanent"}
  context={"endpoint"}
>

</MethodEndpoint>

Deletes one of your organization's inbox rules for good, together with everyone's inbox settings for it. This can't be undone.

Deactivate the rule first: an active rule answers an error. Notifications it already sent stay in people's inboxes. To discard your edits to a built-in rule, reset it to default instead.

<Heading
  id={"request"}
  as={"h2"}
  className={"openapi-tabs__heading"}
  children={"Request"}
>
</Heading>

<ParamsDetails
  parameters={[{"in":"path","name":"id","required":true,"schema":{"type":"string","minLength":1,"maxLength":120},"description":"The ID of the inbox rule, like `acme.security_finding` or `deployment.failed`.","example":"acme.security_finding"}]}
>

</ParamsDetails>

<RequestSchema
  title={"Body"}
  body={undefined}
>

</RequestSchema>

<StatusCodes
  id={undefined}
  label={undefined}
  responses={{"200":{"description":"The inbox rule that was deleted.","content":{"application/json":{"schema":{"title":"InboxRule","type":"object","properties":{"id":{"type":"string","description":"The ID of the inbox rule.","example":"acme.security_finding"},"organization_id":{"type":"integer","nullable":true,"description":"Your organization's ID for its own rules, or `null` for a built-in rule.","example":1},"publisher":{"type":"string","description":"Who published the rule: `organization` for your organization's rules.","example":"organization"},"status":{"type":"string","enum":["active","deprecated"],"description":"Whether the rule is active. `deprecated` means deactivated.","example":"active"},"document":{"title":"InboxRuleDefinition","type":"object","description":"The definition of an inbox rule. The main fields are listed here. For every field, including conditions, delays, and batching, read the schema from `GET /communications/inbox_rule/schema`.\n","required":["id","source","category","severity","audience"],"additionalProperties":true,"properties":{"id":{"type":"string","pattern":"^[a-z_]+\\.[a-z_]+$","description":"Lowercase words with exactly one dot. It also identifies the rule in inbox settings, and it can't change later.\n\n> ℹ️ **Note:** It can't start with `platform.`. Using a built-in rule's ID edits that rule for your organization.\n","example":"acme.security_finding"},"status":{"type":"string","enum":["active","deprecated"],"description":"Whether the rule is active. Defaults to `active`. `deprecated` means deactivated.","example":"active"},"source":{"description":"What makes the rule fire:\n\n- `{ \"kind\": \"invoked\" }`: your code calls the emission endpoint.\n- A source name, like `\"deployment\"`: the entity changes status in nullplatform. See `GET /communications/inbox_rule/source`.\n- `{ \"kind\": \"stale\", ... }`: an entity stays in a status for too long.\n","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true}],"example":{"kind":"invoked"}},"context_schema":{"type":"object","additionalProperties":true,"description":"A JSON Schema for the data each send carries. An invoked rule must require `id`, because sends are idempotent by it.","example":{"type":"object","required":["id","service","owner_id"],"properties":{"id":{"type":"string"},"service":{"type":"string"},"summary":{"type":"string"},"owner_id":{"type":"integer"}}}},"category":{"type":"object","description":"How the rule shows up in inbox settings. All six fields are required.","required":["group","label","description","configurable","allows_all","default_mode"],"properties":{"group":{"type":"string","description":"The group the rule is listed under in inbox settings.","example":"security"},"label":{"type":"string","description":"The rule's name in inbox settings.","example":"Security findings"},"description":{"type":"string","maxLength":70,"description":"One line on what the rule announces.","example":"Vulnerabilities your CI scanners report."},"configurable":{"type":"boolean","description":"Whether people can change their mode for this rule.","example":true},"allows_all":{"type":"boolean","description":"Whether people can choose **Everything** for this rule under a resource. Requires `configurable`.","example":true},"default_mode":{"type":"string","enum":["off","involved","all"],"description":"What people get until they change it.","example":"involved"}}},"severity":{"type":"string","enum":["informational","maintenance","degraded","outage"],"description":"Sets the icon and the color of the notification.","example":"degraded"},"audience":{"type":"array","description":"One entry per reading. Each entry is a separate notification with its own wording.","items":{"type":"object","required":["as","action","content"],"additionalProperties":true,"properties":{"as":{"type":"string","description":"The name of this reading.","example":"owner"},"who":{"type":"object","additionalProperties":true,"description":"Who receives this reading: `{ \"user\": \"${{ context.owner_id }}\" }` for a user from the context, or `{ \"can\": \"approval_request:approve\" }` for everyone who holds that action on the resource. Without `who`, only the people who chose **Everything** receive it.","example":{"user":"${{ context.owner_id }}"}},"action":{"type":"string","description":"The rule's ID, or an ID that starts with it.","example":"acme.security_finding"},"content":{"type":"object","required":["title"],"properties":{"title":{"type":"string","description":"The notification's title. Accepts templates like `${{ context.service }}` and inline Markdown.","example":"Security finding on ${{ context.service }}"},"body":{"type":"string","description":"The notification's body. Accepts templates, inline Markdown, links, and lists.","example":"${{ context.summary }}"}}},"fallback":{"type":"object","additionalProperties":true,"description":"Another reading, with the same fields, for when `who` resolves nobody."}}}},"visible_to":{"type":"array","maxItems":1,"items":{"type":"string"},"description":"The one NRN the rule applies under. Defaults to your organization. Sends for resources outside it are refused.","example":["organization=1:account=2"]}}},"created_at":{"type":"string","format":"date-time","description":"When the rule was created.","example":"2026-10-20T14:03:11.000Z"},"updated_at":{"type":"string","format":"date-time","description":"When the rule was last updated.","example":"2026-10-20T14:03:11.000Z"},"organization_state":{"title":"OrganizationState","type":"object","description":"Only on built-in rules: how the rule stands in your organization.","properties":{"enabled":{"type":"boolean","description":"Whether the rule is on for your organization.","example":true},"customized":{"type":"boolean","description":"Whether your organization edited the rule.","example":false},"linked":{"type":"array","items":{"type":"string"},"description":"Built-in rules that turn on and off together with this one.","example":[]},"replaced_by":{"type":"string","nullable":true,"description":"The ID of your rule that takes this one's place, if any.","example":null}}}}}}}},"4XX":{"description":"The request couldn't be processed. For example, a parameter is invalid, the resource doesn't exist, or you don't have permission. The body is a problem details object (RFC 9457).","content":{"application/problem+json":{"schema":{"type":"object","description":"Describes what went wrong, following the RFC 9457 problem details format.","required":["type","title","status"],"properties":{"type":{"type":"string","description":"A URI that identifies the kind of problem. It's an identifier, not a link, and it's the same every time this problem occurs.","example":"urn:nullplatform:error:routes-helper:invalid-params"},"title":{"type":"string","description":"A short, human-readable summary of the problem.","example":"There are invalid parameters on the request"},"status":{"type":"integer","description":"The HTTP status code of the response.","example":400},"code":{"type":"string","description":"A stable, machine-readable error code. Use it to handle specific errors in your integrations.","example":"ROUTES_HELPER.INVALID_PARAMS"},"detail":{"type":"string","nullable":true,"description":"More information about what went wrong in this request, when available.","example":null},"errors":{"type":"array","description":"One entry per invalid field or parameter. Only present on validation errors.","items":{"type":"object","properties":{"field":{"type":"string","description":"The name of the invalid field or parameter.","example":"application_id"},"in":{"type":"string","description":"Where the field was sent: `body`, `query`, or `params` (path parameters).","example":"query"},"issue":{"type":"string","description":"What's wrong with the field, such as `required` or `invalid`.","example":"invalid"},"value":{"description":"The value that was sent, when relevant.","example":"not-a-number"},"message":{"type":"string","description":"A human-readable explanation of the issue."}}}},"message":{"type":"string","deprecated":true,"description":"Same value as `title`, kept for backward compatibility. Use `title` or `code` instead.","example":"There are invalid parameters on the request"},"traceId":{"type":"string","description":"An identifier for this request, when available. Include it when you contact nullplatform support."}}}}}},"5XX":{"description":"Something went wrong on nullplatform's side. The body is a problem details object (RFC 9457).","content":{"application/problem+json":{"schema":{"type":"object","description":"Describes what went wrong, following the RFC 9457 problem details format.","required":["type","title","status"],"properties":{"type":{"type":"string","description":"A URI that identifies the kind of problem. It's an identifier, not a link, and it's the same every time this problem occurs.","example":"about:blank"},"title":{"type":"string","description":"A short, human-readable summary of the problem.","example":"Oops.. there was an internal error"},"status":{"type":"integer","description":"The HTTP status code of the response.","example":500},"code":{"type":"string","description":"A stable, machine-readable error code. Use it to handle specific errors in your integrations."},"detail":{"type":"string","nullable":true,"description":"More information about what went wrong in this request, when available.","example":null},"message":{"type":"string","deprecated":true,"description":"Same value as `title`, kept for backward compatibility. Use `title` or `code` instead.","example":"Oops.. there was an internal error"},"traceId":{"type":"string","description":"An identifier for this request, when available. Include it when you contact nullplatform support."}}}}}}}}
>

</StatusCodes>

