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

# Crear una comunidad

> Crea una nueva comunidad en WhatsApp. Una comunidad es una estructura que permite agrupar múltiples grupos relacionados bajo una única administración. 

La comunidad creada inicialmente tendrá solo el grupo principal (announcements), y se pueden vincular grupos adicionales posteriormente usando el endpoint `/community/updategroups`.

**Observaciones importantes:**
- El número que crea la comunidad se convierte automáticamente en el administrador
- La comunidad tendrá un grupo principal de anuncios creado automáticamente




## OpenAPI

````yaml /openapi-es.json post /community/create
openapi: 3.1.0
info:
  title: WppFy -  WhatsApp API
  version: 1.0.0
  description: >
    API para la gestión de instancias de WhatsApp y comunicaciones.


    ## Recomendación Importante: WhatsApp Business

    **Se RECOMIENDA ENCARECIDAMENTE usar cuentas de WhatsApp Business** en lugar
    de WhatsApp normal para la integración; WhatsApp normal puede presentar
    inconsistencias, desconexiones, limitaciones e inestabilidad durante el uso
    con nuestra API.


    ## Autenticación

    - Los endpoints regulares requieren un header 'token' con el token de la
    instancia


    ## Estados de la Instancia

    Las instancias pueden estar en los siguientes estados:

    - `disconnected`: Desconectado de WhatsApp

    - `connecting`: En proceso de conexión

    - `connected`: Conectado y autenticado con éxito
servers:
  - url: https://api.wppfy.com
security:
  - token: []
