---
title: "Read sender-reputation enforcement state, lane rates, pauses and the enforced thresholds."
method: GET
path: "/v1/workspaces/{workspaceId}/sending-health"
---

# Read sender-reputation enforcement state, lane rates, pauses and the enforced thresholds.

`GET /v1/workspaces/{workspaceId}/sending-health`

## Request

- Base URL: `https://api.bangermail.com`
- URL: `https://api.bangermail.com/v1/workspaces/{workspaceId}/sending-health`
- Auth: HTTP bearer

Every lane (Mailbox, Product, Broadcast) of every sending domain with its trailing 24-hour hard bounce and complaint rates and state (active, warning, paused), any domain pause, paused mailboxes, and whether the workspace is frozen. Each pause lists its top bounce and complaint sources and whether a workspace admin may resume it. Thresholds are documented in docs/product/sending-reputation-enforcement.md.

## Response `200`

Sending health.

- object
  - `data` SendingHealth, required
    - `workspace` object, required
      - `state` 'active' | 'frozen', required
      - `hold` SendingHold, required
        - `id` string, uuid, required
        - `scope` 'mailbox' | 'lane' | 'domain' | 'workspace', required
        - `state` 'warning' | 'paused' | 'frozen', required
        - `reason` string, required: bounce_rate, complaint_rate, core_lane_paused, multiple_lanes_paused, repeat_lane_pause, multiple_domains_paused, complaint_burst or operator_review.
        - `started_at` string, date-time, required
        - `review_required` boolean, required
        - `evidence` object, required
        - `resume` object, required
          - `self_serve` boolean, required
          - `blocked_reason` string, nullable, required
          - `resumable_at` string, date-time, nullable, required
        - `top_sources` object[]
          - `signal` 'hard_bounce' | 'complaint', required
          - `source` string, required
          - `source_id` string, nullable, required
          - `count` integer, required
        - `top_recipient_domains` object[]
          - `signal` 'hard_bounce' | 'complaint', required
          - `recipient_domain` string, required
          - `count` integer, required
    - `domains` object[], required
      - `domain_id` string, uuid, required
      - `domain` string, required
      - `product_id` string, uuid, nullable, required
      - `state` 'active' | 'paused', required
      - `hold` SendingHold, required
        - `id` string, uuid, required
        - `scope` 'mailbox' | 'lane' | 'domain' | 'workspace', required
        - `state` 'warning' | 'paused' | 'frozen', required
        - `reason` string, required: bounce_rate, complaint_rate, core_lane_paused, multiple_lanes_paused, repeat_lane_pause, multiple_domains_paused, complaint_burst or operator_review.
        - `started_at` string, date-time, required
        - `review_required` boolean, required
        - `evidence` object, required
        - `resume` object, required
          - `self_serve` boolean, required
          - `blocked_reason` string, nullable, required
          - `resumable_at` string, date-time, nullable, required
        - `top_sources` object[]
          - `signal` 'hard_bounce' | 'complaint', required
          - `source` string, required
          - `source_id` string, nullable, required
          - `count` integer, required
        - `top_recipient_domains` object[]
          - `signal` 'hard_bounce' | 'complaint', required
          - `recipient_domain` string, required
          - `count` integer, required
      - `lanes` object[], required
        - `lane_kind` 'mailbox' | 'product' | 'broadcast', required
        - `sending_stream_id` string, uuid, required
        - `from_domain` string, required
        - `state` 'active' | 'warning' | 'paused', required
        - `probation_until` string, date-time, nullable, required
        - `rates` SendingRates, required
          - `window_hours` integer, required
          - `volume` integer, required: Sends in the window (the larger of sent and delivered plus hard bounced).
          - `hard_bounced` integer, required
          - `complained` integer, required
          - `bounce_rate` number, required
          - `complaint_rate` number, required
          - `small_sender` boolean, required: Fewer than the minimum volume; absolute counts apply.
        - `hold` SendingHold, required
          - `id` string, uuid, required
          - `scope` 'mailbox' | 'lane' | 'domain' | 'workspace', required
          - `state` 'warning' | 'paused' | 'frozen', required
          - `reason` string, required: bounce_rate, complaint_rate, core_lane_paused, multiple_lanes_paused, repeat_lane_pause, multiple_domains_paused, complaint_burst or operator_review.
          - `started_at` string, date-time, required
          - `review_required` boolean, required
          - `evidence` object, required
          - `resume` object, required
            - `self_serve` boolean, required
            - `blocked_reason` string, nullable, required
            - `resumable_at` string, date-time, nullable, required
          - `top_sources` object[]
            - `signal` 'hard_bounce' | 'complaint', required
            - `source` string, required
            - `source_id` string, nullable, required
            - `count` integer, required
          - `top_recipient_domains` object[]
            - `signal` 'hard_bounce' | 'complaint', required
            - `recipient_domain` string, required
            - `count` integer, required
    - `mailboxes` object[], required
      - `mailbox_id` string, uuid, required
      - `address` string, required
      - `product_id` string, uuid, nullable, required
      - `state` 'paused', required
      - `hold` SendingHold, required
        - `id` string, uuid, required
        - `scope` 'mailbox' | 'lane' | 'domain' | 'workspace', required
        - `state` 'warning' | 'paused' | 'frozen', required
        - `reason` string, required: bounce_rate, complaint_rate, core_lane_paused, multiple_lanes_paused, repeat_lane_pause, multiple_domains_paused, complaint_burst or operator_review.
        - `started_at` string, date-time, required
        - `review_required` boolean, required
        - `evidence` object, required
        - `resume` object, required
          - `self_serve` boolean, required
          - `blocked_reason` string, nullable, required
          - `resumable_at` string, date-time, nullable, required
        - `top_sources` object[]
          - `signal` 'hard_bounce' | 'complaint', required
          - `source` string, required
          - `source_id` string, nullable, required
          - `count` integer, required
        - `top_recipient_domains` object[]
          - `signal` 'hard_bounce' | 'complaint', required
          - `recipient_domain` string, required
          - `count` integer, required
    - `thresholds` object, required: The enforced thresholds (src/sending/reputation-policy.ts).

---

[API](https://skmtc.dev/bangermail/apis/banger-api.md) · [All operations](https://skmtc.dev/bangermail/apis/banger-api/llms.txt) · [OpenAPI document](https://skmtc.dev/bangermail/apis/banger-api/revisions/a149909267f9?raw)
