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

# Enviar Mensagem Ativa

> Envia uma mensagem para um número de WhatsApp através de um dispositivo conectado. O dispositivo deve estar iniciado e conectado para enviar mensagens.

**Requer:** Funcionalidade de envio ativo habilitada no plano (`allowActiveMessaging`).

**Cota:** Cada envio consome 1 unidade da cota mensal de mensagens ativas. Um limite flexível de 5% acima da cota é permitido antes do bloqueio.

Headers de resposta incluem informações de rate limit: `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Used`.




## OpenAPI

````yaml api-reference/openapi.yaml post /api/openapi/v1/send
openapi: 3.0.3
info:
  title: Lota AI OpenAPI
  description: >
    API RESTful completa para gerenciamento da plataforma Lota AI. Esta API
    fornece acesso programático para parceiros white-label, integrações externas
    e dashboards personalizados.


    ## Autenticação

    Todos os endpoints (exceto `/auth/token`) requerem autenticação via Bearer
    token. Gere um token usando suas credenciais de chave API.


    ## Limite de Taxa

    Limites de taxa são configurados por chave API. Entre em contato com o
    suporte para limites personalizados.


    ## Suporte

    Para problemas ou dúvidas, entre em contato com o líder da sua equipe ou
    consulte a documentação.
  version: 1.3.0
  contact:
    name: Suporte API Lota AI
    url: https://lotai.com.br
  license:
    name: Proprietário
    url: https://lotai.com.br/terms-and-conditions
servers:
  - url: http://localhost:3000
    description: Servidor de desenvolvimento local
  - url: '{customUrl}'
    description: Servidor white-label personalizado
    variables:
      customUrl:
        default: https://sua-url-aqui.com
        description: URL do seu servidor white-label
security:
  - BearerAuth: []
tags:
  - name: Autenticação
    description: Gerar e gerenciar tokens de acesso JWT
  - name: Chaves API
    description: Gerenciar chaves API para autenticação
  - name: Equipes
    description: Gerenciar equipes e suas configurações
  - name: Documentos
    description: Gerenciar documentos e uploads de arquivos
  - name: Bots
    description: Gerenciar bots de IA e assistentes
  - name: Dispositivos
    description: Gerenciar dispositivos WhatsApp e conexões
paths:
  /api/openapi/v1/send:
    post:
      tags:
        - Dispositivos
      summary: Enviar Mensagem Ativa
      description: >
        Envia uma mensagem para um número de WhatsApp através de um dispositivo
        conectado. O dispositivo deve estar iniciado e conectado para enviar
        mensagens.


        **Requer:** Funcionalidade de envio ativo habilitada no plano
        (`allowActiveMessaging`).


        **Cota:** Cada envio consome 1 unidade da cota mensal de mensagens
        ativas. Um limite flexível de 5% acima da cota é permitido antes do
        bloqueio.


        Headers de resposta incluem informações de rate limit:
        `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Used`.
      operationId: sendMessage
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - device_id
                - message
                - destination_number
              properties:
                device_id:
                  type: string
                  format: uuid
                  description: ID do dispositivo que enviará a mensagem
                  example: 880e8400-e29b-41d4-a716-446655440003
                message:
                  type: string
                  description: Mensagem de texto a ser enviada
                  example: Olá! Como posso ajudá-lo hoje?
                destination_number:
                  type: string
                  description: Número de telefone de destino (formato internacional)
                  example: '5511999999999'
                send_as_audio:
                  type: boolean
                  description: >-
                    Se true, converte a mensagem de texto em áudio antes de
                    enviar
                  default: false
                  example: false
                ai_generates_message:
                  type: boolean
                  description: Se true, permite que a IA gere uma resposta personalizada
                  default: false
                  example: false
                image_url:
                  type: string
                  description: URL de uma imagem para enviar junto com a mensagem
                  nullable: true
                  example: https://example.com/image.jpg
                image_mime_type:
                  type: string
                  description: Tipo MIME da imagem (ex. image/jpeg, image/png)
                  nullable: true
                  example: image/jpeg
      responses:
        '200':
          description: Mensagem enviada com sucesso
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  data:
                    type: object
                    properties:
                      device_id:
                        type: string
                        format: uuid
                      name:
                        type: string
                        description: Nome do dispositivo
                        example: Dispositivo de Suporte 01
                      destinationNumber:
                        type: string
                        example: '5511999999999'
                      sendAsAudio:
                        type: boolean
                        example: false
                      aiGeneratesMessage:
                        type: boolean
                        example: false
                      imageUrl:
                        type: string
                        nullable: true
                      imageMimeType:
                        type: string
                        nullable: true
                      usage:
                        type: object
                        description: Informações de uso da cota de mensagens ativas
                        properties:
                          activeMessagesUsed:
                            type: integer
                            description: Total de mensagens ativas utilizadas no mês
                            example: 51
                          activeMessagesQuota:
                            type: integer
                            description: Cota mensal de mensagens ativas do plano
                            example: 500
                          activeMessagesRemaining:
                            type: integer
                            description: >-
                              Mensagens ativas restantes (considerando limite
                              flexível)
                            example: 474
          headers:
            X-RateLimit-Limit:
              description: Limite total de mensagens ativas (com margem de 5%)
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: Mensagens restantes no período
              schema:
                type: integer
            X-RateLimit-Used:
              description: Mensagens utilizadas no período
              schema:
                type: integer
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          description: Funcionalidade não disponível no plano ou acesso negado
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: false
                  error:
                    type: object
                    properties:
                      message:
                        type: string
                        example: Active messaging not available in your plan
                      code:
                        type: string
                        example: FEATURE_NOT_AVAILABLE
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          description: Cota mensal de mensagens ativas excedida
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: false
                  error:
                    type: object
                    properties:
                      message:
                        type: string
                        example: Monthly active message quota exceeded
                      code:
                        type: string
                        example: RATE_LIMIT_EXCEEDED
                      details:
                        type: object
                        properties:
                          quota:
                            type: integer
                            example: 500
                          used:
                            type: integer
                            example: 525
                          limit:
                            type: integer
                            description: Limite com margem de 5%
                            example: 525
        '500':
          $ref: '#/components/responses/InternalError'
components:
  responses:
    BadRequest:
      description: Requisição inválida - Entrada inválida
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            error: Corpo da requisição inválido
            code: BAD_REQUEST
    NotFound:
      description: Não encontrado - Recurso não existe
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            error: Recurso não encontrado
            code: NOT_FOUND
    InternalError:
      description: Erro interno do servidor
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            error: Erro interno do servidor
            code: INTERNAL_ERROR
  schemas:
    ErrorResponse:
      type: object
      properties:
        success:
          type: boolean
          example: false
        error:
          type: string
          example: Mensagem de erro
        code:
          type: string
          example: ERROR_CODE
        details:
          type: object
          nullable: true
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Token JWT obtido do endpoint /api/openapi/auth/token

````