Status feature provides APIs for posting text, image, and video status updates, reacting to statuses (e.g. the “like” heart), and revoking previously sent statuses.
Access
Access status operations through the client:Methods
send_text
Send a text status update with background color and font style.text- Status text contentbackground_argb- Background color as ARGB (e.g.,0xFF1E6E4F)font- Pass one of theFontTypevariants (e.g.FontType::SYSTEM). This is a typed protocol enum, so you can’t pass a value it doesn’t define — an olderi32form silently dropped out-of-range values at encode timerecipients- Slice of recipient JIDsoptions- Privacy and delivery options
SendResultcontaining themessage_idandtoJID. Useresult.message_key()to get awa::MessageKeyfor revocation or other follow-up operations.
send_image
Send an image status update.upload- Upload response fromclient.upload()(takes ownership)thumbnail- JPEG thumbnail bytescaption- Optional caption textrecipients- Slice of recipient JIDsoptions- Privacy options
send_video
Send a video status update.upload- Upload response fromclient.upload()(takes ownership)thumbnail- JPEG thumbnail bytesduration_seconds- Video durationcaption- Optional caption textrecipients- Slice of recipient JIDsoptions- Privacy options
send_raw
Send a custom message type as a status update.revoke
Delete a previously sent status update.message_id- ID of the status to revokerecipients- Same recipients the status was sent tooptions- Privacy options
send_reaction
React to a status update with an emoji. You send status reactions viaClient::send_reaction (not client.status()) using status@broadcast as the chat JID and a wa::MessageKey whose participant field identifies the status owner.
chat-Jid::status_broadcast()(the broadcast JID)target_key- Identifies the status to react to; setparticipantto the status owner’s JID andidto the status message IDemoji- Emoji to send (e.g."💚"). Pass""to remove a previous reaction
See Send API — send_reaction for the full parameter reference and additional examples.
Types
StatusPrivacySetting
Privacy setting for status delivery.StatusPrivacySetting is #[non_exhaustive], so match statements should include a wildcard arm to handle future variants.
StatusSendOptions
Options for sending status updates.message_id- Set this to resend a failed status with its original ID, or to otherwise ensure idempotency. Leave itNoneto auto-generate an ID. Same override use case asSendOptions::message_idon 1:1/group sends — see Send API — SendOptions.extra_stanza_nodes- Add neutral child nodes here to include them on the outgoing<message>stanza. Don’t use this for structural children the send path owns (e.g.<enc>,<participants>) — those are rejected before any cryptographic state changes.device_freshness- Leave this atFreshness::CachePreferred(default) to reuse the cached recipient device list, or setFreshness::Refreshto force a fresh device-list fetch before sending. SeeFreshness.
Font styles
WhatsApp Web supports 5 font styles (0-4):Background colors
Background colors use ARGB format (0xAARRGGBB):
Recipient management
Recipients should be JIDs of users who can see the status. You can pass any&[Jid] — an array literal, a slice of a Vec, or a fixed-size array:
The
recipients list should match your privacy settings. When revoking a status, use the same recipients list that was used when posting.Phash validation
After sending a status update, the library validates the participant hash (phash) from the server’s acknowledgment against the locally computed value. On mismatch, the sender key device cache is invalidated so the next status send re-fetches current device lists. This runs in the background and does not affect the send result. See Signal Protocol — Phash validation for details.