# Typing Indicators

Typing indicators allow a business integration to signal that a reply is being composed after an incoming message is received. When triggered, WhatsApp marks the message as read, then displays a typing indicator in the conversation until a response message is sent. If a response message is not sent within 25 seconds, the indicator is automatically dismissed.

Typing indicators are useful when additional processing time is required before sending a response, such as calling external services or performing complex business logic.

### Send a typing indicator

<mark style="color:orange;">`POST`</mark> `https://waba-v2.360dialog.io/messages`

To send a typing indicator, use the request URL, the following headers, and JSON body.

```json
{ 
   "messaging_product": "whatsapp",
   "status": "read",
   "message_id": "<WHATSAPP_MESSAGE_ID>",
   "typing_indicator": {
     "type": "text"
   }
}
```

#### Headers

| Name         | Value                  |
| ------------ | ---------------------- |
| Content-Type | application/json       |
| D360-API-KEY | Your 360Dialog API key |

#### Request Body

| Name                                                 | Type   | Description                                                                                         |
| ---------------------------------------------------- | ------ | --------------------------------------------------------------------------------------------------- |
| messaging\_product<mark style="color:red;">\*</mark> | string | Must be set to `"whatsapp"`.                                                                        |
| status<mark style="color:red;">\*</mark>             | string | The message must be marked `"read"` before displaying a typing indicator. Use `"read"`.             |
| message\_id<mark style="color:red;">\*</mark>        | string | ID of the incoming message to mark as read and send a typing indicator for. Starts with `"wamid."`. |
| typing\_indicator<mark style="color:red;">\*</mark>  | object | An object which contains a `"type"` key, whose value must be `"text"`.                              |

{% tabs %}
{% tab title="200: Success " %}
A successful request results in a  `"success": true` response:

```json
{
    "success": true
}
```

{% endtab %}
{% endtabs %}
