Conversations

Show or clear a typing indicator

Show (or clear) a typing indicator to the contact in a conversation.

Use it while a reply is being prepared, e.g. by your own bot. The body is optional; an empty body means {"state": "on"}.

Channel behavior

  • WhatsApp: the indicator also marks the contact's latest message as read (implied_read: true) and lasts up to 25 seconds or until you reply. state: "off" is accepted but has no effect.
  • Telegram: lasts about 5 seconds; call again to keep it visible.
  • Check GET /channels/sender-actions for every channel's support and timeout (typing_ttl_seconds). Unsupported channels return 422 sender_action_not_supported.

message_id (optional) ties the indicator to a specific inbound message of this conversation; channels that need one use the latest inbound message when omitted (422 no_inbound_message if there is none).

This is not a message: nothing is billed, no message is created and no webhook is sent. Your inbox's unread state is not changed.

Errors

detail is an object: {"code", "message", "channel_type", "action"}.

  • 404 conversation_not_found, message_not_found
  • 422 sender_action_not_supported, no_inbound_message, message_not_inbound, channel_unavailable
  • 429 sender_action_rate_limited — about 30 calls per minute per conversation; retry after the Retry-After seconds
  • 502 sender_action_failed — the messaging platform rejected the request

Repeats are absorbed: a second read receipt for the same message, or a typing on while the indicator is still showing, returns 200 with deduplicated: true and nothing is sent again (typing off is never deduplicated).

Required Scopes: messages:create

post/api/v1/conversations/{conversation_id}/typing

Request

  • Base URL: https://api.sendseven.com
  • URL: https://api.sendseven.com/api/v1/conversations/{conversation_id}/typing
  • Auth: HTTP bearer

Path parameters

conversation_idstring required

Request body

state'on' | 'off'

on shows the typing indicator, off clears it.

message_idstring nullable

Optional ID of an inbound message in this conversation to attach the indicator to. Only used by channels that tie typing to a received message (WhatsApp); defaults to the latest inbound message.

Example request

{
  "state": "on"
}

Response

Successful Response

successboolean

Always true on a 200 response.

action'read' | 'typing' required

The action performed.

state'on' | 'off' nullable

Typing state (on/off); null for read receipts.

message_idstring nullable

The message the action referred to, if any.

conversation_idstring nullable required

Conversation ID (null only for a message that belongs to no conversation).

channel_typestring required

Channel type of the conversation.

expires_in_secondsinteger nullable

For typing on: seconds until the platform hides the indicator on its own. null when it stays until cleared, or for read receipts.

implied_readboolean

True when the action also marked the message as read on the platform (WhatsApp typing indicators do this).

deduplicatedboolean

True when an identical recent request already covered this one (read receipt already sent for this message, or typing indicator still showing), so nothing was sent to the channel again.

Example response

{
  "action": "typing",
  "channel_type": "whatsapp",
  "conversation_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "deduplicated": false,
  "expires_in_seconds": 25,
  "implied_read": true,
  "message_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "state": "on",
  "success": true
}

Changes

No recorded changes to this operation across all 3 revisions of this API.