> For the complete documentation index, see [llms.txt](https://docs.dibales.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.dibales.ai/n8n/instagram-nodes.md).

# Instagram Nodes

Dua node ini menghubungkan N8N langsung ke akun Instagram yang sudah terhubung di dibales.ai. **Instagram Trigger** menangkap event masuk sebagai pemicu workflow, sementara **Instagram** (action node) mengirim pesan dan mengelola komentar.

***

**Pastikan kamu sudah:**

* Menginstall package `n8n-nodes-dibales-ai` di instance N8N kamu
* Membuat credential **dibales.ai account** di N8N menggunakan API Key dari dashboard dibales.ai
* Menghubungkan akun Instagram ke dashboard dibales.ai [Integrasi Akun Instagram](/instagram/integrasi-akun-instagram.md)

***

## Node 1: Instagram Trigger

<figure><img src="/files/FYpKYiC9cMal2wpoFjdL" alt=""><figcaption></figcaption></figure>

Memulai workflow setiap kali ada event masuk dari akun Instagram yang terhubung.

#### Parameter

| Parameter          | Keterangan                                                                                                                                                                                              |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Webhook URLs**   | URL endpoint yang didaftarkan ke dashboard dibales.ai. Tersedia dua mode: **Test URL** untuk pengujian saat workflow belum aktif, dan **Production URL** untuk workflow yang sudah aktif dan dipublish. |
| **Webhook Secret** | String rahasia yang disalin dari halaman Webhooks di dashboard dibales.ai. Digunakan untuk memverifikasi bahwa kiriman event benar-benar dari sistem dibales.ai.                                        |

#### Setup

1. **Tambahkan node Instagram Trigger ke workflow kamu** Cari `dibales.ai - Instagram` di panel node N8N, pilih sebagai trigger.
2. **Salin Webhook URL** Buka node, expand bagian **Webhook URLs**, klik tab **Test URL & Production URL**, lalu *copy* URL-nya.
3. **Buka dashboard dibales.ai,** pilih agent yang ingin dihubungkan → halaman [**Webhooks**](https://cs.pake.ai/agent/integrations/webhooks) → klik **Tambah Webhook**.
4. **Paste** url webhook dari N8N untuk **Test URL**, dan ulangi dengan klik Tambah Webhook untuk **Production URL**

<figure><img src="/files/xpm5yDFU4ubMcmOi4sX8" alt=""><figcaption></figcaption></figure>

**OPTIONAL**

1. **Salin Webhook Secret** Setelah webhook dibuat, salin nilai **Secret** yang tampil di dashboard.

<figure><img src="/files/prB4HdQxAEaQO8tOGfNn" alt=""><figcaption></figcaption></figure>

2. **Paste Secret ke node** Kembali ke N8N, buka node Instagram Trigger, paste secret ke field **Webhook Secret**, lalu simpan workflow.

<figure><img src="/files/vk8yxJr6Gq09K10hJbH3" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Bagian ini berfungsi untuk mengamankan URL webhook agar tidak bisa diakses tanpa secret key tersebut
{% endhint %}

{% hint style="warning" %}
Pastikan secret key sesuai dengan webhook url yang digunakan
{% endhint %}

✅ **Selesai!** Workflow akan aktif menerima event dari Instagram. Setiap event yang masuk akan muncul sebagai satu execution di tab **Executions**.

***

#### Output Ports

Node ini memiliki **11 output port**. Setiap port aktif untuk tipe event yang berbeda, sehingga kamu bisa membuat routing langsung dari satu trigger ke flow yang berbeda.

| Port                        | Event                                                            | Keterangan                                                                          |
| --------------------------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| **0. Message Received**     | DM baru masuk dari kontak                                        | Teks, gambar, video, audio, file, atau share konten yang dikirim ke akun kamu       |
| **1. Message Echo**         | Pesan yang dikirim dari akun kamu sendiri                        | Berguna untuk logging atau monitoring pesan keluar                                  |
| **2. Reaction**             | Kontak menambahkan atau menghapus reaksi emoji pada pesan        | Field `raw.reaction.action` berisi `react` atau `unreact`                           |
| **3. Postback**             | Kontak menekan tombol pada button template atau generic template | Field `raw.postback.payload` berisi payload tombol yang ditekan                     |
| **4. Quick Reply**          | Kontak menekan opsi quick reply yang kamu kirim                  | Field `raw.message.quick_reply.payload` berisi payload opsi yang dipilih            |
| **5. Read Receipt**         | Pesan yang kamu kirim sudah dibaca oleh kontak                   |                                                                                     |
| **6. Story Reply**          | Kontak membalas story kamu via DM                                | Field `raw.message.reply_to.story.id` berisi ID story yang dibalas                  |
| **7. Story Mention**        | Kontak mention akun kamu di story-nya                            | URL story tersedia di `raw.message.attachments[0].payload.url`                      |
| **8. Comment Created**      | Komentar baru di post atau reel kamu                             | Termasuk reply komentar — cek `raw.parent_id` untuk bedakan komentar utama vs reply |
| **9. Live Comment Created** | Komentar baru di IG Live kamu                                    |                                                                                     |
| **10. Other**               | Event lain yang tidak masuk kategori di atas                     | Bisa dipakai untuk debugging atau menangkap event baru                              |

> 💡 Sambungkan hanya port yang kamu butuhkan. Port yang tidak terhubung tidak akan mempengaruhi performa workflow.

#### Struktur Data Trigger

Payload Instagram menggunakan key `raw`. Gunakan ekspresi berikut untuk mengakses field dari event di node selanjutnya:

**Field tersedia di semua event:**

| Field           | Ekspresi N8N              |
| --------------- | ------------------------- |
| Tipe event      | `{{ $json.event_type }}`  |
| Timestamp event | `{{ $json.occurred_at }}` |

**Untuk event DM (`Message Received` dan `Message Echo`):**

| Field          | Ekspresi N8N                   |
| -------------- | ------------------------------ |
| ID pengirim    | `{{ $json.raw.sender.id }}`    |
| ID penerima    | `{{ $json.raw.recipient.id }}` |
| Isi teks       | `{{ $json.raw.message.text }}` |
| ID pesan (mid) | `{{ $json.raw.message.mid }}`  |

**Untuk event komentar (`Comment Created`):**

| Field                          | Ekspresi N8N                    |
| ------------------------------ | ------------------------------- |
| ID komentar                    | `{{ $json.raw.id }}`            |
| Username komentator            | `{{ $json.raw.from.username }}` |
| Isi komentar                   | `{{ $json.raw.text }}`          |
| ID media (post/reel)           | `{{ $json.raw.media.id }}`      |
| ID komentar induk (jika reply) | `{{ $json.raw.parent_id }}`     |

> 💡 Untuk balas DM masuk, gunakan `{{ $json.raw.sender.id }}` sebagai **Recipient Platform ID** di node Instagram Send.

***

## Node 2: Instagram

Action node untuk mengirim pesan dan mengelola komentar melalui akun Instagram di dibales.ai.

### Credential

Di field **Credential**, pilih credential dengan tipe **dibales.ai account**. Jika belum ada, buat credential baru dan isi dengan API Key yang tersedia di dashboard dibales.ai.

***

### Resource: Message

**Operation: Send**

Kirim pesan ke kontak via DM Instagram.

**Parameter utama yang selalu ada:**

| Parameter                 | Keterangan                                                                          |
| ------------------------- | ----------------------------------------------------------------------------------- |
| **Recipient Platform ID** | ID Instagram pengguna tujuan. Ambil dari trigger event: `{{ $json.raw.sender.id }}` |
| **Type**                  | Pilih tipe pesan yang akan dikirim (lihat daftar di bawah).                         |

***

**Type: Text**

| Parameter         | Keterangan                                                                                                                                                                                                                   |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Text**          | Isi teks pesan.                                                                                                                                                                                                              |
| **Quick Replies** | (Opsional) Tambahkan opsi pilihan cepat yang muncul di bawah pesan. Klik **Add Quick Reply**, isi **Title** (label tombol) dan **Payload** (string yang dikirim balik saat opsi dipilih). Maksimal 13 quick reply per pesan. |

***

**Type: Button Template**

| Parameter   | Keterangan                                                                                                                                           |
| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Text**    | Teks utama pesan yang tampil di atas tombol.                                                                                                         |
| **Buttons** | Daftar tombol. Klik **Add Button**, isi **Title** (label tombol) dan **Payload** (string yang dikirim balik saat tombol ditekan). Maksimal 3 tombol. |

***

**Type: Image / Video / Audio / File**

| Parameter | Keterangan                                                                           |
| --------- | ------------------------------------------------------------------------------------ |
| **URL**   | URL publik dari file media yang akan dikirim. File harus bisa diakses secara publik. |

***

**Type: Generic Template (Carousel)**

Kirim pesan dalam format kartu yang bisa digeser (carousel). Setiap kartu bisa berisi gambar, judul, subjudul, dan tombol.

| Parameter     | Keterangan                                                                                |
| ------------- | ----------------------------------------------------------------------------------------- |
| **Elements**  | Daftar kartu. Klik **Add Element** untuk menambah kartu baru.                             |
| **Image URL** | URL gambar untuk kartu (per element).                                                     |
| **Title**     | Judul kartu (per element).                                                                |
| **Subtitle**  | (Opsional) Teks deskripsi di bawah judul (per element).                                   |
| **Buttons**   | (Opsional) Tombol di bawah kartu. Isi **Title** dan **Payload** per tombol (per element). |

***

**Operation: React**

Tambahkan reaksi emoji ke pesan yang sudah terkirim.

| Parameter                 | Keterangan                                                                                                   |
| ------------------------- | ------------------------------------------------------------------------------------------------------------ |
| **Platform Message ID**   | ID pesan di Instagram yang akan diberi reaksi. Ambil dari output send node sebelumnya: `platform_message_id` |
| **Recipient Platform ID** | ID kontak penerima                                                                                           |
| **Reaction**              | Pilih emoji reaksi dari dropdown                                                                             |

***

### Resource: Comment

Operasi untuk mengelola komentar di post dan reel Instagram.

| Operation  | Fungsi                                      | Parameter Utama                                             |
| ---------- | ------------------------------------------- | ----------------------------------------------------------- |
| **Reply**  | Balas komentar di post/reel                 | `Comment ID`: ID komentar yang dibalas, `Text`: isi balasan |
| **Hide**   | Sembunyikan komentar                        | `Comment ID`: ID komentar yang akan disembunyikan           |
| **Unhide** | Tampilkan kembali komentar yang tersembunyi | `Comment ID`: ID komentar yang akan ditampilkan             |
| **Delete** | Hapus komentar                              | `Comment ID`: ID komentar yang akan dihapus                 |

> 💡 `Comment ID` bisa diambil langsung dari output port **Comment Created**: `{{ $json.raw.id }}`

***

#### Output Data

Semua operation di **Resource: Message > Send** mengembalikan output dengan struktur yang konsisten:

| Field                 | Tipe              | Keterangan                                                    |
| --------------------- | ----------------- | ------------------------------------------------------------- |
| `message_id`          | String            | ID pesan di sistem dibales.ai                                 |
| `platform_message_id` | String            | ID pesan asli di Instagram. Gunakan ini untuk operation React |
| `sent_at`             | String (ISO 8601) | Timestamp saat pesan terkirim                                 |

Akses field ini di node berikutnya dengan ekspresi: `{{ $json.message_id }}`, `{{ $json.platform_message_id }}`, dst.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.dibales.ai/n8n/instagram-nodes.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
