---
title: "Media upload"
description: "Upload media assets and send media messages 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.

# Media upload

Upload images, documents, and other files once, then reference them when you send media messages.

## Upload a media asset

```ts
const file = new Blob([buffer], { type: "image/png" });

const { data: asset } = await wazapin.media.upload(file, "receipt.png");

console.log(asset.asset_id);
```

:::tip
For error handling in production, see [Utilities → Error handling](/sdk/utilities#error-handling).
:::

## List media assets

```ts
const { data } = await wazapin.media.list({ limit: 20 });
```

## Delete an asset

```ts
await wazapin.media.delete("asset_123");
```

## Send media messages

Use message builders for image, video, audio, and document messages.

```ts
import { documentMessage, imageMessage } from "@wazapin/sdk";

await wazapin.messages.send(
  imageMessage({
channel_id: "wzp_ch_123",
to: "6281234567890",
link: "https://cdn.example.com/image.png",
caption: "Here is the image.",
  }),
);

await wazapin.messages.send(
  documentMessage({
channel_id: "wzp_ch_123",
to: "6281234567890",
link: "https://cdn.example.com/invoice.pdf",
filename: "invoice.pdf",
  }),
);
```

Source: https://docs.wazapin.id/sdk/media-upload/index.mdx
