Guia dos endpoints disponíveis no Lumi neste momento. A API combina autenticação do painel, gerenciamento de instâncias, comandos WhatsApp assíncronos, consulta de dados locais e GraphQL usado pelo dashboard.
Base URLhttps://lume-io.com
Autenticação públicaX-API-Key ou Bearer
Execução WhatsAppComandos em fila
Acesso
Autenticação
O painel usa cookie de sessão. A API pública aceita chave por X-API-Key ouAuthorization: Bearer SUA_CHAVE. Existem chaves de usuário para gerenciar instâncias e chaves de instância para executar comandos WhatsApp.
Gera uma nova API key global do tenant. A chave completa aparece somente nessa resposta.
Cookie de sessão
Multi-instância
Instâncias
Uma instância representa uma conexão WhatsApp isolada dentro do tenant. A User API key global identifica o usuário e o workspace, então a criação não recebe username no body. O camponame é o nome da instância.
GET/api/instances
Lista as instâncias WhatsApp do usuário autenticado.
User API key
POST/api/instances
Cria uma instância para o usuário dono da User API key e retorna a API key da instância uma única vez.
Fluxo recomendado: crie a instância, chame POST /api/instances/{instance_id}/qr, consulte GET /api/instances/{instance_id}/session atéqr_available ser verdadeiro e então carregueGET /api/instances/{instance_id}/qr.png.
GET/api/instances/{instance_id}/session
Consulta o status da sessão WhatsApp de uma instância.
User API key
POST/api/instances/{instance_id}/qr
Enfileira o comando para gerar QR Code de conexão.
Endpoints públicos para construir fluxos em cima dos eventos recebidos por webhook. Use aInstance API key da instância conectada e acompanhe comandos assíncronos emGET /commands/{id}.
POST/message/send*
Enviar mensagem
Escolha o tipo de envio no exemplo ao lado. O cURL muda entre texto, mídia, áudio, sticker, localização, contato, enquete, resposta, reação, edição, remoção e presença, mantendo a mesma autenticação por X-API-Key da instância.
numberstring
Destino privado. Alternativo a jid.
jidstring
Destino completo, incluindo grupos.
textstring
Novo texto da mensagem.
media_typestring
image, video ou document.
urlstring
URL opcional associada ao local.
base64string
Sticker em base64, com ou sem data URL.
mimetypestring
MIME type. Padrão: image/webp.
captionstring
Legenda para imagem, vídeo ou documento.
file_namestring
Nome do arquivo quando media_type=document.
pttboolean
Quando true, envia como áudio de voz.
secondsnumber
Duração aproximada em segundos.
latitudenumber
Latitude da localização.
longitudenumber
Longitude da localização.
namestring
Pergunta ou título da enquete.
addressstring
Endereço exibido no WhatsApp.
display_namestring
Nome exibido do contato.
vcardstring
Conteúdo vCard completo.
optionsstring[]
Lista com duas ou mais opções.
selectable_options_countnumber
Quantidade máxima de opções selecionáveis. Use 1 para escolha única.
message_idstring
ID da mensagem enviada pela instância.
participant_jidstring
Participante original quando necessário em grupo.
emojistring
Emoji da reação. Envie string vazia para remover.
from_meboolean
Padrão true para apagar mensagem enviada pela instância.
Status do WhatsApp chegam pelo JID status@broadcast, mas o Lumi organiza no painel por contato. A API pública permite postar texto, postar imagem/video e marcar status recebidos como vistos.
POST/status/sendText
Publica um Status/Story de texto usando a instância WhatsApp conectada.
Endpoint interno do dashboard para servir mídia baixada/descriptografada de mensagens e Status recebidos.
Cookie de sessão
Preview de mídia: imagens, vídeos e áudios recebidos após o deploy são baixados/descriptografados pelo wa-gateway, salvos no volume lumi_media e exibidos no dashboard pela rota autenticada /internal/instances/{instance_id}/media/{message_id}. Mídias antigas podem aparecer como metadado caso tenham sido recebidas antes desse recurso.
WhatsApp
Grupos
Endpoints de grupo retornam 202 Accepted quando enfileiram comandos. Consulte/commands/{id} para ver resultado, falha ou processamento.
GET/groups
Enfileira listagem de grupos do WhatsApp conectado.
Consulta o status e resultado de um comando enfileirado.
Instance API key
Também existem comandos para /group/photo, /group/invite-link,/group/invite-reset, /group/invite-info, /group/locked,/group/announce, /group/requests, /group/requests via POST,/group/join, /group/leave, /group/join-approval,/group/member-add-mode e rotas de /community/*.
Conversas
Chats e Contatos
Consultas locais e comandos de estado para chats, contatos e labels.
GET/contacts
Lista contatos sincronizados da instância.
Instance API key
GET/labels
Lista labels locais da instância.
Instance API key
POST/chat/find
Busca um chat por JID ou número.
Instance API key
Body
{
"number": "5511999999999"
}
POST/chat/check
Verifica se um número existe no WhatsApp.
Instance API key
Body
{
"number": "5511999999999"
}
POST/profile
Consulta perfil e foto de um contato.
Instance API key
Body
{
"number": "5511999999999"
}
POST/v1/groups/{group_jid}/messages
Endpoint legado para enfileirar mensagem de texto usando o JID na URL.
Instance API key
Body
{
"text": "Mensagem enviada pelo Lumi"
}
GET/v1/outbound-messages/{id}
Consulta o status de uma mensagem enfileirada.
Publico
Comandos adicionais disponíveis: /chat/labels, /chat/pin,/chat/mute, /chat/archive, /chat/read,/chat/block, /chat/blocklist, /chat/delete e/label/edit. Para enviar para grupo no endpoint recomendado, use{"jid":"[email protected]"} no body de /message/sendText.
Eventos
Webhooks
A configuração de webhook está disponível hoje via GraphQL no dashboard. Cada instância possui URL, ativação, filtros de eventos, exclusões e histórico de entregas.
O endpoint POST /graphql usa cookie de sessão e alimenta o painel operacional.
query Dashboard($instance_id: String) {
dashboard(instance_id: $instance_id) {
session {
id
status
qr_available
qr_expires_at
}
instances {
id
name
status
api_key_prefix
}
groups {
jid
name
monitored
}
}
}
Queries
dashboard(instance_id)
webhookDeliveries(instance_id, limit)
Mutations
createInstance(name, profile_emoji)
rotateInstanceAPIKey(id)
deleteInstance(id)
setGroupMonitoring(jid, monitored, instance_id)
sendGroupMessage(group_jid, instance_id, text)
sendMediaMessage(...), sendAudioMessage(...) e sendStickerMessage(...)
sendLocationMessage(...), sendContactMessage(...) e sendPollMessage(...)
sendReplyMessage(...), sendReactionMessage(...), editMessage(...) e deleteMessage(...)
sendPresence(instance_id, jid, state, media)
requestWhatsAppQR(instance_id)
updateInstanceWebhook(...)
updateInstanceClearHistory(id, enabled)
sendTestWebhook(instance_id)
Operação
Observabilidade
GET /healthz retorna o status da API. GET /metrics expõe métricas Prometheus e exige token por Authorization: Bearer ou X-Metrics-Token.