curl -X POST "https://api.leavo.ai/backend/messages/send-media" \
-H "Authorization: Bearer sua_chave_aqui" \
-F "channel_id=uuid-do-canal" \
-F "remote_jid=5511999999999@s.whatsapp.net" \
-F "file=@/caminho/para/imagem.jpg" \
-F "caption=Veja esta imagem!"
const formData = new FormData();
formData.append('channel_id', 'uuid-do-canal');
formData.append('remote_jid', '5511999999999@s.whatsapp.net');
formData.append('file', fileInput.files[0]);
formData.append('caption', 'Veja esta imagem!');
const response = await fetch('https://api.leavo.ai/backend/messages/send-media', {
method: 'POST',
headers: {
'Authorization': 'Bearer sua_chave_aqui'
// Não defina Content-Type - o browser define automaticamente com boundary
},
body: formData
});
const result = await response.json();
import requests
with open('/caminho/para/imagem.jpg', 'rb') as f:
response = requests.post(
'https://api.leavo.ai/backend/messages/send-media',
headers={
'Authorization': 'Bearer sua_chave_aqui'
},
files={
'file': f
},
data={
'channel_id': 'uuid-do-canal',
'remote_jid': '5511999999999@s.whatsapp.net',
'caption': 'Veja esta imagem!'
}
)
{
"success": true,
"message_id": "msg-uuid",
"media_url": "https://storage.leavo.ai/uploads/abc123.jpg",
"timestamp": "2024-01-15T10:30:00Z"
}
Mensagens
Enviar Mídia com Upload
Faz upload e envia um arquivo de mídia
POST
/
backend
/
messages
/
send-media
curl -X POST "https://api.leavo.ai/backend/messages/send-media" \
-H "Authorization: Bearer sua_chave_aqui" \
-F "channel_id=uuid-do-canal" \
-F "remote_jid=5511999999999@s.whatsapp.net" \
-F "file=@/caminho/para/imagem.jpg" \
-F "caption=Veja esta imagem!"
const formData = new FormData();
formData.append('channel_id', 'uuid-do-canal');
formData.append('remote_jid', '5511999999999@s.whatsapp.net');
formData.append('file', fileInput.files[0]);
formData.append('caption', 'Veja esta imagem!');
const response = await fetch('https://api.leavo.ai/backend/messages/send-media', {
method: 'POST',
headers: {
'Authorization': 'Bearer sua_chave_aqui'
// Não defina Content-Type - o browser define automaticamente com boundary
},
body: formData
});
const result = await response.json();
import requests
with open('/caminho/para/imagem.jpg', 'rb') as f:
response = requests.post(
'https://api.leavo.ai/backend/messages/send-media',
headers={
'Authorization': 'Bearer sua_chave_aqui'
},
files={
'file': f
},
data={
'channel_id': 'uuid-do-canal',
'remote_jid': '5511999999999@s.whatsapp.net',
'caption': 'Veja esta imagem!'
}
)
{
"success": true,
"message_id": "msg-uuid",
"media_url": "https://storage.leavo.ai/uploads/abc123.jpg",
"timestamp": "2024-01-15T10:30:00Z"
}
Visão Geral
Use este endpoint quando você tem o arquivo localmente e precisa fazer upload antes de enviar.Este endpoint usa
multipart/form-data em vez de JSON.Form Fields
string
obrigatório
UUID do canal
string
obrigatório
JID do WhatsApp (ex:
5511999999999@s.whatsapp.net)file
obrigatório
Arquivo de mídia para upload
string
Legenda da mídia (opcional)
curl -X POST "https://api.leavo.ai/backend/messages/send-media" \
-H "Authorization: Bearer sua_chave_aqui" \
-F "channel_id=uuid-do-canal" \
-F "remote_jid=5511999999999@s.whatsapp.net" \
-F "file=@/caminho/para/imagem.jpg" \
-F "caption=Veja esta imagem!"
const formData = new FormData();
formData.append('channel_id', 'uuid-do-canal');
formData.append('remote_jid', '5511999999999@s.whatsapp.net');
formData.append('file', fileInput.files[0]);
formData.append('caption', 'Veja esta imagem!');
const response = await fetch('https://api.leavo.ai/backend/messages/send-media', {
method: 'POST',
headers: {
'Authorization': 'Bearer sua_chave_aqui'
// Não defina Content-Type - o browser define automaticamente com boundary
},
body: formData
});
const result = await response.json();
import requests
with open('/caminho/para/imagem.jpg', 'rb') as f:
response = requests.post(
'https://api.leavo.ai/backend/messages/send-media',
headers={
'Authorization': 'Bearer sua_chave_aqui'
},
files={
'file': f
},
data={
'channel_id': 'uuid-do-canal',
'remote_jid': '5511999999999@s.whatsapp.net',
'caption': 'Veja esta imagem!'
}
)
{
"success": true,
"message_id": "msg-uuid",
"media_url": "https://storage.leavo.ai/uploads/abc123.jpg",
"timestamp": "2024-01-15T10:30:00Z"
}
Detecção Automática de Tipo
O tipo de mídia é detectado automaticamente baseado na extensão do arquivo:| Extensões | Tipo Detectado |
|---|---|
.jpg, .jpeg, .png, .gif, .webp | image |
.mp4, .3gp, .mov | video |
.mp3, .ogg, .m4a, .wav | audio |
.pdf, .doc, .docx, .xls, .xlsx | document |
Exemplo: Upload de Múltiplos Arquivos
async function sendMultipleFiles(channelId, remoteJid, files) {
const results = [];
for (const file of files) {
const formData = new FormData();
formData.append('channel_id', channelId);
formData.append('remote_jid', remoteJid);
formData.append('file', file);
const response = await fetch(
'https://api.leavo.ai/backend/messages/send-media',
{
method: 'POST',
headers: {
'Authorization': 'Bearer sua_chave_aqui'
},
body: formData
}
);
const result = await response.json();
results.push(result);
// Pequeno delay entre envios para evitar rate limit
await new Promise(r => setTimeout(r, 500));
}
return results;
}
Limites
Tamanho Máximo
100 MB por arquivo
Timeout
60 segundos para upload
Formatos
Apenas formatos suportados pelo WhatsApp
Rate Limit
10 uploads por minuto
⌘I