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

# Enviar mensaje con plantilla de WhatsApp

> Envía mensajes de WhatsApp usando plantillas pre-aprobadas.

### Requisitos
- Debes tener plantillas aprobadas en tu cuenta
- Los parámetros deben coincidir con los definidos en la plantilla
- El servicio de WhatsApp debe estar activo




## OpenAPI

````yaml /api-reference/openapi.yaml post /v1/whatsapp/sendTemplateMessage
openapi: 3.1.0
info:
  title: Opptima API
  version: 1.0.0
  description: >
    API para acceder a las funcionalidades de Opptima programáticamente.


    ## Autenticación


    Todas las solicitudes requieren un API Key que debes incluir en el header
    `Authorization` como Bearer token.


    Para obtener tu API Key, ve a
    [Settings](https://app.opptima.com/es/settings).


    ## Rate Limiting


    La API implementa límites de tasa para proteger el servicio:


    - **Límite por defecto**: 2 peticiones por segundo (o 2 segundos por
    request)

    - Este límite es **ampliable bajo requerimiento**


    Si necesitas un límite mayor para tu caso de uso, contacta a soporte.
  contact:
    name: Opptima Support
    email: support@opptima.com
  license:
    name: Proprietary
servers:
  - url: https://api.ckpnd.com:5001
    description: Servidor principal (HTTPS)
security:
  - bearerAuth: []
tags:
  - name: Email
    description: Envío de correos electrónicos transaccionales y con plantillas
    x-page-icon: envelope
    x-page-description: Envía emails con HTML, plantillas, adjuntos y certificación
  - name: Templates
    description: Gestión de plantillas de correo electrónico
    x-page-icon: file-text
    x-page-description: Obtiene plantillas de email disponibles en tu cuenta
  - name: SMS
    description: Envío de mensajes SMS
    x-page-icon: mobile
    x-page-description: Envía mensajes SMS a múltiples destinatarios
  - name: WhatsApp
    description: Envío de mensajes de WhatsApp
    x-page-icon: whatsapp
    x-page-description: Envía mensajes de WhatsApp usando plantillas o mensajes de sesión
  - name: Email Marketing
    description: >
      Eventos webhook generados por campañas de Email Marketing.

      Estos eventos son enviados como POST a la URL de webhook configurada en tu
      cuenta.
    x-page-icon: bell
    x-page-description: >-
      Eventos de entrega, rebote, apertura, click, desuscripción y queja para
      Email Marketing
  - name: SMTP
    description: >
      Eventos webhook generados por mensajes transaccionales SMTP/API.

      Estos eventos son enviados como POST a la URL de webhook configurada en tu
      cuenta.

      Algunos campos no están disponibles para emails certificados.
    x-page-icon: bell
    x-page-description: >-
      Eventos de entrega, rebote, apertura, click, entrega certificada y
      desuscripción para SMTP/API
paths:
  /v1/whatsapp/sendTemplateMessage:
    post:
      tags:
        - WhatsApp
      summary: Enviar mensaje con plantilla de WhatsApp
      description: |
        Envía mensajes de WhatsApp usando plantillas pre-aprobadas.

        ### Requisitos
        - Debes tener plantillas aprobadas en tu cuenta
        - Los parámetros deben coincidir con los definidos en la plantilla
        - El servicio de WhatsApp debe estar activo
      operationId: sendTemplateMessage
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - destination
                - templateId
                - params
              properties:
                destination:
                  type: string
                  description: Número de teléfono de destino con código de país
                  pattern: ^\+?[0-9]{10,15}$
                  example: '573136006640'
                templateId:
                  type: string
                  description: ID de la plantilla a usar
                  example: template_bienvenida
                params:
                  type: array
                  description: Array de parámetros para la plantilla
                  items:
                    type: string
                  example:
                    - Juan
                    - '2024'
            examples:
              welcome:
                summary: Mensaje de bienvenida
                value:
                  destination: '573136006640'
                  templateId: template_bienvenida
                  params:
                    - Juan
                    - '2024'
      responses:
        '200':
          description: Mensaje enviado exitosamente
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: string
                    example: Message sent
                  current_balance:
                    type: number
                    format: float
                    description: Saldo actual después del envío
                    example: 9.9997
              examples:
                success:
                  value:
                    result: Message sent
                    current_balance: 9.9997
        '400':
          description: Parámetros faltantes o inválidos
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                missingDestination:
                  summary: Falta número de destino
                  value:
                    message: destination parameter is required
                missingTemplateId:
                  summary: Falta ID de plantilla
                  value:
                    message: templateId parameter is required
                invalidParams:
                  summary: Parámetro params debe ser un array
                  value:
                    message: params parameter must be an array
                configNotFound:
                  summary: Configuración de WhatsApp no encontrada
                  value:
                    message: WhatsApp configuration not found, please contact support
                generalError:
                  summary: Error general
                  value:
                    message: An error has occurred, please contact us
                missingParams:
                  summary: Parámetros faltantes
                  value:
                    message: Invalid request, missing parameters.
        '401':
          description: API key no autorizada o servicio de WhatsApp inactivo
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                notAuthorized:
                  summary: API key no autorizada para WhatsApp
                  value:
                    message: API key not authorized.
                serviceInactive:
                  summary: Servicio de WhatsApp inactivo
                  value:
                    message: WhatsApp service is not active
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          description: Error interno o sin saldo disponible
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                noBalance:
                  summary: Sin saldo para enviar mensajes
                  value:
                    message: >-
                      You do not have balance to send messages, please contact
                      support
      security:
        - bearerAuth: []
components:
  schemas:
    Error:
      type: object
      description: Respuesta de error estándar de la aplicación
      properties:
        message:
          type: string
          description: Descripción del error
      required:
        - message
    AuthError:
      type: object
      description: Respuesta de error de autenticación del middleware
      properties:
        error:
          type: string
          description: Descripción del error de autenticación
      required:
        - error
    RateLimitError:
      type: object
      description: Respuesta cuando se excede el límite de peticiones por segundo
      properties:
        success:
          type: boolean
          example: false
        message:
          type: string
          example: Ha excedido el límite de peticiones permitidas por segundo.
        error:
          type: string
          example: RATE_LIMIT_EXCEEDED
      required:
        - success
        - message
        - error
  responses:
    Forbidden:
      description: |
        Error de autenticación. La API Key no fue enviada, es inválida, o la IP
        de origen no está permitida en la lista blanca configurada.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AuthError'
          examples:
            noApiKey:
              summary: API Key no enviada en el header Authorization
              value:
                error: No API Key sent
            invalidApiKey:
              summary: API Key inválida o no encontrada
              value:
                error: 'Invalid API Key '
            ipNotAllowed:
              summary: IP de origen no permitida
              value:
                error: 'IP Not Allowed '
    RateLimited:
      description: >
        Se ha excedido el límite de peticiones por segundo.

        El límite por defecto es de 2 peticiones por segundo y es ampliable bajo
        requerimiento.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RateLimitError'
          examples:
            rateLimited:
              value:
                success: false
                message: Ha excedido el límite de peticiones permitidas por segundo.
                error: RATE_LIMIT_EXCEEDED
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >
        Usa tu API Key como Bearer token en el header Authorization.


        Ejemplo: `Authorization: Bearer YOUR_API_KEY`


        Obtén tu API Key en la [página de
        Settings](https://app.opptima.com/es/settings).

````