# Pesan dokumen WhatsApp

Pesan dokumen membawa URL publik yang diambil WhatsApp pada saat pengiriman, dengan caption opsional dan nama file opsional. Ini adalah jenis media terbesar, dan satu-satunya yang membawa caption sekaligus nama file.

## Mengirim dokumen

Atur `document.url`:

**TypeScript**

```typescript
const msg = await bird.whatsapp.send({
  to: "+16505551234",
  from: "+13124495648",
  document: { url: "https://cdn.example.com/invoices/a1b2c3.pdf" },
});
console.log(msg.id, msg.status);
```

Examples: [TypeScript](/id-id/dokumentasi/guides/whatsapp/message-types/documents.ts.md) · [Python](/id-id/dokumentasi/guides/whatsapp/message-types/documents.py.md) · [Go](/id-id/dokumentasi/guides/whatsapp/message-types/documents.go.md) · [PHP](/id-id/dokumentasi/guides/whatsapp/message-types/documents.php.md) · [CLI](/id-id/dokumentasi/guides/whatsapp/message-types/documents.cli.md) · [MCP](/id-id/dokumentasi/guides/whatsapp/message-types/documents.mcp.md) · [cURL](/id-id/dokumentasi/guides/whatsapp/message-types/documents.curl.md)

Bentuk lengkapnya menambahkan `caption` dan `filename`:

```json
{
  "to": "+16505551234",
  "from": "+13124495648",
  "document": {
    "url": "https://cdn.example.com/invoices/a1b2c3.pdf",
    "caption": "Your invoice for order A1B2C3",
    "filename": "invoice-a1b2c3.pdf"
  }
}
```

`from` wajib ada di setiap pesan layanan: nomor yang dimiliki workspace Anda, bukan nomor yang dikelola Bird.

## Batas

| Field       | Batas                                                                                                                            | Diterapkan oleh                                                                                                                    |
| ----------- | -------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| Ukuran file | 100 MB                                                                                                                           | WhatsApp saja, saat fetch (async)                                                                                                  |
| Tipe file   | PDF, Word, Excel, PowerPoint, atau plain text ditampilkan dengan baik di klien WhatsApp; tipe lain dikirim tetapi tidak didukung | WhatsApp saja, saat fetch (async)                                                                                                  |
| `caption`   | hingga 1024 karakter                                                                                                             | Bird, saat accept (`422`)                                                                                                          |
| `filename`  | 1 hingga 100 karakter                                                                                                            | Bird, saat accept (`422`); batas ini ditentukan oleh Bird sendiri, karena WhatsApp tidak mendokumentasikan batas panjang nama file |
| `url`       | absolut, `https`, memiliki host, tanpa spasi mentah                                                                              | Bird, saat accept (`422`)                                                                                                          |

Bird memeriksa bentuk URL serta panjang caption dan nama file sebelum apa pun dimasukkan ke antrean. Ukuran atau tipe file sebenarnya tidak diperiksa; hanya fetch WhatsApp sendiri pada saat pengiriman yang dapat memeriksanya. Lihat [mengirim media melalui URL](/docs/guides/whatsapp/message-types#sending-media-by-url) dan [ketika media gagal](/docs/guides/whatsapp/message-types#when-media-fails) di hub.

## Membaca dokumen masuk

Dokumen masuk membawa objek `document` yang sama, ditambah `id` dan `mime_type` yang dipelajari Bird dengan mengambil file tersebut. Keduanya tidak ada pada pembacaan ulang pesan keluar, karena Bird tidak pernah mengambil file yang dikirimnya, dan `filename` pada dokumen masuk adalah apa pun yang diberikan perangkat kontak. Lihat [Menerima dokumen WhatsApp](/docs/guides/whatsapp/receiving-whatsapp/documents) untuk pembacaan masuk secara lengkap, payload `whatsapp.received`, dan hal-hal yang perlu diperhatikan.

## Batas dan mode kegagalan

- **Jendela layanan pelanggan harus terbuka.** Dokumen adalah pesan layanan, hanya dapat dikirim di dalam jendela yang terbuka; lihat [jendela layanan pelanggan](/docs/guides/whatsapp/message-types#the-customer-service-window) di hub.
- **Bird menolak `http`; WhatsApp sendiri yang akan mengambilnya.** Lihat [mengirim media melalui URL](/docs/guides/whatsapp/message-types#sending-media-by-url) di hub untuk pemeriksaan bentuk lengkapnya.
- **Fetch yang ditolak tetap dikenakan biaya, dan ini adalah jenis media yang paling sering mengalaminya.** Dengan batas 100 MB, dokumen adalah hal terbesar yang dapat Anda kirim, dan Bird tidak memeriksa byte sebenarnya saat accept. Lihat [ketika media gagal](/docs/guides/whatsapp/message-types#when-media-fails) di hub untuk `media_rejected` dan fakta biaya-saat-gagal. Teks penolakan dokumen dari WhatsApp belum diukur secara independen seperti halnya gambar, jadi perlakukan pemetaan ini sebagai inferensi berdasarkan simetri, bukan konfirmasi per penyebab.
- **Mengabaikan `filename` bukan berarti penerima tidak melihat nama.** WhatsApp menurunkan nama dari path URL, yang bisa berupa hash tidak jelas atau slug alih-alih sesuatu yang mudah dibaca. Atur `filename` secara eksplisit untuk mengontrol apa yang benar-benar ditampilkan.
- **Batas 100 karakter `filename` adalah pilihan Bird sendiri, bukan batas WhatsApp.** WhatsApp tidak mendokumentasikan batas panjang nama file sama sekali.
- **WhatsApp menyimpan cache URL yang diambil selama sekitar 10 menit.** Mengirim ulang URL yang sama dalam jendela tersebut akan menyajikan hasil fetch pertama; ubah URL untuk memaksa pengambilan baru.

## Langkah selanjutnya

- [Pesan layanan WhatsApp](/docs/guides/whatsapp/message-types): jendela layanan pelanggan dan model yang digunakan bersama oleh setiap pesan layanan
- [Gambar](/docs/guides/whatsapp/message-types/images): untuk foto atau grafik alih-alih file
- [Template](/docs/guides/whatsapp/templates): untuk pesan yang dapat Anda kirim setelah jendela ditutup
- [Mengirim pesan WhatsApp](/docs/guides/whatsapp/sending-whatsapp): envelope permintaan, model `202`, dan percobaan ulang yang aman

## 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)
