> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zavu.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Typing Indicators

> Mark an inbound WhatsApp message as read and show a typing indicator while you prepare a response. Improves UX when replies take more than a couple of seconds.

When a customer messages your business and the reply needs a moment to prepare — an LLM agent, a database lookup, an external API call — you can show the same "typing…" dots WhatsApp users see when a friend is replying. The same call also marks the inbound message as read (blue checks).

## Show a Typing Indicator

Call the typing endpoint with the inbound message ID you want to acknowledge:

<CodeGroup>
  ```typescript TypeScript theme={null}
  await zavu.messages.showTyping("msg_abc123");
  ```

  ```python Python theme={null}
  zavu.messages.show_typing("msg_abc123")
  ```

  ```ruby Ruby theme={null}
  client.messages.show_typing("msg_abc123")
  ```

  ```go Go theme={null}
  _, err := client.Messages.ShowTyping(context.TODO(), "msg_abc123")
  ```

  ```php PHP theme={null}
  $client->messages->showTyping('msg_abc123');
  ```

  ```bash cURL theme={null}
  curl -X POST https://api.zavu.dev/v1/messages/msg_abc123/typing \
    -H "Authorization: Bearer zv_live_xxx"
  ```
</CodeGroup>

The indicator is automatically dismissed when:

* You send a reply, OR
* 25 seconds elapse — whichever comes first.

## When to Use

Show the indicator only when a response really is on the way. The typical pattern is to call it as the first thing your webhook handler does for an inbound message that will trigger slow work:

```typescript theme={null}
// In your webhook handler for `message.inbound`
await zavu.messages.showTyping(event.data.messageId);

const reply = await yourLLM.generate(event.data.text);

await zavu.messages.send({
  to: event.data.from,
  channel: "whatsapp",
  text: reply,
});
```

This is especially valuable for [AI Agents](/guides/ai-agents) — without it, the user sees nothing happen for several seconds after they send their message.

## Specifications

| Property            | Requirement                                              |
| ------------------- | -------------------------------------------------------- |
| Message channel     | Must be `whatsapp`                                       |
| Message direction   | Must be `inbound`                                        |
| Provider message ID | Must be present (set automatically on received messages) |

<Note>
  Do not call this endpoint speculatively — only when you are about to respond. Showing typing dots without ever replying degrades trust.
</Note>

<Note>
  The 24-hour conversation window applies. Typing indicators on messages outside that window will fail.
</Note>

## Related

* [Reactions](/guides/whatsapp/messages/reaction) — acknowledge a message without sending a full reply
* [AI Agents](/guides/ai-agents) — agents that benefit most from typing indicators
