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

# Listar plantillas

> Consulta las plantillas de WhatsApp disponibles para una línea.

Obtiene las plantillas de WhatsApp aprobadas asociadas a tu línea.

## Endpoint

```
GET /whatsapp/{phoneNumberId}/templates
```

**URL completa:** `https://api.insuranceboosters.com/api/v1/whatsapp/{phoneNumberId}/templates`

## Autenticación

```http theme={null}
x-ib-api-key: <tu-api-key>
```

## Parámetros de ruta

| Parámetro       | Descripción                                                                                   |
| --------------- | --------------------------------------------------------------------------------------------- |
| `phoneNumberId` | Identificador de tu línea de WhatsApp. Solicítalo con tu ejecutivo de cuenta si no lo tienes. |

## Paginación (opcional)

Si la respuesta incluye `paging.next`, hay más plantillas en páginas siguientes. Para obtenerlas, repite la solicitud agregando el parámetro de consulta `nextUrl` con el valor exacto de `paging.next`:

```
GET /whatsapp/{phoneNumberId}/templates?nextUrl=<valor-de-paging.next>
```

<Note>
  Si la respuesta solo trae `paging.cursors` y **no** incluye `paging.next`, ya recibiste todos los resultados de esa consulta. Esto es normal cuando todas las plantillas caben en una sola página.
</Note>

## Respuesta exitosa (`200`)

Cada elemento de `data` incluye, entre otros campos:

| Campo              | Descripción                                               |
| ------------------ | --------------------------------------------------------- |
| `id`               | Identificador de la plantilla.                            |
| `name`             | Nombre de la plantilla (úsalo al enviar).                 |
| `language`         | Idioma de la plantilla (úsalo al enviar).                 |
| `status`           | Estado de aprobación (ej. `APPROVED`).                    |
| `category`         | Categoría (ej. `UTILITY`, `MARKETING`).                   |
| `parameter_format` | Formato de variables: `NAMED` o `POSITIONAL`.             |
| `components`       | Estructura de la plantilla (body, footer, botones, etc.). |

### Ejemplo de respuesta

```json theme={null}
{
  "data": [
    {
      "id": "1234567890123456",
      "name": "recordatorio_pago",
      "language": "es",
      "status": "APPROVED",
      "category": "UTILITY",
      "parameter_format": "NAMED",
      "components": [
        {
          "type": "BODY",
          "text": "Hola, {{nombre}} 👋\n\nTe escribimos para avisarte que se acerca el pago de tu seguro...",
          "example": {
            "body_text_named_params": [
              { "param_name": "nombre", "example": "María" },
              { "param_name": "monto", "example": "$1,500" }
            ]
          }
        },
        {
          "type": "FOOTER",
          "text": "Acme Seguros | Asesoría"
        },
        {
          "type": "BUTTONS",
          "buttons": [
            { "type": "QUICK_REPLY", "text": "Contactar asesor" }
          ]
        }
      ]
    }
  ],
  "paging": {
    "cursors": {
      "before": "QVFIUzBGX3lK...",
      "after": "QVFIU3YtcHlY..."
    }
  }
}
```

Cuando hay más páginas, la respuesta también incluye `paging.next` con la URL para la siguiente consulta.

Usa `name`, `language` y `parameter_format` al armar el payload de [Enviar plantilla](/whatsapp/enviar-plantilla).

## Errores frecuentes

| HTTP  | Qué significa                                           | Qué hacer                                                        |
| ----- | ------------------------------------------------------- | ---------------------------------------------------------------- |
| `401` | API key inválida o faltante.                            | Verifica `x-ib-api-key` o solicítala con tu ejecutivo de cuenta. |
| `403` | La línea no pertenece a tu cuenta.                      | Confirma el `phoneNumberId` con tu ejecutivo de cuenta.          |
| `404` | La línea no existe.                                     | Confirma el identificador de la línea.                           |
| `400` | La línea no está configurada para consultar plantillas. | Contacta soporte.                                                |


## OpenAPI

````yaml openapi/whatsapp-v1.json GET /whatsapp/{phoneNumberId}/templates
openapi: 3.1.0
info:
  title: Insurance Boosters API
  version: 1.0.0
  description: >-
    API pública de Insurance Boosters. Consulta y envío de plantillas de
    WhatsApp.
servers:
  - url: https://api.insuranceboosters.com/api/v1
    description: Producción
security:
  - IbApiKey: []
tags:
  - name: WhatsApp
    description: Mensajería de WhatsApp Business.
paths:
  /whatsapp/{phoneNumberId}/templates:
    get:
      tags:
        - WhatsApp
      summary: Listar plantillas de WhatsApp
      description: >-
        Devuelve las plantillas aprobadas de la línea. La respuesta puede
        incluir `paging.cursors` y, si hay más resultados, `paging.next` para
        solicitar la página siguiente vía el parámetro `nextUrl`.
      operationId: listWhatsAppTemplates
      parameters:
        - name: phoneNumberId
          in: path
          required: true
          description: >-
            Identificador de tu línea de WhatsApp. Solicítalo con tu ejecutivo
            de cuenta.
          schema:
            type: string
        - name: nextUrl
          in: query
          required: false
          description: >-
            URL completa de la página siguiente. Solo úsala cuando la respuesta
            anterior incluya `paging.next`; pásala como valor de este parámetro.
          schema:
            type: string
      responses:
        '200':
          description: Listado de plantillas.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListTemplatesResponse'
        '400':
          description: La línea no está configurada para consultar plantillas.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleErrorResponse'
        '401':
          description: API key inválida o faltante.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleErrorResponse'
        '403':
          description: La línea no pertenece a tu cuenta.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleErrorResponse'
        '404':
          description: Línea no encontrada.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleErrorResponse'
        '500':
          description: Error del servicio.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleErrorResponse'
components:
  schemas:
    ListTemplatesResponse:
      type: object
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              name:
                type: string
              language:
                type: string
              status:
                type: string
              category:
                type: string
              parameter_format:
                type: string
                enum:
                  - NAMED
                  - POSITIONAL
              components:
                type: array
                items:
                  type: object
        paging:
          type: object
          properties:
            cursors:
              type: object
              properties:
                before:
                  type: string
                after:
                  type: string
            next:
              type: string
              description: >-
                URL para la página siguiente. Solo aparece cuando hay más
                resultados; pásala como valor del parámetro de consulta nextUrl.
            previous:
              type: string
    SimpleErrorResponse:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
  securitySchemes:
    IbApiKey:
      type: apiKey
      in: header
      name: x-ib-api-key
      description: API key emitida por Insurance Boosters.

````