# Marcar mensaje como leído

Confirma la lectura del mensaje WhatsApp de un contacto cuando lo hayas leído o hayas empezado a gestionar su solicitud. También puedes mostrar un indicador de escritura mientras preparas una respuesta.

## Requisitos previos

Necesitas una clave API con permiso de escritura WhatsApp y el ID de mensaje Bird (`wam_…`) de un mensaje que tu espacio de trabajo haya recibido. Usa `data.whatsapp_id` del [webhook `whatsapp.received`](/docs/guides/whatsapp/receiving-whatsapp), o el `id` del mensaje desde el [registro WhatsApp](/docs/guides/whatsapp/message-log).

Reemplaza el ID de mensaje de ejemplo con el ID de un mensaje que tu espacio de trabajo haya recibido. Inicializa el cliente para tu lenguaje usando la guía SDK de [TypeScript](/docs/sdks/typescript), [Python](/docs/sdks/python), [Go](/docs/sdks/go) o [PHP](/docs/sdks/php). Para los ejemplos de CLI, [instala y autentícate en la CLI](/docs/cli#authenticate) con acceso de escritura WhatsApp. Usa el host API de tu [región del espacio de trabajo](/docs/api/regions) en las solicitudes cURL.

## 1. Marcar el mensaje recibido como leído

Llama a [Marcar un mensaje como leído](/docs/api/reference/send-whatsapp-read-receipt) con el ID del mensaje recibido. WhatsApp también marca como leídos los mensajes anteriores en la misma conversación, así que elige el mensaje que represente hasta dónde has leído.

**TypeScript**

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

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

Una solicitud exitosa devuelve `202` con `typing_indicator: false`. La confirmación se acepta para procesamiento; la respuesta no confirma que el contacto la haya visto. Las confirmaciones de lectura no generan ningún mensaje saliente facturable.

## 2. Mostrar escritura mientras preparas una respuesta

Para marcar el mensaje como leído y mostrar escritura, pasa `typing_indicator: true` en la misma solicitud:

**TypeScript**

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

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

WhatsApp desactiva el indicador cuando envías un mensaje o después de 25 segundos. Repetir la llamada es seguro. Para refrescar la escritura, omite `Idempotency-Key` o usa una clave nueva; reproducir una solicitud anterior no refresca el indicador.

## 3. Comprobar el mensaje recibido

[Recupera el mensaje](/docs/api/reference/get-whatsapp-message) para inspeccionar `read_at`. Después de que WhatsApp acepte la confirmación, el mensaje recibido puede incluir esta marca de tiempo y conservar su estado `received`. No existe un recurso de confirmación separado ni un webhook de entrega para rastrear.

## Solución de problemas

- **`404` ([E15071](/docs/api/errors/E15071))**: Verifica el ID del mensaje y el espacio de trabajo. Bird puede resolver un mensaje para confirmación durante 15 días; un mensaje más antiguo no se puede marcar como leído con esta operación.
- **`422` ([E15074](/docs/api/errors/E15074))**: Usa un mensaje entrante que tu espacio de trabajo pueda confirmar. Un mensaje saliente no es un objetivo válido.
- **`503` ([E15073](/docs/api/errors/E15073))**: Reintenta después de un fallo temporal al resolver el mensaje.

## Próximos pasos

- [Enviar una respuesta](/docs/guides/whatsapp/sending-whatsapp)
- [Reaccionar a un mensaje recibido](/docs/guides/whatsapp/reactions)
- [Recibir mensajes WhatsApp](/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)
