---
title: "Get sending status"
method: GET
path: "/sending-status"
tags: ["Sending Status"]
---

# Get sending status

`GET /sending-status`

Returns whether company-level sending is active, paused, or suspended, the pause reason, the sender-health counts and thresholds behind it, the automated review state, whether sending can be restored without support, and ordered remediation steps. Call this whenever a send or test send fails for a reason that is not a validation error. Enforcement uses all-time totals from a reset watermark rather than a rolling window, so metricsWindow.expiresAt is always null and waiting does not restore sending. Requires the account:read scope.

## Response `200`

Sending status returned

- SendingStatus — Company-level sending state, the sender-health measurements behind it, and the remediation path. Enforcement is not time-windowed, so metricsWindow.expiresAt is always null.
  - `success` boolean
  - `status` 'active' | 'paused' | 'suspended' — Anything other than active blocks every send for this workspace, including test sends.
  - `pauseReason` string, nullable — Enforcement message including the measured rate, the threshold it crossed, and the volume it was measured over.
  - `pauseReasonKind` 'high_hard_bounce_rate' | 'high_soft_bounce_rate' | 'high_complaint_rate' | 'phishing_guard' | 'manual' | 'other', nullable — Only high_hard_bounce_rate can be cleared through the resume endpoint.
  - `pausedAt` string, date-time, nullable
  - `selfResume` object
    - `canSelfResume` boolean — Whether POST /sending-status/resume will succeed right now.
    - `supported` boolean — Whether this pause reason is self-resumable at all.
    - `allowedByAdmin` boolean
    - `ownerIsTrusted` boolean
    - `aiReviewStatus` 'not_required' | 'pending' | 'approved' | 'flagged' | 'failed' — State of the automated sender-health review opened when the pause was created.
    - `aiReviewReason` string, nullable
    - `aiReviewStartedAt` string, date-time, nullable
    - `aiReviewedAt` string, date-time, nullable
    - `unavailableReason` 'unsupported_reason' | 'waiting_for_review' | 'blocked_by_ai' | 'review_failed' | 'blocked_by_admin', nullable — The gate blocking resume. Null when resume is available.
  - `senderHealth` object, nullable — Null when the workspace has no metrics record yet or sender-health analytics are temporarily unavailable. Pause state and remediation remain available during an analytics outage.
    - `enforcementMode` 'enforce' | 'monitor_only'
    - `scopedSent` integer — Backward-compatible alias for bounceScopedSent.
    - `bounceScopedSent` integer — Non-test sends counted from the bounce reset watermark - the denominator for hard- and soft-bounce rates.
    - `complaintScopedSent` integer — Non-test sends counted from the complaint reset watermark - the denominator for complaint rates.
    - `hardBounce` SenderHealthMetric
      - `count` integer
      - `rate` number — Percentage of the applicable bounceScopedSent or complaintScopedSent denominator.
      - `warnThreshold` SenderHealthThresholdBound — Threshold that applies at this send volume. Either bound may be null when the tier does not use it.
        - `rate` number, nullable
        - `count` integer, nullable
      - `pauseThreshold` SenderHealthThresholdBound — Threshold that applies at this send volume. Either bound may be null when the tier does not use it.
        - `rate` number, nullable
        - `count` integer, nullable
    - `softBounce` SenderHealthMetric
      - `count` integer
      - `rate` number — Percentage of the applicable bounceScopedSent or complaintScopedSent denominator.
      - `warnThreshold` SenderHealthThresholdBound — Threshold that applies at this send volume. Either bound may be null when the tier does not use it.
        - `rate` number, nullable
        - `count` integer, nullable
      - `pauseThreshold` SenderHealthThresholdBound — Threshold that applies at this send volume. Either bound may be null when the tier does not use it.
        - `rate` number, nullable
        - `count` integer, nullable
    - `complaint` SenderHealthMetric
      - `count` integer
      - `rate` number — Percentage of the applicable bounceScopedSent or complaintScopedSent denominator.
      - `warnThreshold` SenderHealthThresholdBound — Threshold that applies at this send volume. Either bound may be null when the tier does not use it.
        - `rate` number, nullable
        - `count` integer, nullable
      - `pauseThreshold` SenderHealthThresholdBound — Threshold that applies at this send volume. Either bound may be null when the tier does not use it.
        - `rate` number, nullable
        - `count` integer, nullable
  - `metricsWindow` object
    - `kind` 'all_time_since_reset'
    - `expiresAt` string, nullable — Always null. Enforcement totals are all-time from the watermark, so a paused rate never expires on its own.
    - `bounceResetAt` string, date-time, nullable
    - `complaintResetAt` string, date-time, nullable
    - `description` string
  - `remediation` object
    - `steps` string[] — Ordered next steps for the current state.
    - `supportEmail` string
    - `docsUrl` string
    - `dashboardPath` string, nullable
    - `dashboardUrl` string, nullable

## Other responses

- `401` — Unauthorized
- `403` — API key is missing the account:read scope

---

[API](https://skmtc.net/sequenzy/apis/sequenzy-api.md) · [All operations](https://skmtc.net/sequenzy/apis/sequenzy-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/sequenzy/sequenzy-api/versions/af1cf9620482/schema)
