Read the active classification rules for the calling org
Returns the active rule set the /v1/undeliverable surface applies
when classifying recipients (SND-713). Three rules are always-on
(locked, cannot be disabled): permanent_bounce, complaint,
rejected. Three rules are configurable per org, each with an
events threshold (N) and window_days (M) — an address matches
when ≥ N qualifying events have occurred in a rolling M-day window.
When an address matches multiple rules, the wire reason is the
highest-priority match in this order:
permanent_bounce > complaint > rejected > repeated_transient >
undetermined > soft_bounce_accumulation.
Rules are read-only over the public API in v1 — changes are made
through the dashboard (audit-logged, granted to owners + admins
only). Callers should pin against version and re-fetch when the
X-SendOps-Rules-Version header on /v1/undeliverable changes.
Responses
Errors follow the RFC 7807 problem format — see the error reference.
profile string enum required One of: strict, standard, aggressive, custom
rules object required Fields of rules:
permanent_bounce object required One rule in the classification rule set. Locked rules carry
locked: true and no events/window_days (they fire on any
qualifying event, lifetime). Configurable rules carry
events (1–100) and window_days (1–365); a rule matches when
≥ events have happened for an address in a rolling window_days
period ending at now.
Fields of permanent_bounce:
enabled boolean required Whether the rule contributes to classification. Locked rules
(locked: true) cannot be set to enabled: false.
locked boolean optional True for the three always-on rules (permanent_bounce, complaint, rejected). Locked rules cannot be disabled — the field is omitted on configurable rules.
events integer optional Required event count within the window. Configurable rules only.
Constraints: 1–100
window_days integer optional Rolling window length in days. Configurable rules only.
Constraints: 1–365
complaint object required One rule in the classification rule set. Locked rules carry
locked: true and no events/window_days (they fire on any
qualifying event, lifetime). Configurable rules carry
events (1–100) and window_days (1–365); a rule matches when
≥ events have happened for an address in a rolling window_days
period ending at now.
Fields of complaint:
enabled boolean required Whether the rule contributes to classification. Locked rules
(locked: true) cannot be set to enabled: false.
locked boolean optional True for the three always-on rules (permanent_bounce, complaint, rejected). Locked rules cannot be disabled — the field is omitted on configurable rules.
events integer optional Required event count within the window. Configurable rules only.
Constraints: 1–100
window_days integer optional Rolling window length in days. Configurable rules only.
Constraints: 1–365
rejected object required One rule in the classification rule set. Locked rules carry
locked: true and no events/window_days (they fire on any
qualifying event, lifetime). Configurable rules carry
events (1–100) and window_days (1–365); a rule matches when
≥ events have happened for an address in a rolling window_days
period ending at now.
Fields of rejected:
enabled boolean required Whether the rule contributes to classification. Locked rules
(locked: true) cannot be set to enabled: false.
locked boolean optional True for the three always-on rules (permanent_bounce, complaint, rejected). Locked rules cannot be disabled — the field is omitted on configurable rules.
events integer optional Required event count within the window. Configurable rules only.
Constraints: 1–100
window_days integer optional Rolling window length in days. Configurable rules only.
Constraints: 1–365
repeated_transient object required One rule in the classification rule set. Locked rules carry
locked: true and no events/window_days (they fire on any
qualifying event, lifetime). Configurable rules carry
events (1–100) and window_days (1–365); a rule matches when
≥ events have happened for an address in a rolling window_days
period ending at now.
Fields of repeated_transient:
enabled boolean required Whether the rule contributes to classification. Locked rules
(locked: true) cannot be set to enabled: false.
locked boolean optional True for the three always-on rules (permanent_bounce, complaint, rejected). Locked rules cannot be disabled — the field is omitted on configurable rules.
events integer optional Required event count within the window. Configurable rules only.
Constraints: 1–100
window_days integer optional Rolling window length in days. Configurable rules only.
Constraints: 1–365
undetermined object required One rule in the classification rule set. Locked rules carry
locked: true and no events/window_days (they fire on any
qualifying event, lifetime). Configurable rules carry
events (1–100) and window_days (1–365); a rule matches when
≥ events have happened for an address in a rolling window_days
period ending at now.
Fields of undetermined:
enabled boolean required Whether the rule contributes to classification. Locked rules
(locked: true) cannot be set to enabled: false.
locked boolean optional True for the three always-on rules (permanent_bounce, complaint, rejected). Locked rules cannot be disabled — the field is omitted on configurable rules.
events integer optional Required event count within the window. Configurable rules only.
Constraints: 1–100
window_days integer optional Rolling window length in days. Configurable rules only.
Constraints: 1–365
soft_bounce_accumulation object required One rule in the classification rule set. Locked rules carry
locked: true and no events/window_days (they fire on any
qualifying event, lifetime). Configurable rules carry
events (1–100) and window_days (1–365); a rule matches when
≥ events have happened for an address in a rolling window_days
period ending at now.
Fields of soft_bounce_accumulation:
enabled boolean required Whether the rule contributes to classification. Locked rules
(locked: true) cannot be set to enabled: false.
locked boolean optional True for the three always-on rules (permanent_bounce, complaint, rejected). Locked rules cannot be disabled — the field is omitted on configurable rules.
events integer optional Required event count within the window. Configurable rules only.
Constraints: 1–100
window_days integer optional Rolling window length in days. Configurable rules only.
Constraints: 1–365
version string required 6-character hex hash over the canonical rules JSON.
updated_at string<date-time> optional When the rules were last changed.
updated_by string<email> optional Email of the operator who last changed the rules. Omitted for system-set defaults.
code is internal_error. The
request_id field can be quoted to SendOps support to investigate.
application/problem+json