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

# Listar Plantillas de Mensaje

> Obtén las plantillas de mensaje de WhatsApp disponibles para un negocio

Retorna todas las plantillas de mensaje activas y visibles asociadas a un negocio. Las plantillas se obtienen desde el WABA de Meta y se enriquecen con la configuración local (visibilidad, agentes permitidos, etc.).

Si el usuario tiene el rol de **agente** (`role_id: 5`), solo se retornan las plantillas asignadas explícitamente a ese agente.

## Autenticación

Requiere el encabezado `x-api-key` con el App Key del negocio. Consulta [Autenticación](/authentication).

## Encabezados

<ParamField header="x-api-key" type="string" required>
  App Key del negocio. Consulta [Autenticación](/authentication).
</ParamField>

## Cuerpo de la solicitud

<ParamField body="empresa_id" type="number" required>
  ID del negocio cuyas plantillas deseas obtener.
</ParamField>

<ParamField body="usuario_id" type="number" required>
  ID del usuario que realiza la solicitud. Se usa para filtrar plantillas cuando el usuario es agente.
</ParamField>

## Respuesta

<ResponseField name="plantillas" type="array">
  Lista de plantillas disponibles para el negocio.

  <Expandable title="Objeto de plantilla">
    <ResponseField name="id" type="number">ID interno de la plantilla.</ResponseField>
    <ResponseField name="id_plantilla" type="string">Nombre de la plantilla registrado en Meta.</ResponseField>
    <ResponseField name="empresa_id" type="number">Negocio al que pertenece la plantilla.</ResponseField>
    <ResponseField name="visible" type="boolean">Indica si la plantilla es visible para los usuarios.</ResponseField>

    <ResponseField name="agentes_permitidos" type="string">
      Lista de IDs de agentes separados por coma que pueden usar esta plantilla. Si está vacío, todos los agentes pueden usarla.
    </ResponseField>

    <ResponseField name="deleted_at" type="string | null">Marca de eliminación suave. `null` para plantillas activas.</ResponseField>

    <ResponseField name="state" type="string">
      Estado de aprobación actual en Meta. Valores posibles: `APPROVED`, `PENDING`, `REJECTED`, `no_status`.
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash theme={null}
  curl -X POST https://beta.api-iobot-desarrollo.com/chats/obtener/mensaje/plantilla \
    -H "Content-Type: application/json" \
    -H "x-api-key: TU_APP_KEY" \
    -d '{
      "empresa_id": 1,
      "usuario_id": 42
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "plantillas": [
      {
        "id": 7,
        "id_plantilla": "bienvenida_nuevo_cliente",
        "empresa_id": 1,
        "visible": true,
        "agentes_permitidos": "",
        "deleted_at": null,
        "state": "APPROVED"
      },
      {
        "id": 12,
        "id_plantilla": "seguimiento_cotizacion",
        "empresa_id": 1,
        "visible": true,
        "agentes_permitidos": "42,55",
        "deleted_at": null,
        "state": "APPROVED"
      }
    ]
  }
  ```

  ```json 500 theme={null}
  "Error: Could not connect to Meta API"
  ```
</ResponseExample>