tags:
  - name: Instancia
    description: >
      Operaciones relacionadas con el ciclo de vida de una instancia, como
      conectar,

      desconectar y verificar el estado.
  - name: Proxy
    description: >
      WppFy opera con un proxy interno por defecto.

      Puede mantener este valor predeterminado, configurar un proxy propio
      mediante `proxy_url` o usar su celular Android como proxy instalando la
      app en https://github.com/WppFy/silver_proxy_apk (APK directo:
      https://github.com/WppFy/silver_proxy_apk/raw/refs/heads/main/silver_proxy.apk).

      Si no se envía nada, se sigue usando el proxy interno. Las IPs son
      brasileñas; para clientes internacionales, considere un proxy de la región
      del cliente.
  - name: Perfil
    description: >
      Operaciones relacionadas con el perfil de la instancia de WhatsApp, como
      cambiar

      el nombre y la imagen de perfil.
  - name: Business
    description: >
      ⚠️ **EXPERIMENTAL** - Endpoints aún no probados por completo.


      Operaciones relacionadas con el perfil comercial de WhatsApp Business.

      Permite consultar y actualizar datos del perfil comercial como
      descripción,

      dirección, email, categorías y gestionar el catálogo de productos.


      **Requisitos:**

      - La cuenta conectada actualmente debe ser una cuenta **WhatsApp
      Business**

      - Las cuentas personales de WhatsApp no tienen perfil comercial


      **Nota:** Estos endpoints pueden no funcionar como se espera.

      Reporte los problemas encontrados.
  - name: Llamadas
    description: |
      Operaciones relacionadas con llamadas por WhatsApp.
      Permite realizar y rechazar llamadas de forma programática.
  - name: Enviar Mensaje
    description: >
      Endpoints para el envío de mensajes de WhatsApp con diferentes tipos de
      contenido.


      ## Campos Opcionales Comunes


      Todos los endpoints de envío de mensajes soportan los siguientes campos
      opcionales:


      - **`delay`** *(integer)*: Retraso en milisegundos antes del envío
        - Durante el retraso aparecerá "Escribiendo..." o "Grabando audio..." según el tipo
        - Ejemplo: `5000` (5 segundos)

      - **`readchat`** *(boolean)*: Marcar el chat como leído después del envío
        - Quita el contador de mensajes no leídos del chat
        - Ejemplo: `true`

      - **`readmessages`** *(boolean)*: Marcar los últimos mensajes recibidos
      como leídos
        - Marca los últimos 10 mensajes **recibidos** (no enviados por usted) como leídos
        - Útil para confirmar la lectura de mensajes pendientes antes de responder
        - A diferencia de `readchat`, que solo quita el contador de no leídos
        - Ejemplo: `true`

      - **`replyid`** *(string)*: ID del mensaje a responder
        - Crea una respuesta vinculada al mensaje original
        - El soporte varía según el tipo de mensaje
        - Ejemplo: `"3A12345678901234567890123456789012"`

      - **`mentions`** *(string)*: Números a mencionar (solo para envíos en
      grupos)
        - Números específicos: `"5511999999999,5511888888888"`
        - Mencionar a todos: `"all"`

      - **`forward`** *(boolean)*: Marca el mensaje como reenviado en WhatsApp
        - Agrega el indicador "Reenviado" al mensaje
        - Ejemplo: `true`

      - **`track_source`** *(string)*: Origen del rastreo del mensaje
        - Identifica el sistema o la fuente que está enviando el mensaje
        - Útil para integraciones (ej.: "chatwoot", "crm", "chatbot")
        - Ejemplo: `"chatwoot"`

      - **`track_id`** *(string)*: ID para el rastreo del mensaje
        - Identificador libre para dar seguimiento al mensaje en sistemas externos
        - Permite correlacionar mensajes entre diferentes plataformas
        - **Nota**: El sistema acepta valores duplicados; no hay validación de unicidad
        - Use el mismo ID en varios mensajes si tiene sentido para su integración
        - Ejemplo: `"msg_123456789"`

      ### Envío a Grupos

      - **`number`** *(string)*: Para enviar un mensaje a un grupo, use el ID
      del grupo que termina en `@g.us`
        - Ejemplo: `"120363012345678901@g.us"`
        - **Cómo obtener el ID del grupo:**
          - Use el `chatid` del webhook recibido cuando alguien envía un mensaje en el grupo
          - Use el endpoint `GET /group/list` para listar todos los grupos y sus IDs

      ## Placeholders Disponibles


      Todos los endpoints de envío de mensajes soportan placeholders dinámicos
      para personalización automática:


      ### Campos de Nombre

      - **`{{name}}`**: Nombre consolidado del chat, usando la primera opción
      disponible:
        1. Nombre del lead (`lead_name`)
        2. Nombre completo del lead (`lead_fullName`)
        3. Nombre del contacto en WhatsApp (`wa_contactName`)
        4. Nombre del perfil de WhatsApp (`wa_name`)

      - **`{{first_name}}`**: Primera palabra válida del nombre consolidado
      (mínimo 2 caracteres)


      ### Campos de WhatsApp

      - **`{{wa_name}}`**: Nombre del perfil de WhatsApp

      - **`{{wa_contactName}}`**: Nombre del contacto tal como está guardado en
      WhatsApp


      ### Campos del Lead

      - **`{{lead_name}}`**: Nombre del lead

      - **`{{lead_fullName}}`**: Nombre completo del lead

      - **`{{lead_personalid}}`**: ID personal (CPF, CNPJ, etc)

      - **`{{lead_email}}`**: Email del lead

      - **`{{lead_status}}`**: Estado actual del lead

      - **`{{lead_notes}}`**: Anotaciones del lead

      - **`{{lead_assignedAttendant_id}}`**: ID del agente asignado


      ### Campos Personalizados

      Los campos agregados mediante custom fields son accesibles usando
      `{{lead_field01}}` a `{{lead_field20}}` o usando `{{nomedocampo}}`
      definido en `/instance/updateFieldsMap`.


      ### Ejemplo de Uso

      ```

      ¡Hola {{name}}! Vi que usted trabaja en {{company}}.

      ¿Su email {{lead_email}} es correcto?

      ```


      **💡 Consejo**: Use `/chat/find` para buscar los datos del chat y ver los
      campos disponibles antes de enviar mensajes con placeholders.
  - name: Mensaje Async
    description: >
      Controles operativos de la cola interna de envío asíncrono usada cuando un
      endpoint de envío recibe `async=true`.


      Esta sección sirve para:

      - consultar el estado actual de la cola async

      - configurar el delay entre mensajes enviados con `async=true`

      - limpiar el backlog pendiente y cancelar mensajes aún no concluidos


      Alcance:

      - cubre solo la cola interna de mensajes directos async

      - no modifica mensajes ya enviados correctamente
  - name: Acciones en el mensaje y Búsqueda
  - name: Chats
  - name: Contactos
  - name: Bloqueos
  - name: Etiquetas
  - name: Grupos y Comunidades
  - name: Newsletters y Canales
    description: >
      Operaciones para la lectura y el seguimiento de canales de WhatsApp
      (newsletters).


      Casos de uso principales:

      - listar posts ya publicados en un canal

      - editar posts recientes de un canal

      - eliminar posts recientes de un canal

      - consultar views y reacciones de los posts

      - integrar canales sin necesidad de persistir los mensajes localmente


      Observaciones:

      - `/newsletter/messages` devuelve el contenido de los posts

      - `/newsletter/messages/edit` edita el contenido de posts recientes

      - `/newsletter/messages/delete` elimina posts recientes

      - las views (`viewsCount`) y reactions (`reactionCounts`) vienen en cada
      post de `/newsletter/messages`, no por evento de webhook

      - `/newsletter/updates` está obsoleta: WhatsApp no responde y la API
      devuelve 504

      - los newsletters usan rutas propias y no deben usar `/message/edit` ni
      `/message/delete`
  - name: Respuestas Rápidas
    description: >
      Gestión de respuestas rápidas para agilizar la atención.


      **⚠️ Importante**: Este recurso solo es útil si utiliza un sistema
      frontend/interfaz

      personalizada para registrar y utilizar las respuestas. La API solo
      almacena las respuestas, 

      pero no las aplica automáticamente.


      ### Cómo funciona:

      - **Crear**: Registre respuestas predefinidas con títulos y contenido

      - **Listar**: Recupere todas las respuestas registradas para mostrarlas en
      su interfaz

      - **Usar**: Su sistema frontend puede usar estas respuestas para agilizar
      la escritura


      ### Casos de uso:

      - Interfaces web personalizadas de atención

      - Apps móviles con sugerencias de respuesta

      - Sistemas CRM con plantillas de mensaje

      - Herramientas de productividad para agentes


      **No es un chatbot**: Para respuestas automáticas, use los recursos de
      Chatbot.
  - name: CRM
    description: >
      Sistema completo de gestión de relaciones con clientes integrado a la API.


      **💾 Almacenamiento interno**: Todos los datos de los leads se guardan
      directamente en la API,

      eliminando la necesidad de bases de datos externas. Su aplicación puede
      enfocarse solo

      en la interfaz y la lógica de negocio.


      ### Recursos disponibles:

      - **📋 20+ campos personalizables**: Nombre, teléfono, email, empresa,
      observaciones, etc.

      - **🏷️ Sistema de etiquetas**: Organice y categorice sus contactos

      - **🔍 Búsqueda avanzada**: Filtre por cualquier campo o etiqueta

      - **📊 Historial completo**: Todas las interacciones se registran
      automáticamente


      ### 🎯 Placeholders en mensajes:

      Use variables dinámicas en los mensajes para la personalización
      automática:


      ```

      ¡Hola {{nombre}}! Vi que trabaja en {{empresa}}.

      ¿Su email {{email}} es correcto?

      Observaciones: {{observaciones}}

      ```


      ### Flujo típico:

      1. **Captura**: Los leads llegan vía WhatsApp o formularios

      2. **Enriquecimiento**: Agregue datos usando `/chat/editLead`

      3. **Segmentación**: Organice con etiquetas

      4. **Comunicación**: Envíe mensajes personalizados con placeholders

      5. **Seguimiento**: El historial se guarda automáticamente


      **Ideal para**: Ventas, marketing, atención, calificación de leads
  - name: Integración con Chatwoot
    description: >
      **🚧 INTEGRACIÓN BETA - Sistema de integración con Chatwoot para atención
      unificada**


      **⚠️ AVISO**: Esta integración está en fase BETA. Úsela bajo su propio
      riesgo. Recomendamos realizar pruebas en un entorno no productivo antes de
      usarla en producción.


      Esta categoría contiene recursos para configurar y gestionar la
      integración con Chatwoot, una plataforma de atención al cliente
      open-source. La integración permite centralizar las conversaciones de
      WhatsApp en Chatwoot.


      ### Recursos disponibles:

      - 🔧 **Configuración Completa**: Configure URL, tokens y credenciales de
      Chatwoot

      - 📬 **Sincronización Bidireccional**: Los mensajes nuevos entre WhatsApp
      y Chatwoot se sincronizan automáticamente

      - 📱 **Gestión de Contactos**: Sincronización automática de nombres y
      teléfonos

      - 🔄 **Actualización LID→PN**: Migración automática de Local ID a Phone
      Number

      - 🏷️ **Nombres Inteligentes**: Sistema de nombres con tilde (~) para
      actualización automática

      - 🚫 **Separación de Grupos**: Opción para ignorar grupos en la
      sincronización

      - 👤 **Firma de Mensajes**: Identificación del agente en los mensajes
      enviados

      - 🔗 **Webhook Automático**: URL generada automáticamente para configurar
      en Chatwoot


      ### 🏷️ Sistema de Nombres Inteligentes:

      - **Nombres con tilde (~)**: Se actualizan automáticamente cuando el
      contacto modifica su nombre en WhatsApp

      - **Nombres específicos**: Para un nombre fijo, quite la tilde (~) del
      nombre en Chatwoot

      - **Ejemplo**: "~Juan Pérez" = automático, "Juan Pérez" = fijo

      - **Migración LID→PN**: Sin duplicación de conversaciones durante la
      transición

      - **Respuestas nativas**: Aparecen directamente en Chatwoot sin marcas
      externas


      ### ⚠️ Limitaciones conocidas:

      - **Sincronización del historial**: No implementada - solo se sincronizan
      los mensajes nuevos


      ### Casos de uso:

      - Atención centralizada en Chatwoot

      - Equipos de soporte con múltiples agentes

      - Integración con CRM mediante Chatwoot

      - Centralización de canales de comunicación

      - Gestión automática de contactos y nombres


      **Ideal para**: Empresas con equipos de atención, call centers, soporte
      técnico (en entorno de pruebas)


      **Requiere**: Instancia de Chatwoot configurada, tokens de API y entorno
      de pruebas


      **🚧 Recuerde**: Integración en BETA - las funcionalidades pueden cambiar
      sin previo aviso
  - name: Server-Sent Events (SSE)
