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

# Quick Start

> Primeros pasos en Instagram: conectar cuenta (oficial o no oficial) y enviar el primer DM.

<Tip>
  Del **cero al primer DM en cola** en pocos pasos. Elige **oficial (Meta)** o **no oficial**. Las mismas rutas de envío sirven para ambos.
</Tip>

## En pocas palabras

* **Oficial:** login Meta en el panel o enlace compartible; destinatario = **IGSID**; ventana de **24h**
* **No oficial:** usuario y contraseña (o enlace); `acceptInstagramTerms: true`; warm-up en cuenta nueva
* En ambos casos usas la **misma API**; solo cambia cómo conectas la cuenta

¿Dudas sobre cuál elegir? Ve [Modos de conexión](/es/instagram-api/como-funciona/modos-de-conexao).

## Antes de empezar

* Una **clave de API** (`sk_live_...` o `sk_test_...` para sandbox)
* Permisos de instancia y envío en la clave. Ve [Alcances](/es/instagram-api/como-funciona/escopos-api-key)
* En los ejemplos, reemplaza `sk_live_xxxxx` por tu clave

<Note>
  ¿Empezando ahora? Usa `sk_test_...` y comprueba el resultado en la [Bandeja sandbox](/es/guides/sandbox/index).
</Note>

***

<Tabs>
  <Tab title="Conexión oficial">
    ### 1. Conectar la cuenta

    Tres caminos, elige el que encaje con tu integración:

    #### 1A, Por el panel

    1. Instagram → Nueva conexión → **Oficial**
    2. Inicia sesión con Meta (o pega credenciales manuales en el draft)
    3. Cuando el estado quede **activo**, anota el **id de la instancia**

    #### 1B, Por API con enlace para el cliente

    ```http theme={null}
    POST /v1/instagram/instances
    Content-Type: application/json
    Authorization: Bearer sk_live_xxxxx
    ```

    ```json theme={null}
    {
      "name": "Atendimento IG",
      "mode": "OFFICIAL",
      "generateShareableLink": true
    }
    ```

    Respuesta esperada: **200** con instancia **PENDING** y el enlace:

    ```json theme={null}
    {
      "success": true,
      "data": {
        "instance": {
          "id": "clxx123...",
          "name": "Atendimento IG",
          "status": "PENDING",
          "mode": "OFFICIAL"
        },
        "shareableLink": {
          "hostedUrl": "https://api.notifique.dev/w/instance-connect/...?token=...",
          "embedUrl": "https://api.notifique.dev/w/embed/instance-connect/...?token=..."
        }
      }
    }
    ```

    Envía `shareableLink.hostedUrl` al cliente. En la página ve **Continuar con Meta**. Al terminar, la instancia queda **ACTIVE**.

    <Warning>
      Quien tenga el enlace puede conectar o desconectar la instancia. Después del uso, rota el secret si está disponible en la API de connect-page.
    </Warning>

    #### 1C, Por API con credenciales Meta

    **Embedded** (tras Facebook Login en el navegador):

    ```json theme={null}
    {
      "name": "Atendimento IG",
      "mode": "OFFICIAL",
      "metaEmbeddedCode": "CODE_DO_EMBEDDED_SIGNUP"
    }
    ```

    **BYOK** (token e IDs que ya tienes):

    ```json theme={null}
    {
      "name": "Atendimento IG",
      "mode": "OFFICIAL_BYOK",
      "metaAccessToken": "EAAxx...",
      "facebookPageId": "123456789012345",
      "igBusinessAccountId": "17841400000000000",
      "metaAppSecret": "abc123..."
    }
    ```

    ### 2. Cómo obtener el IGSID del destinatario

    En modo **oficial**, el campo `to` usa el **IGSID** (ID scoped de la Page), no `@username`.

    * **Webhook** `instagram.received`: campo `from` en el mensaje entrante
    * **API** `GET /v1/instagram/messages/inbound/{id}` tras el DM del cliente
    * **Panel:** detalle del mensaje recibido

    ### 3. Enviar el primer DM

    ```http theme={null}
    POST /v1/instagram/messages
    Content-Type: application/json
    Authorization: Bearer sk_live_xxxxx
    ```

    ```json theme={null}
    {
      "instanceId": "clxx123...",
      "to": ["17841400000000000"],
      "type": "text",
      "payload": { "message": "Olá! Como posso ajudar?" }
    }
    ```

    Respuesta esperada: **202** con el mensaje en cola:

    ```json theme={null}
    {
      "success": true,
      "data": {
        "messageIds": ["msg_abc..."],
        "status": "QUEUED",
        "count": 1
      }
    }
    ```

    <Warning>
      En oficial, la conversación debe estar en la **ventana de 24h** tras el último mensaje del cliente.
    </Warning>

    ### 4. Después del primer envío

    Configura el webhook Meta en `{tu_base}/webhooks/meta/instagram`, escucha `instagram.received` y el estado de envío. Para hide de comentarios, usa las rutas de comments en la [referencia de la API](/es/instagram-api/api-reference/api-reference).
  </Tab>

  <Tab title="Conexión no oficial">
    ### 1. Conectar la cuenta

    #### 1A, Por el panel

    1. Instagram → Nueva conexión → **No oficial**
    2. Usuario y contraseña (y 2FA si lo pide)
    3. Acepta los términos; espera estado **activo**

    #### 1B, Por API con credenciales

    ```http theme={null}
    POST /v1/instagram/instances
    Content-Type: application/json
    Authorization: Bearer sk_live_xxxxx
    ```

    ```json theme={null}
    {
      "name": "Atendimento IG",
      "mode": "UNOFFICIAL",
      "acceptInstagramTerms": true,
      "auth": {
        "mode": "password",
        "username": "sua_conta",
        "password": "sua_senha"
      }
    }
    ```

    Si Meta pide verificación, envía `verificationCode` en el create o usa `POST /v1/instagram/instances/{id}/challenge/resolve`.

    #### 1C, Por API con enlace compartible

    ```json theme={null}
    {
      "name": "Atendimento IG",
      "mode": "UNOFFICIAL",
      "acceptInstagramTerms": true,
      "generateShareableLink": true
    }
    ```

    Respuesta: `connection.status` = `pending_login` + `shareableLink`. El cliente abre el enlace e introduce usuario/contraseña.

    <Warning>
      Cuenta nueva: lee la [política anti-suspensión](/es/instagram-api/como-funciona/politica-anti-banimento) (warm-up, cooldown).
    </Warning>

    ### 2. Enviar el primer DM

    ```json theme={null}
    {
      "instanceId": "clxx123...",
      "to": ["nome_do_usuario"],
      "type": "text",
      "payload": { "message": "Olá!" }
    }
    ```

    Respuesta esperada: **202** (mismo formato que la pestaña oficial).

    ### 3. Después del primer envío

    Configura [webhooks](/es/instagram-api/como-funciona/eventos-do-webhooks) del workspace. En no oficial puedes **editar** y **unsend** DMs enviados.
  </Tab>
</Tabs>

***

## Todos los tipos de envío

En la [referencia de la API](/es/instagram-api/api-reference/api-reference), abre **Enviar mensaje en Instagram** (`POST /v1/instagram/messages`) y elige el ejemplo en el playground: Texto, Imagen, Vídeo, Audio, Documento, Programado, IGSID oficial o username no oficial.

## Próximos pasos

* [Modos de conexión](/es/instagram-api/como-funciona/modos-de-conexao)
* [Eventos de webhook](/es/instagram-api/como-funciona/eventos-do-webhooks)
* [Política anti-suspensión](/es/instagram-api/como-funciona/politica-anti-banimento)
