# Mark message as read

Acknowledge a contact's WhatsApp message when you have read it or started handling their request. You can also show a typing indicator while preparing a reply.

## Prerequisites

You need an API key with WhatsApp write permission and the Bird message ID (`wam_…`) of a message your workspace received. Use `data.whatsapp_id` from the [`whatsapp.received` webhook](/docs/guides/whatsapp/receiving-whatsapp), or the message's `id` from the [WhatsApp log](/docs/guides/whatsapp/message-log).

Replace the example message ID with the ID of a message your workspace received. Initialize the client for your language using the [TypeScript](/docs/sdks/typescript), [Python](/docs/sdks/python), [Go](/docs/sdks/go), or [PHP](/docs/sdks/php) SDK guide. For CLI examples, [install and authenticate the CLI](/docs/cli#authenticate) with WhatsApp write access. Use the API host for your [workspace region](/docs/api/regions) in cURL requests.

## 1. Mark the received message as read

Call [Mark a message read](/docs/api/reference/send-whatsapp-read-receipt) with the received message ID. WhatsApp also marks earlier messages in the same conversation as read, so choose the message that represents how far you have read.

**TypeScript**

```typescript
const acknowledgement = await bird.whatsapp.markRead("wam_01krdgeqcxet5s7t44vh8rt9mg", {});
console.log(acknowledgement.typing_indicator);
```

Examples: [TypeScript](/docs/guides/whatsapp/mark-message-as-read.ts.md) · [Python](/docs/guides/whatsapp/mark-message-as-read.py.md) · [Go](/docs/guides/whatsapp/mark-message-as-read.go.md) · [PHP](/docs/guides/whatsapp/mark-message-as-read.php.md) · [CLI](/docs/guides/whatsapp/mark-message-as-read.cli.md) · [cURL](/docs/guides/whatsapp/mark-message-as-read.curl.md)

A successful request returns `202` with `typing_indicator: false`. The acknowledgement is accepted for processing; the response does not confirm that the contact has seen it. Read acknowledgements create no billable outbound message.

## 2. Show typing while preparing a reply

To mark the message read and show typing, pass `typing_indicator: true` in the same request:

**TypeScript**

```typescript
await bird.whatsapp.markRead("wam_01krdgeqcxet5s7t44vh8rt9mg", {
  typing_indicator: true,
});
```

Examples: [TypeScript](/docs/guides/whatsapp/mark-message-as-read.ts.md) · [Python](/docs/guides/whatsapp/mark-message-as-read.py.md) · [Go](/docs/guides/whatsapp/mark-message-as-read.go.md) · [PHP](/docs/guides/whatsapp/mark-message-as-read.php.md) · [CLI](/docs/guides/whatsapp/mark-message-as-read.cli.md) · [cURL](/docs/guides/whatsapp/mark-message-as-read.curl.md)

WhatsApp clears the indicator when you send a message or after 25 seconds. Repeating the call is safe. To refresh typing, omit `Idempotency-Key` or use a new key; replaying an earlier request does not refresh the indicator.

## 3. Check the received message

[Retrieve the message](/docs/api/reference/get-whatsapp-message) to inspect `read_at`. After WhatsApp accepts the acknowledgement, the received message can carry this timestamp while keeping its `received` status. There is no separate acknowledgement resource or delivery webhook to track.

## Troubleshooting

- **`404` ([E15071](/docs/api/errors/E15071))**: Check the message ID and workspace. Bird can resolve a message for acknowledgement for 15 days; an older message cannot be marked read through this operation.
- **`422` ([E15074](/docs/api/errors/E15074))**: Use an inbound message your workspace can acknowledge. An outbound message is not an eligible target.
- **`503` ([E15073](/docs/api/errors/E15073))**: Retry after a temporary failure to resolve the message.

## Next steps

- [Send a reply](/docs/guides/whatsapp/sending-whatsapp)
- [React to a received message](/docs/guides/whatsapp/reactions)
- [Receive WhatsApp messages](/docs/guides/whatsapp/receiving-whatsapp)

## Related resources

- [Connecting WhatsApp to Bird: from buying a number to a live channel](/learn/whatsapp/connecting-whatsapp-to-bird) (video)
- [What is the 24-hour customer service window on WhatsApp?](/explained/whatsapp/what-is-the-24-hour-customer-service-window) (answer)
- [WhatsApp message builder](/tools/whatsapp-message-builder) (tool)
- [WhatsApp](/products/whatsapp) (product)

[Get an implementation brief](/learn/workspace?topic=whatsapp)
