---
title: "Resume paused sending"
method: POST
path: "/sending-status/resume"
tags: ["Sending Status"]
---

# Resume paused sending

`POST /sending-status/resume`

Restores company-level sending paused by a high permanent-bounce rate, after the cause has been fixed. This is not a bypass - it enforces the same gates as the dashboard and never removes suppressions. For a paused workspace, sending is restored only when selfResume.canSelfResume is true on GET /sending-status, which requires a high_hard_bounce_rate pause, a cleared automated sender-health review, and no admin block. An already-active workspace succeeds as an idempotent no-op with resumed false. On restoration the bounce watermark moves to now and the service attempts to requeue paused campaigns plus due sequence steps. A partial queue handoff still returns the committed active state with recovery guidance in message. Requires the companies:manage scope plus owner or admin access.

## Request body

- object
  - `listSanitizationConfirmed` boolean, required — Must be true. Confirms the source of the invalid addresses is fixed and permanent bounces remain suppressed. Recorded on the account audit trail.

## Response `200`

Sending resumed, or already active

- object — 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
  - `resumed` boolean — False when sending was already active.
  - `message` string — Confirms the outcome, or explains that sending resumed while some parked work still needs support.

## Other responses

- `400` — Confirmation missing, or the pause reason is not self-resumable
- `401` — Unauthorized
- `403` — Blocked by the automated review, an admin block, or view-only access
- `404` — Company not found

---

[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)
