---
title: "Pause sending from a sender profile mailbox"
method: POST
path: "/api/sender-profiles/{sid}/mailboxes/{emailAccountSid}/pause-sending"
tags: ["sender_profiles"]
---

# Pause sending from a sender profile mailbox

`POST /api/sender-profiles/{sid}/mailboxes/{emailAccountSid}/pause-sending`

## Request

- Base URL: `https://beta.getsales.io/unibox/v1`
- URL: `https://beta.getsales.io/unibox/v1/api/sender-profiles/{sid}/mailboxes/{emailAccountSid}/pause-sending`
- Auth: HTTP bearer and API key in header `Team-SID`

Stop outbound from one mailbox of the sender profile: gtm-api's own pause-sending. The mailbox keeps syncing and receiving replies, the workflows send through the sender profile's other active mailboxes, and the mirror reads status sending_paused with status_reason manual. Idempotent. Reverse it with resume_sender_profile_mailbox_sending. To unbind the mailbox use detach_sender_profile_mailbox; to end its session, disconnect_sender_profile_mailbox.

Contract:
- MCP tool `pause_sender_profile_mailbox_sending`, registry package `mcp.unibox/sender_profiles`, mount `unibox.sender-profile-mailboxes`.
- Operation `action`, response envelope `action`.
- Flags: none.

## Path parameters

- `sid` string, required: Sender profile sid (ub_sp_…).
- `emailAccountSid` string, required: Which mailbox of the sender profile the verb acts on (em_ac_…); a sid the sender profile does not hold is a 404.

## Response `200`

`action` success envelope.