paths:
  /community/create:
    post:
      tags:
        - Grupos y Comunidades
      summary: Crear una comunidad
      description: >
        Crea una nueva comunidad en WhatsApp. Una comunidad es una estructura
        que permite agrupar múltiples grupos relacionados bajo una única
        administración. 


        La comunidad creada inicialmente tendrá solo el grupo principal
        (announcements), y se pueden vincular grupos adicionales posteriormente
        usando el endpoint `/community/updategroups`.


        **Observaciones importantes:**

        - El número que crea la comunidad se convierte automáticamente en el
        administrador

        - La comunidad tendrá un grupo principal de anuncios creado
        automáticamente
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Nombre de la comunidad
                  example: Comunidad del Barrio
              required:
                - name
      responses:
        '200':
          description: Comunidad creada correctamente
          content:
            application/json:
              schema:
                type: object
                properties:
                  group:
                    $ref: '#/components/schemas/Group'
                  failed:
                    type: array
                    description: Lista de JIDs que no se pudieron agregar
                    items:
                      type: string
                      format: jid
        '400':
          description: Error en la solicitud
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: invalid payload
        '401':
          description: Token inválido o no proporcionado
        '403':
          description: Sin permiso para crear comunidades
        '429':
          description: Límite de creación de comunidades alcanzado
        '500':
          description: Error interno del servidor
