Skip to content

Operator suspend now blocks outbound sends on customer-owned accounts

Released: June 5, 2026

POST /v1/{phone_number_id}/messages Changed

Section titled “POST /v1/{phone_number_id}/messages ”

When the WhatsApp account that owns phone_number_id is attached to a Customer (tenant-of-tenant on the multi-tenant platform tier) whose status is suspended or archived, the API now refuses the send up-front with a 422 and the new customer_suspended error code. Previously the operator-facing status flip had no runtime effect — the send went through.

The check applies to every send surface:

  • POST /v1/{phone_number_id}/messages (Public API)
  • Dashboard send
  • Broadcasts — a suspended Customer aborts the broadcast at start AND mid-flight (the periodic compliance re-read picks up a suspension that lands during a long broadcast and stops further enqueues).
error.codeWhen it firesRecoverable?
customer_suspendedThe Customer that owns the sender WhatsApp account is suspended (operator-forced block) or archived (terminal soft-delete).Yes for suspended — the operator clicks Unsuspend in the dashboard. No for archived.
{
"error": {
"type": "invalid_request_error",
"code": "customer_suspended",
"message": "The customer account that owns this sender is suspended. Sends are blocked until the operator unsuspends the customer.",
"request_id": "req_01HXYZABCDEFGHJKMNPQRSTVWX"
}
}

Customer-owned accounts only — direct-org WhatsApp accounts (those NOT attached to a Customer row, i.e. customer_id IS NULL) are unaffected.

The Customer detail page now exposes Suspend and Unsuspend buttons next to Archive. Suspend asks for confirmation (parallel to the Archive flow) since it stops every outgoing WhatsApp message from the Customer’s accounts until it’s reversed.

The TypeScript SDK OpenAPI snapshot has been refreshed. The Message.error.code known-values list now includes customer_suspended. No method changes — the existing InvalidRequestError already carries the new code as a string.