- PauseSenderProfileMailboxSendingResponse
  - `success` true, required
  - `operation` 'action', required
  - `action` string, required: kebab-case verb; matches the route segment.
  - `item` object, nullable, required
    - `sid` string, required: Sender profile sid (ub_sp_…).
    - `team_sid` string, required: Owning team (ts_tm_…, external - gs.service.id).
    - `name` string, required: Display persona name (1..255). The profile is the person: connecting an account never renames it.
    - `created_by` object, required: Actor that created the sender profile (AccessIdentityValue).
      - `actor_type` 'user' | 'support' | 'api_key' | 'system' | 'agent', required
      - `actor_sid` string, nullable, required
      - `team_sid` string, required
      - `actor_name` string, nullable: The OAuth client that acted ("Claude", "n8n"); null for a user, an API key or a system job.
      - `oauth_client_sid` string, nullable: The acting OAuth client (id_oc_*); null off the OAuth path.
      - `reason` string, nullable: Why a system actor wrote the row (snapshot_capture_job, ...); null otherwise.
      - `permissions` object, required: Internal audit context: the grant set the actor held at write time. Not a contract.
      - `cluster_id` integer, nullable: Internal audit context: the cluster that served the write.
      - `trace_id` string, nullable: Internal audit context: the trace id of the request that wrote the row.
    - `label` string, nullable, required: The free text under the name in the sender profile list ("Outbound EU"), max 255; null = none.
    - `linkedin_account_sid` string, nullable, required: The gtm-api LinkedIn account this sender profile speaks through (ln_ac_…); null = no LinkedIn channel. Bound by the channel verbs only, never by update_sender_profile.
    - `linkedin_source` 'cloud' | 'own_proxy' | 'gologin' | 'attached', nullable, required: How that account came in (the page's session badge): cloud | own_proxy | gologin (the per-sender-profile connect flows) | attached (an account gtm-api already held). Read-only.
    - `linkedin_status` 'active' | 'reconnect_required' | 'stalled' | 'disconnected' | 'stopped', nullable, required: The LinkedIn channel as gtm-api reports it: active sends, reconnect_required = the browser is signed out, stalled = the account did nothing through a full day of its sync hours, or its browser failed a start gtm-api still retries (sends are still tried, nothing to sign in to; linkedin_status_reason says which), disconnected = the account is gone, refused or its browser parked after the retries. null = no LinkedIn account bound. Read-only. The sender profile has no status of its own: a mailbox carries its state on its own mailboxes[] row.
    - `linkedin_status_reason` string, nullable, required: gtm-api's cause token behind a non-active linkedin_status; null while active. Read-only. Login: logged_out, login_failed. Silence: heartbeat_stale (no cause known). browser_unreachable (stalled, ours: the platform could not run the browser, behind a silence or on a failed start still retried). A browser fault the team fixes, parked (disconnected) or not parked yet (stalled: a failed start gtm-api still retries, or a silence): browser_proxy_failed (the proxy does not answer), browser_profile_unavailable (the GoLogin profile is deleted or unreadable), browser_linkedin_session (LinkedIn wants a sign-in or a check), browser_linkedin_restricted, browser_other_workspace (the member is connected in another workspace), browser_client_investigation (theirs, cause not named). Ours, parked: browser_support_investigation, sync_failed. Also gtm_connection_revoked, gtm_access_lost, account_deleted, subscription_required, browser_stopped.
    - `linkedin_has_sn` boolean, required: Whether the LinkedIn account holds a Sales Navigator licence, as gtm-api reports it. Read-only, and mirrored to playtables, where a data source whose link opens in Sales Navigator may only name a sender profile with this set (the save answers 422 sales_nav_required otherwise). false on a sender profile with no LinkedIn account.
    - `linkedin_recruiter_status` 'active' | 'signed_out', nullable, required: Whether the LinkedIn account holds a Recruiter licence and its session is alive: active | signed_out, null = no Recruiter licence. Read-only, and mirrored to playtables, where a Recruiter data source needs active (422 recruiter_required on null, recruiter_signed_out on signed_out).
    - `linkedin_history_since` string, nullable, required: The LinkedIn history window; present with null = all history, now = only what arrives from this change on. An earlier day, or null, re-walks the account down to it (history_sync pending); a later day, or now, deletes nothing, only bounds later runs.
    - `linkedin_history_scope` 'all' | 'playtable_people', required: The LinkedIn import scope; present with null = playtable_people, the default. Back to all re-walks the account (history_sync pending) so the conversations the people-only scope kept out come in; playtable_people deletes nothing and narrows later runs.
    - `email_account_sid` string, nullable, required: The PRIMARY mailbox (em_ac_…), the one `mailboxes` marks is_primary; null = no mailbox.
    - `avatar_url` string, nullable, required: Display photo (max 2048): the bound LinkedIn account's photo, which the sender profile follows. Taken at the attach, read again when gtm-api reports the account created, restored or through its first sync, and by the nightly sweep; the detach removes it. gtm-api deletes a photo it replaced, so an old URL can be gone.
    - `assignee_user_sid` string, nullable, required: Operator of the sender profile (external user sid, gs.service.id): the default assignee of the tasks its threads spawn; null = unassigned.
    - `history_sync` object, nullable, required: State of the account history walk; null = never requested. Written by the backfill job only.
      - `status` 'pending' | 'running' | 'completed' | 'failed', required: pending | running | completed | failed. Non-terminal states are polled; sync_sender_profile_history returns the in-flight one instead of starting a second walk.
      - `requested_at` string, required: ISO 8601 UTC, when the walk was asked for.
      - `started_at` string, nullable, required
      - `finished_at` string, nullable, required
      - `threads_seen` integer, required: gtm threads walked, skipped ones included.
      - `threads_imported` integer, required: Local conversations created or grown by the walk.
      - `messages_imported` integer, required: New local message rows.
      - `skipped` integer, required: Rows the walk could not map: group threads with no single counterpart, recalled or attachment-only messages, unknown kinds.
      - `synced_through` string, nullable, required: ISO 8601 UTC watermark (the gtm-side updated_at) a delta run resumes from; null after a full walk that never completed.
      - `error` string, nullable, required: Reason token on a failed run: gtm_read_failed | gtm_bridge_unavailable | no_channel_account.
    - `mailboxes` object[], nullable, required: The sender profile's mailboxes, the primary one first in meaning (is_primary); null = none. A sender profile holds several and an email step rotates across the sendable ones.
      - `email_account_sid` string, required: The gtm.service.email mailbox this entry mirrors (em_ac_…).
      - `address` string, nullable, required: The mailbox address as gtm holds it; null until the first mirror read.
      - `display_name` string, nullable, required: The From name gtm sends under; null = the account default.
      - `provider` string, nullable, required: google | microsoft | imap_smtp | gtm_hosted; null while unknown.
      - `status` string, required: gtm's own words, mirrored by the health webhook and every re-read: active | reconnect_required | disconnected | subscription_required | sending_paused | deleted. gtm keeps a sending pause next to an active status; the mirror reads such a mailbox as sending_paused. Only active is sendable.
      - `status_reason` string, nullable, required: The cause behind a non-active status; null otherwise. On sending_paused it is the pause's cause: manual (pause_sender_profile_mailbox_sending), or a guardrail of gtm's (bounce_rate, complaint_rate, provider_block, warmup_guard), which resume_sender_profile_mailbox_sending lifts only with a reason.
      - `is_primary` boolean, required: Exactly one mailbox is primary while any exists: the one the sender profile's email_account_sid points at (the composer default). A detached primary hands the role on.
      - `sending_limits` object, nullable, required: Mirrored from gtm: the mailbox's daily cap, its minimum gap between sends and its own window. Edited through update_sender_profile_mailbox.
        - `daily_limit` integer
        - `min_interval_seconds` integer
        - `sending_window` union
          - object
          - unknown[]
            - unknown
          - unknown
      - `warmup_config` object, nullable, required: Mirrored from gtm: the warm-up ramp (start volume, daily step, target).
        - `enabled` boolean
        - `ramp_start_daily` integer
        - `ramp_step_per_day` integer
        - `target_daily` integer
      - `signature_html` string, nullable, required: HTML signature appended by gtm on send; null = none.
      - `bcc` string[], nullable, required: The mailbox's standing blind copies. LOCAL to this sender profile (gtm has no bcc on the account); at most 5 addresses.
      - `track_opens` boolean, nullable, required
      - `track_clicks` boolean, nullable, required
      - `email_tracking_domain_sid` string, nullable, required: The gtm tracking domain used for open and click links (em_td_…); null = none.
      - `history_since` string, nullable, required: The mailbox's history window, LOCAL to the sender profile; present with null = all history, now = from this change on. An earlier day, or null, re-walks this mailbox down to it (the people's activity too); a later day, or now, deletes nothing.
      - `history_scope` 'all' | 'playtable_people', required: The mailbox's import scope, LOCAL to this sender profile like bcc: all = every thread of the mailbox reaches the inbox, playtable_people = only the threads whose counterpart is a person in one of the workspace's playtables (a thread that exists keeps syncing; a person added to a playtable later brings its threads in); playtable_people is the default. Changed through update_sender_profile_mailbox: back to all re-walks the mailbox.
      - `connected_at` string, nullable, required: ISO 8601 UTC, when the mailbox was connected on gtm.
      - `synced_at` string, nullable, required: ISO 8601 UTC, when this mirror last read gtm.
    - `deleted_by` object, nullable, required: Actor that soft-deleted the sender profile; null while live.
      - `actor_type` 'user' | 'support' | 'api_key' | 'system' | 'agent', required
      - `actor_sid` string, nullable, required
      - `team_sid` string, required
      - `actor_name` string, nullable: The OAuth client that acted ("Claude", "n8n"); null for a user, an API key or a system job.
      - `oauth_client_sid` string, nullable: The acting OAuth client (id_oc_*); null off the OAuth path.
      - `reason` string, nullable: Why a system actor wrote the row (snapshot_capture_job, ...); null otherwise.
      - `permissions` object, required: Internal audit context: the grant set the actor held at write time. Not a contract.
      - `cluster_id` integer, nullable: Internal audit context: the cluster that served the write.
      - `trace_id` string, nullable: Internal audit context: the trace id of the request that wrote the row.
    - `created_at` string, required: ISO 8601 UTC.
    - `updated_at` string, required: ISO 8601 UTC; bumped by config edits AND by channel state changes, the health-mirror ones included.
    - `deleted_at` string, nullable, required: ISO 8601 UTC; null = live (mandatory soft delete).
  - `result` object, required
    - `mailboxes` object[], nullable, required: The sender profile's mailbox list after the verb.
      - `email_account_sid` string, required: The gtm.service.email mailbox this entry mirrors (em_ac_…).
      - `address` string, nullable, required: The mailbox address as gtm holds it; null until the first mirror read.
      - `display_name` string, nullable, required: The From name gtm sends under; null = the account default.
      - `provider` string, nullable, required: google | microsoft | imap_smtp | gtm_hosted; null while unknown.
      - `status` string, required: gtm's own words, mirrored by the health webhook and every re-read: active | reconnect_required | disconnected | subscription_required | sending_paused | deleted. gtm keeps a sending pause next to an active status; the mirror reads such a mailbox as sending_paused. Only active is sendable.
      - `status_reason` string, nullable, required: The cause behind a non-active status; null otherwise. On sending_paused it is the pause's cause: manual (pause_sender_profile_mailbox_sending), or a guardrail of gtm's (bounce_rate, complaint_rate, provider_block, warmup_guard), which resume_sender_profile_mailbox_sending lifts only with a reason.
      - `is_primary` boolean, required: Exactly one mailbox is primary while any exists: the one the sender profile's email_account_sid points at (the composer default). A detached primary hands the role on.
      - `sending_limits` object, nullable, required: Mirrored from gtm: the mailbox's daily cap, its minimum gap between sends and its own window. Edited through update_sender_profile_mailbox.
        - `daily_limit` integer
        - `min_interval_seconds` integer
        - `sending_window` union
          - object
          - unknown[]
            - unknown
          - unknown
      - `warmup_config` object, nullable, required: Mirrored from gtm: the warm-up ramp (start volume, daily step, target).
        - `enabled` boolean
        - `ramp_start_daily` integer
        - `ramp_step_per_day` integer
        - `target_daily` integer
      - `signature_html` string, nullable, required: HTML signature appended by gtm on send; null = none.
      - `bcc` string[], nullable, required: The mailbox's standing blind copies. LOCAL to this sender profile (gtm has no bcc on the account); at most 5 addresses.
      - `track_opens` boolean, nullable, required
      - `track_clicks` boolean, nullable, required
      - `email_tracking_domain_sid` string, nullable, required: The gtm tracking domain used for open and click links (em_td_…); null = none.
      - `history_since` string, nullable, required: The mailbox's history window, LOCAL to the sender profile; present with null = all history, now = from this change on. An earlier day, or null, re-walks this mailbox down to it (the people's activity too); a later day, or now, deletes nothing.
      - `history_scope` 'all' | 'playtable_people', required: The mailbox's import scope, LOCAL to this sender profile like bcc: all = every thread of the mailbox reaches the inbox, playtable_people = only the threads whose counterpart is a person in one of the workspace's playtables (a thread that exists keeps syncing; a person added to a playtable later brings its threads in); playtable_people is the default. Changed through update_sender_profile_mailbox: back to all re-walks the mailbox.
      - `connected_at` string, nullable, required: ISO 8601 UTC, when the mailbox was connected on gtm.
      - `synced_at` string, nullable, required: ISO 8601 UTC, when this mirror last read gtm.
  - `meta` object, required
    - `trace_id` string, required: UUID v7; same 128-bit value as the X-Trace-Id header.
    - `span_id` string, required: 16 hex chars, root span of this request.
    - `timestamp` string, required: ISO 8601 UTC (Y-m-dTH:i:sZ), response time.
    - `duration_ms` integer, required: Server-side wall clock.
    - `team_sid` string, nullable: The team this call ran in (the token team, or the team_sid override). Null when unauthenticated; absent from pre-2026-08-20 backends.
    - `actor_type` string, nullable: user | agent | api_key | system. Null when unauthenticated; absent from pre-2026-08-20 backends.

## Other responses

- `4XX`: MCP error envelope. `error.code` is one of validation_failed, nothing_to_update, not_found, relation_not_found, invalid_transition, limit_exceeded, payment_required, duplicate_rejected, conflict, delete_blocked, unauthorized, forbidden, rate_limited, not_implemented.
- `5XX`: MCP error envelope with `error.code` internal_error or service_unavailable.

---

[API](https://skmtc.dev/getsales/apis/getsales-public-contract-gs-service-unibox.md) - [All operations](https://skmtc.dev/getsales/apis/getsales-public-contract-gs-service-unibox/llms.txt) - [OpenAPI document](https://skmtc.dev/getsales/apis/getsales-public-contract-gs-service-unibox/revisions/8f1bc317897f?raw)