components:
  schemas:
    Group:
      type: object
      description: Representa un grupo/conversación colectiva
      properties:
        JID:
          type: string
          format: jid
          description: Identificador único del grupo
          example: jid8@g.us
        OwnerJID:
          type: string
          format: jid
          description: JID del propietario del grupo
          example: 1232@s.whatsapp.net
        OwnerPN:
          type: string
          format: jid
          description: Número/LID del propietario (cuando esté disponible)
        Name:
          type: string
          description: Nombre del grupo
          example: Grupo de Soporte
        NameSetAt:
          type: string
          format: date-time
          description: Fecha del último cambio del nombre
        NameSetBy:
          type: string
          format: jid
          description: JID del usuario que definió el nombre
        NameSetByPN:
          type: string
          format: jid
          description: LID/PN de quien definió el nombre
        Topic:
          type: string
          description: Descripción del grupo
        TopicID:
          type: string
          description: ID interno de la descripción
        TopicSetAt:
          type: string
          format: date-time
          description: Fecha del último cambio de la descripción
        TopicSetBy:
          type: string
          format: jid
          description: JID de quien modificó la descripción
        TopicSetByPN:
          type: string
          format: jid
          description: LID/PN de quien modificó la descripción
        TopicDeleted:
          type: boolean
          description: Indica si la descripción fue eliminada
        IsLocked:
          type: boolean
          description: >
            Indica si solo los administradores pueden editar la información del
            grupo

            - true = solo los admins pueden editar

            - false = todos pueden editar
          example: true
        IsAnnounce:
          type: boolean
          description: Indica si solo los administradores pueden enviar mensajes
        AnnounceVersionID:
          type: string
          description: Versión de la configuración de anuncios
        IsEphemeral:
          type: boolean
          description: Indica si los mensajes son temporales
        DisappearingTimer:
          type: integer
          description: Tiempo en segundos para la desaparición de mensajes
          minimum: 0
        IsIncognito:
          type: boolean
          description: Indica si el grupo es incógnito
        IsParent:
          type: boolean
          description: Indica si es un grupo principal (comunidad)
        IsJoinApprovalRequired:
          type: boolean
          description: Indica si se requiere aprobación para nuevos miembros
        LinkedParentJID:
          type: string
          format: jid
          description: JID de la comunidad vinculada
        IsDefaultSubGroup:
          type: boolean
          description: Indica si es un subgrupo predeterminado de la comunidad
        DefaultMembershipApprovalMode:
          type: string
          description: Modo predeterminado de aprobación de miembros (cuando es comunidad)
        GroupCreated:
          type: string
          format: date-time
          description: Fecha de creación del grupo
        CreatorCountryCode:
          type: string
          description: Código de país del creador
        ParticipantVersionID:
          type: string
          description: Versión de la lista de participantes
        Participants:
          description: >-
            Lista de participantes. Es null cuando se omite por noParticipants y
            puede estar vacía cuando participant_profiles está presente.
          oneOf:
            - type: array
              items:
                $ref: '#/components/schemas/GroupParticipant'
            - type: 'null'
        MemberAddMode:
          type: string
          enum:
            - ''
            - admin_add
            - all_member_add
          description: Modo de incorporación de nuevos miembros
        AddressingMode:
          type: string
          enum:
            - ''
            - pn
            - lid
          description: Direccionamiento preferido del grupo
        OwnerCanSendMessage:
          type: boolean
          description: Verifica si es posible enviar mensajes
        OwnerIsAdmin:
          type: boolean
          description: >-
            Indica privilegio de administrador confirmado. Puede estar ausente
            cuando es falso; los datos parciales no otorgan privilegio de
            administrador.
        DefaultSubGroupId:
          type: string
          description: >-
            Si el grupo actual es una comunidad, este campo mostrará el ID del
            subgrupo de avisos
        invite_link:
          type: string
          description: >-
            Enlace de invitación, expuesto solo para administradores con permiso
            confirmado. Puede estar ausente; no asuma que toda lectura consulta
            WhatsApp.
        request_participants:
          type: string
          description: >-
            Solicitudes de ingreso conocidas, separadas por coma. Expuesto solo
            para administradores cuando se solicita.
        image_url:
          type: string
          description: >-
            URL de la imagen completa ya persistida; la API no consulta WhatsApp
            durante el listado
        image_preview_url:
          type: string
          description: URL de la vista previa ya persistida
        picture_id:
          type: string
          description: Identificador de la imagen completa en WhatsApp
        picture_preview_id:
          type: string
          description: Identificador de la vista previa en WhatsApp
        picture_empty_at:
          type: string
          format: date-time
          description: Última confirmación de que el grupo no tenía imagen
        image_checked_at:
          type: string
          format: date-time
          description: Última consulta de la imagen completa
        image_preview_checked_at:
          type: string
          format: date-time
          description: Última consulta de la vista previa
        parent_community:
          type: object
          description: Resumen de la comunidad principal de un subgrupo
          properties:
            jid:
              type: string
              format: jid
            name:
              type: string
            image_url:
              type: string
            image_preview_url:
              type: string
            default_subgroup_jid:
              type: string
              format: jid
        participant_profiles:
          type: array
          description: >-
            Perfiles adicionales de los participantes, cuando estén disponibles.
            Los campos ausentes no deben inferirse.
          items:
            type: object
            description: >-
              Perfil adicional de un participante; los campos ausentes no deben
              inferirse.
            properties:
              jid:
                type: string
                format: jid
              pn:
                type: string
                format: jid
              lid:
                type: string
                format: jid
              username:
                type: string
              display_name:
                type: string
              name:
                type: string
              image_url:
                type: string
              image_preview_url:
                type: string
              picture_id:
                type: string
              picture_preview_id:
                type: string
              is_admin:
                type: boolean
              is_super_admin:
                type: boolean
        ParticipantCount:
          type: integer
          minimum: 0
          description: >-
            Cantidad conocida de participantes. Puede diferir del tamaño de la
            lista cuando los datos son parciales o se omitieron de la respuesta.
        request_participants_lid:
          type: string
          description: >-
            LIDs de las solicitudes de ingreso conocidas, separados por coma;
            solo para administrador cuando se solicita.
    GroupParticipant:
      type: object
      description: Participante de un grupo
      properties:
        JID:
          type: string
          format: jid
          description: Identificador del participante
        LID:
          type: string
          format: jid
          description: Identificador local del participante
        PhoneNumber:
          type: string
          format: jid
          description: Número del participante (cuando esté disponible)
        IsAdmin:
          type: boolean
          description: Indica si es administrador
        IsSuperAdmin:
          type: boolean
          description: Indica si es superadministrador
        DisplayName:
          type: string
          description: Nombre mostrado o resuelto localmente para el participante
        ImagePreview:
          type: string
          description: >-
            Campo heredado no completado. Use
            participant_profiles[].image_preview_url.
          deprecated: true
        Error:
          type: integer
          description: Código de error al agregar participante
          minimum: 0
        AddRequest:
          description: Información de la solicitud de ingreso
          oneOf:
            - type: object
              properties:
                Code:
                  type: string
                  description: Código de la solicitud
                Expiration:
                  type: string
                  format: date-time
                  description: Fecha de expiración de la solicitud
            - type: 'null'
        Username:
          type: string
          description: Nombre de usuario observado en WhatsApp, cuando está disponible.
  securitySchemes:
    token:
      name: token
      type: apiKey
      in: header

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.