Skip to main content
The 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.
Parameters:
  • text - Status text content
  • background_argb - Background color as ARGB (e.g., 0xFF1E6E4F)
  • font - Pass one of the FontType variants (e.g. FontType::SYSTEM). This is a typed protocol enum, so you can’t pass a value it doesn’t define — an older i32 form silently dropped out-of-range values at encode time
  • recipients - Slice of recipient JIDs
  • options - Privacy and delivery options
Returns:
  • SendResult containing the message_id and to JID. Use result.message_key() to get a wa::MessageKey for revocation or other follow-up operations.
Example:

send_image

Send an image status update.
Parameters:
  • upload - Upload response from client.upload() (takes ownership)
  • thumbnail - JPEG thumbnail bytes
  • caption - Optional caption text
  • recipients - Slice of recipient JIDs
  • options - Privacy options
Example:

send_video

Send a video status update.
Parameters:
  • upload - Upload response from client.upload() (takes ownership)
  • thumbnail - JPEG thumbnail bytes
  • duration_seconds - Video duration
  • caption - Optional caption text
  • recipients - Slice of recipient JIDs
  • options - Privacy options
Example:

send_raw

Send a custom message type as a status update.
Example:

revoke

Delete a previously sent status update.
Parameters:
  • message_id - ID of the status to revoke
  • recipients - Same recipients the status was sent to
  • options - Privacy options
Example:

send_reaction

React to a status update with an emoji. You send status reactions via Client::send_reaction (not client.status()) using status@broadcast as the chat JID and a wa::MessageKey whose participant field identifies the status owner.
Parameters:
  • chat - Jid::status_broadcast() (the broadcast JID)
  • target_key - Identifies the status to react to; set participant to the status owner’s JID and id to the status message ID
  • emoji - Emoji to send (e.g. "💚"). Pass "" to remove a previous reaction
Example:
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 it None to auto-generate an ID. Same override use case as SendOptions::message_id on 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 at Freshness::CachePreferred (default) to reuse the cached recipient device list, or set Freshness::Refresh to force a fresh device-list fetch before sending. See Freshness.
Example:

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.