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

> Envía mensajes SMS a uno o múltiples números de teléfono.

### Información importante
- **1 mensaje = 160 caracteres**
- Los mensajes más largos se dividen automáticamente
- Los números deben incluir el código de país (ej: +57)
- Se eliminan automáticamente caracteres especiales no admitidos




## OpenAPI

````yaml /api-reference/openapi.yaml post /v1/sms/send
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/sms/send:
    post:
      tags:
        - SMS
      summary: Enviar SMS
      description: |
        Envía mensajes SMS a uno o múltiples números de teléfono.

        ### Información importante
        - **1 mensaje = 160 caracteres**
        - Los mensajes más largos se dividen automáticamente
        - Los números deben incluir el código de país (ej: +57)
        - Se eliminan automáticamente caracteres especiales no admitidos
      operationId: sendSms
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - message
                - mobile_numbers
              properties:
                message:
                  type: string
                  description: >-
                    Mensaje SMS a enviar (1 mensaje = 160 caracteres, se
                    dividirá automáticamente)
                  example: Hello! this is a test message
                mobile_numbers:
                  type: array
                  description: Array de números de teléfono móvil con código de país
                  items:
                    type: string
                    pattern: ^\+[0-9]{10,15}$
                  example:
                    - '+57545454564'
                    - '+57423423423'
                    - '+57423423423'
            examples:
              basic:
                summary: Envío básico de SMS
                value:
                  message: Hello! this is a test message
                  mobile_numbers:
                    - '+57545454564'
                    - '+57423423423'
                    - '+57423423423'
      responses:
        '200':
          description: SMS enviado exitosamente
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: string
                    example: Message sent
                  total_contacts:
                    type: integer
                    description: Total de contactos a los que se envió el mensaje
                    example: 3
                  total_messages_sent:
                    type: integer
                    description: >-
                      Total de mensajes SMS enviados (considerando división por
                      longitud)
                    example: 3
                  messages_left:
                    type: integer
                    description: Mensajes restantes en tu cuenta después de este envío
                    example: 490
              examples:
                success:
                  value:
                    result: Message sent
                    total_contacts: 3
                    total_messages_sent: 3
                    messages_left: 490
        '400':
          description: Parámetros faltantes o error en la solicitud
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                generalError:
                  summary: Error general
                  value:
                    message: An error has ocurred, please contact us
                missingParams:
                  summary: Parámetros faltantes
                  value:
                    message: Invalid request, missing parameters. err 2
        '401':
          description: API key no autorizada o servicio de SMS inactivo
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                notAuthorized:
                  summary: API key no autorizada para SMS
                  value:
                    message: API key not authorized.
                serviceInactive:
                  summary: Servicio SMS inactivo
                  value:
                    message: current service is not active
                transactionalDisabled:
                  summary: SMS transaccional no activo
                  value:
                    message: Transactional SMS service is not active
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          description: Error interno del servidor o sin mensajes disponibles
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                noMessagesLeft:
                  summary: Sin mensajes disponibles
                  value:
                    message: You do not have any message left
                notEnoughMessages:
                  summary: Mensajes insuficientes para este envío
                  value:
                    message: You do not have enough messages to sent this message
      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).

````