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

# Connection modes

> Understand the difference between official (Meta) and unofficial Instagram: when to use each, risks, and what each mode allows.

<Tip>
  Picking a mode is like choosing **highway or shortcut**: official follows Meta's rules with more predictability; unofficial is faster to try, but with higher restriction risk.
</Tip>

## Official or unofficial?

Each Instagram connection in Notifique uses **one** mode. You can't switch on the same instance: if you need to change, **create a new one**.

### When to use official

* Live product serving real customers
* You need comment **hide** and reliable webhook events
* Instagram Professional account already linked to a Facebook Page

### When to use unofficial

* Validate an idea, build a prototype, or integrate for the first time
* You need **edit** / **unsend** DM (Meta API limitation on official)
* You're not ready for Meta app setup yet

<Warning>
  **Unofficial** connection does not replace official in production. Use it to learn and test; for real customers at scale, migrate to **official**.
</Warning>

In both modes you need recipient **opt-in** and must respect Meta policies and Notifique [Terms](https://app.notifique.dev/terms).

## Official: Embedded vs BYOK

**OFFICIAL (Embedded):** Facebook Login or shareable link. Best for panel onboarding or remote client. Reconnect **only** with Meta.

**OFFICIAL\_BYOK:** you paste Page token, Page ID, IG Business Account ID, and App Secret. Best for teams that already have Meta credentials. Reconnect **only** with manual token.

You can't reconnect with the "wrong" method: if it started Embedded, reconnect with Meta; if it started BYOK, token only.

## Comparison: what each mode does

| Feature                                  |    Official   |  Unofficial |
| ---------------------------------------- | :-----------: | :---------: |
| Text DM                                  |       ✅       |      ✅      |
| Media DM (URL)                           |       ✅       |      ✅      |
| Receive DMs                              |  ✅ (webhook)  | ✅ (polling) |
| Edit sent DM                             |       ❌       |      ✅      |
| Unsend (delete for everyone)             |       ❌       |      ✅      |
| Reply to comments                        |       ✅       |      ✅      |
| Hide comment                             |       ✅       |      ❌      |
| 24h window after customer's last message |       ✅       |      ❌      |
| Recipient by `@username`                 | ❌ (use IGSID) |      ✅      |
| Shareable link for the client to connect |       ✅       |      ✅      |
| Meta login in panel / public page        |       ✅       |      ❌      |
| Username and password                    |       ❌       |      ✅      |
| Warm-up / anti-suspension cooldown       |       ❌       |      ✅      |
| Test in sandbox                          |       ✅       |      ✅      |

<Note>
  You can't convert an instance from one mode to another. Create another instance in the right mode.
</Note>

<Info>
  API-only integration? Use `mode: "OFFICIAL"` with `generateShareableLink: true` on `POST /v1/instagram/instances` to get `shareableLink.hostedUrl`. The client opens the link and completes Meta login (or enters password in unofficial mode). Details in [Quick Start](/en/instagram-api/como-funciona/quick-start).
</Info>

## Summary: which to pick?

* **Production with real customers** → **Official**
* **Comment hide + Meta webhook** → **Official**
* **MVP, test, or integration in development** → **Unofficial**
* **Edit / unsend DM** → **Unofficial**
* **You already have Meta token and IDs** → **OFFICIAL\_BYOK**

## Next steps

* [Introduction](/en/instagram-api/como-funciona/introducao)
* [Quick Start](/en/instagram-api/como-funciona/quick-start)
* [Anti-suspension policy](/en/instagram-api/como-funciona/politica-anti-banimento)
* [Webhook events](/en/instagram-api/como-funciona/eventos-do-webhooks)
