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

# Processamento com IA

> Como enviar mensagens para processamento inteligente

## Visão Geral

O endpoint de processamento com IA permite enviar mensagens de texto, imagens, áudios e PDFs para análise inteligente. O sistema pode responder de forma síncrona ou assíncrona (via postback).

## Endpoint Principal

<Card>
  <strong>POST</strong> `/ai/process`
</Card>

## Parâmetros do Payload

<ParamField body="tenant_id" type="string" required>
  ID do tenant (obtido no dashboard)
</ParamField>

<ParamField body="lead_id" type="string" required>
  ID do lead que está enviando a mensagem
</ParamField>

<ParamField body="role" type="string" required>
  Papel do remetente: `user`, `assistant`, `human`, `system`
</ParamField>

<ParamField body="content" type="string" required>
  Conteúdo da mensagem
</ParamField>

<ParamField body="message_type" type="string" required>
  Tipo da mensagem: `text`, `image`, `audio`, `pdf`
</ParamField>

<ParamField body="url" type="string">
  URL da mídia (obrigatório para tipos diferentes de `text`)
</ParamField>

<ParamField body="debounce" type="boolean" default="false">
  Quando `true`, acumula mensagens e envia resposta via postback
</ParamField>

<ParamField body="postback_url" type="string">
  URL para receber a resposta (obrigatório quando `debounce: true`)
</ParamField>

## Exemplo de Requisição

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://api.leavo.ai/ai/process" \
    -H "Authorization: Bearer sua_chave_aqui" \
    -H "Content-Type: application/json" \
    -d '{
      "tenant_id": "uuid-do-tenant",
      "lead_id": "uuid-do-lead",
      "role": "user",
      "content": "Olá, gostaria de saber mais sobre o produto",
      "message_type": "text",
      "debounce": true,
      "postback_url": "https://seu-webhook.com/callback"
    }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://api.leavo.ai/ai/process', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer sua_chave_aqui',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      tenant_id: 'uuid-do-tenant',
      lead_id: 'uuid-do-lead',
      role: 'user',
      content: 'Olá, gostaria de saber mais sobre o produto',
      message_type: 'text',
      debounce: true,
      postback_url: 'https://seu-webhook.com/callback'
    })
  });
  ```
</CodeGroup>

## Tipos de Mensagem

<AccordionGroup>
  <Accordion title="Texto" icon="font">
    Mensagem de texto simples.

    ```json theme={null}
    {
      "message_type": "text",
      "content": "Sua mensagem aqui"
    }
    ```
  </Accordion>

  <Accordion title="Imagem" icon="image">
    Envie uma imagem para análise visual.

    ```json theme={null}
    {
      "message_type": "image",
      "content": "Descrição opcional",
      "url": "https://exemplo.com/imagem.jpg"
    }
    ```
  </Accordion>

  <Accordion title="Áudio" icon="microphone">
    Envie um áudio para transcrição e análise.

    ```json theme={null}
    {
      "message_type": "audio",
      "url": "https://exemplo.com/audio.mp3"
    }
    ```
  </Accordion>

  <Accordion title="PDF" icon="file-pdf">
    Envie um PDF para extração de conteúdo.

    ```json theme={null}
    {
      "message_type": "pdf",
      "url": "https://exemplo.com/documento.pdf"
    }
    ```
  </Accordion>
</AccordionGroup>

## Modo Debounce

<Info>
  O modo debounce é útil quando você quer acumular várias mensagens antes de processar.
</Info>

### Como Funciona

1. Quando `debounce: true`, o sistema acumula mensagens por um tempo configurado
2. Após o tempo de debounce, todas as mensagens são processadas juntas
3. A resposta é enviada para a `postback_url`

### Fluxo de Requisição

```mermaid theme={null}
sequenceDiagram
    participant Client
    participant API
    participant AI
    participant Webhook

    Client->>API: POST /ai/process (debounce: true)
    API->>Client: 202 Accepted
    Note over API: Acumula mensagens
    API->>AI: Processa mensagens
    AI->>API: Resposta da IA
    API->>Webhook: POST para postback_url
```

### Resposta Síncrona (sem debounce)

Quando `debounce: false`, a resposta é retornada imediatamente:

```json theme={null}
{
  "success": true,
  "response": "Olá! Claro, posso ajudar com informações sobre nosso produto..."
}
```

### Resposta via Postback

Quando `debounce: true`, o postback recebe:

```json theme={null}
{
  "lead_id": "uuid-do-lead",
  "response": "Olá! Claro, posso ajudar com informações sobre nosso produto...",
  "timestamp": "2024-01-15T10:30:00Z"
}
```
