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

# Enviar interação

> Envia uma mensagem ou ação do usuário ao agente pelo canal personalizado

## Descrição

Seu aplicativo envia uma interação ao agente. A Jelou valida a assinatura HMAC, responde imediatamente com `202` e um `executionId`, e processa o fluxo de forma assíncrona. As respostas do agente chegam depois no seu `webhookUrl`.

## Endpoint

```
POST https://chatbot.jelou.ai/v1/custom-channel/{botId}
```

## Parâmetros de rota

<ParamField path="botId" type="string" required>
  Identificador do agente com canal personalizado habilitado.
</ParamField>

## Parâmetros do corpo

<ParamField body="referenceId" type="string" required>
  Identificador estável do usuário no seu sistema. Usado como `userId` nas entregas de saída e para consultar o status da sessão.
</ParamField>

<ParamField body="message" type="object" required>
  Payload da mensagem encaminhado ao fluxo do agente. Um exemplo típico de texto é `{ "type": "TEXT", "text": "Olá" }`.
</ParamField>

## Autenticação / assinatura

Inclua o header obrigatório:

```
X-Jelou-Signature: sha256=<HMAC_HEX>
```

A assinatura é calculada sobre o **raw body** exato da requisição (HMAC-SHA256). Detalhes em [Assinatura HMAC](/pt/api/custom-channel/assinatura-hmac).

A autenticação `credentials.auth` do canal **não** é exigida neste endpoint: aplica-se apenas às chamadas de saída da Jelou para o seu webhook.

## Exemplo de solicitação

```bash cURL theme={null}
curl --request POST \
  --url https://chatbot.jelou.ai/v1/custom-channel/BOT_ID \
  --header 'Content-Type: application/json' \
  --header 'X-Jelou-Signature: sha256=HMAC_HEX' \
  --data '{
    "referenceId": "user-123",
    "message": {
      "type": "TEXT",
      "text": "Olá"
    }
  }'
```

## Respostas

| Código | Status                | Descrição                                                |
| ------ | --------------------- | -------------------------------------------------------- |
| 202    | Accepted              | Interação aceita. O fluxo é processado em segundo plano. |
| 400    | Bad Request           | Falta `referenceId` ou está vazio.                       |
| 401    | Unauthorized          | Assinatura inválida, ausente ou chave não resolvida.     |
| 500    | Internal Server Error | Erro interno (por exemplo, canal não resolvido).         |

## Exemplo de resposta

```json theme={null}
{
  "executionId": "EXECUTION_ID"
}
```

<Warning>
  Um `202` não garante que o fluxo terminou com sucesso. Use [consultar status](/pt/api/custom-channel/consultar-estado) e/ou aguarde a entrega no seu webhook.
</Warning>
