The four settings
Presence
Both online values also stop the number’s delivery receipts being marked as
sent from a backgrounded client, which is the single clearest difference
between a linked device that is in use and one that never is.
Going online needs a display name on the account. When WhatsApp has none, the
number stays dark and the response reports the applied presence as
dark.
Setting the number’s presence yourself with POST /messaging/{session}/presence
always wins: Safe Mode does not undo it. Your value holds until you set it
again, until the session reconnects, or — with online_hours — until the
window next opens or closes.
Typing
The indicator lasts as long as the message would take to type: about 4.2
characters a second, never less than 900 ms and never more than 9 seconds. A
voice note shows the recording indicator for 2.5 to 4 seconds and media shows
the typing indicator for 1.2 to 2.6 seconds, both varied per message.
Typing indicators are never sent to a channel, a bot, or a broadcast list, and
never to a group.
Reads
Pacing
Delays never stack
A send takes one pause, not four. The typing indicator, the pacing gap, and the reply floor produce a budget; the largest one wins, and the time your request already spent waiting for the throughput limit is subtracted from it. The pause never exceeds 9 seconds. If your request declares how long it will wait for WhatsApp to acknowledge the send, Safe Mode shortens the pause rather than exceeding your deadline. A request sent withPrefer: respond-async is unaffected.
Campaign sends are already paced by the campaign’s own rate, so a Safe Mode
pause on a campaign send takes at most 60% of the gap between recipients and
never reduces the campaign’s throughput.
Campaign sends always get typing and pacing
A send that originates from a campaign always uses at leasttyping: before_text and pacing: jittered, whatever the number’s Safe Mode settings
are. Campaigns are the safe path for reaching people who have not written to
you, so they behave that way by default.
What your contacts see
Every value exceptpacing changes what the people you message see. These
actions cannot be undone once taken.
This is why nothing is on by default. If your number is expected to stay dark,
leave every setting where it is; BanSafe reports the findings either way.
Where to set it
Safe Mode is in Console and on both APIs, with the same settings, the same rules, and the same responses:
Console names the values in plain words rather than the API’s: presence is
Dark, Online while sending or Online during set hours; typing is
Off, Before each text message or Before every message; read
receipts are Off, Chats this number replies to or Every incoming
message; pacing is Off, Varied gaps or Conversation pace. A
number’s control also offers Follow the project, which is
inherit. See
Safety.
Reading needs sessions:read; changing needs sessions:manage. On the
Platform API, a signed-in team member must be an organization owner, admin, or
developer to change Safe Mode; reading needs organization membership.
The examples below use the Platform API. {sessionId} accepts a session UUID
or a stable session slug, and so does the {session} segment on the Messaging
API.
Set the project ceiling
The project ceiling is the most visible behaviour any number in the project may use.onlineStart and onlineEnd are whole local hours from 0 to 23 and default to
9 and 21. They apply only to presence: online_hours.
The GET response tells you whether the plan allows a raise before you send
one. entitled is true when at least one number in the project is on a plan
that includes BanSafe Lite, and entitlementReason carries the sentence a
refused raise would return, or null when a raise is allowed.
Set one number’s override
inherit to follow the project ceiling. An
override may only be equally or more conservative than the ceiling; a more
visible value is refused:
applied is an observation, not a claim: it comes from the number itself. A
number that is disconnected reports nothing and applied is null.
Responses to expect
A
503 never means the change was lost. Polymorfa persists the policy before
telling the number about it, so an effective mode is never reported as applied
when it is not.
Which numbers can use it
Safe Mode is included with BanSafe Lite.
Both
GET responses report this for you in entitled and
entitlementReason, so you can tell a caller why a change is unavailable
without attempting it.
Eligible production Linked Device sessions receive Health estimates. BanSafe
Lite adds Safe Mode, which changes how the number sends. See BanSafe
Health.