---
title: "Messages"
description: "Send, read, and manage WhatsApp messages — text, buttons, lists, and catalog — with @wazapin/sdk."
---

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

# Messages

Use `wazapin.messages` for text, interactive, and template-style sends, plus read/react and other message actions.

## Send a text message

```ts
import { textMessage } from "@wazapin/sdk";

await wazapin.messages.send(
  textMessage({
channel_id: "wzp_ch_123",
to: "6281234567890",
body: "Your order is confirmed.",
  }),
);
```

## Buttons

```ts
import { buttonsMessage } from "@wazapin/sdk";

await wazapin.messages.send(
  buttonsMessage({
channel_id: "wzp_ch_123",
to: "6281234567890",
body: "Choose an option",
buttons: [
  { id: "buy", title: "Buy" },
  { id: "help", title: "Help" },
],
  }),
);
```

## List message

```ts
import { listMessage } from "@wazapin/sdk";

await wazapin.messages.send(
  listMessage({
channel_id: "wzp_ch_123",
to: "6281234567890",
body: "Pick a product",
button: "View products",
sections: [
  {
    title: "Catalog",
    rows: [{ id: "sku_1", title: "Starter pack" }],
  },
],
  }),
);
```

## Product and catalog messages

```ts
await wazapin.messages.sendCatalog({
  channel_id: "wzp_ch_123",
  to: "6281234567890",
  body: "Browse our catalog",
});

await wazapin.messages.sendSingleProduct({
  channel_id: "wzp_ch_123",
  to: "6281234567890",
  catalog_id: "catalog_123",
  product_retailer_id: "sku_123",
});
```

Use `messages.sendMultiProduct()` when sending multiple products in one message.

## Get a message

```ts
const { data: message } = await wazapin.messages.get("msg_123");

console.log(message.status);
```

## Check delivery status

```ts
const { data: status } = await wazapin.messages.getStatus("msg_123");

console.log(status.status);
```

## Mark as read

```ts
await wazapin.messages.read({
  channel_id: "wzp_ch_123",
  message_id: "wamid.123",
  to: "6281234567890",
});
```

## React to a message

```ts
await wazapin.messages.react({
  channel_id: "wzp_ch_123",
  message_id: "wamid.123",
  to: "6281234567890",
  reaction: "👍",
});
```

## Message actions

The SDK also includes:

| Method | Purpose |
| --- | --- |
| `messages.edit()` | Edit a sent message |
| `messages.delete()` | Delete a message |
| `messages.pin()` | Pin a message |
| `messages.unpin()` | Unpin a message |
| `messages.sendPresence()` | Send typing/recording presence |
| `messages.downloadMedia()` | Download message media |
| `messages.uploadImage()` | Upload an image for message sending |

## Related

- [Templates](/sdk/templates) — approved template notifications
- [Media upload](/sdk/media-upload) — upload assets before sending media

Source: https://docs.wazapin.id/sdk/messages/index.mdx
