Documentação da API
Webhooks, envio de mensagens, CRM e gerenciamento de grupos.
Autenticação
Todas as requisições devem incluir o token de autenticação no header Authorization.
Authorization: Bearer SEU_TOKEN_AQUI
O token é único para cada instância e pode ser encontrado no card da instância na página de Gerenciador de Conexões.
URL Base
https://back.onlyflow.com.br/api/v1/webhook
Envio de Mensagens
Enviar Mensagem de Texto — POST /send-text
Envia uma mensagem de texto para um contato.
Parâmetros:
phone(string, obrigatório) — Número do telefone (ex: "5511999999999")text(string, obrigatório) — Texto da mensagem
curl -X POST https://back.onlyflow.com.br/api/v1/webhook/send-text \
-H "Authorization: Bearer SEU_TOKEN_AQUI" \
-H "Content-Type: application/json" \
-d '{"phone": "5511999999999", "text": "Olá! Esta é uma mensagem de teste."}'
Enviar Imagem — POST /send-image
Envia uma imagem com legenda opcional.
phone(string, obrigatório)image(string, obrigatório) — URL pública da imagemcaption(string, opcional)
curl -X POST https://back.onlyflow.com.br/api/v1/webhook/send-image \
-H "Authorization: Bearer SEU_TOKEN_AQUI" \
-H "Content-Type: application/json" \
-d '{"phone": "5511999999999", "image": "https://exemplo.com/imagem.jpg", "caption": "Legenda (opcional)"}'
Enviar Vídeo — POST /send-video
Envia um vídeo com legenda opcional.
phone,video(obrigatórios),caption(opcional)
curl -X POST https://back.onlyflow.com.br/api/v1/webhook/send-video \
-H "Authorization: Bearer SEU_TOKEN_AQUI" \
-H "Content-Type: application/json" \
-d '{"phone": "5511999999999", "video": "https://exemplo.com/video.mp4", "caption": "Legenda (opcional)"}'
Enviar Arquivo — POST /send-file
Envia um arquivo (PDF, DOC, etc.).
phone,file,filename(obrigatórios),mimetype(opcional)
curl -X POST https://back.onlyflow.com.br/api/v1/webhook/send-file \
-H "Authorization: Bearer SEU_TOKEN_AQUI" \
-H "Content-Type: application/json" \
-d '{"phone": "5511999999999", "file": "https://exemplo.com/arquivo.pdf", "filename": "documento.pdf", "mimetype": "application/pdf"}'
Enviar Áudio — POST /send-audio
Envia um áudio para um contato.
phone,audio(obrigatórios) — URL pública do áudio
curl -X POST https://back.onlyflow.com.br/api/v1/webhook/send-audio \
-H "Authorization: Bearer SEU_TOKEN_AQUI" \
-H "Content-Type: application/json" \
-d '{"phone": "5511999999999", "audio": "https://exemplo.com/audio.mp3"}'
Gerenciamento de CRM
Mover Contato entre Colunas — POST /move-contact
Move um contato de uma coluna para outra no Kanban.
phone(string, obrigatório)columnId(string, obrigatório) — ID da coluna (short_id 1-5 ou UUID)
Use o short_id (1, 2, 3, 4, 5) para facilitar. Veja as colunas em GET /columns
curl -X POST https://back.onlyflow.com.br/api/v1/webhook/move-contact \
-H "Authorization: Bearer SEU_TOKEN_AQUI" \
-H "Content-Type: application/json" \
-d '{"phone": "5511999999999", "columnId": "4"}'
Listar Contatos — GET /contacts
Retorna todos os contatos da instância.
curl -X GET https://back.onlyflow.com.br/api/v1/webhook/contacts \
-H "Authorization: Bearer SEU_TOKEN_AQUI" \
-H "Content-Type: application/json"
Resposta: status, count, contacts (id, phone, name, profilePicture, columnId, unreadCount, lastMessage, lastMessageAt)
Listar Colunas do Kanban — GET /columns
Retorna todas as colunas com id, shortId (1-5), name, order, color.
curl -X GET https://back.onlyflow.com.br/api/v1/webhook/columns \
-H "Authorization: Bearer SEU_TOKEN_AQUI"
Use o shortId (1-5) no parâmetro columnId para facilitar.
Listar Labels — GET /labels
Retorna todas as labels (etiquetas) disponíveis.
curl -X GET https://back.onlyflow.com.br/api/v1/webhook/labels \
-H "Authorization: Bearer SEU_TOKEN_AQUI"
Adicionar Label — POST /add-label
Parâmetros: phone, labelId (short_id ou UUID).
curl -X POST https://back.onlyflow.com.br/api/v1/webhook/add-label \
-H "Authorization: Bearer SEU_TOKEN_AQUI" \
-H "Content-Type: application/json" \
-d '{"phone": "5511999999999", "labelId": "1"}'
Remover Label — POST /remove-label
Parâmetros: phone, labelId.
curl -X POST https://back.onlyflow.com.br/api/v1/webhook/remove-label \
-H "Authorization: Bearer SEU_TOKEN_AQUI" \
-H "Content-Type: application/json" \
-d '{"phone": "5511999999999", "labelId": "1"}'
Respostas da API
Sucesso
{"status": "success", "message": "...", "data": {...}}
Erro
{"status": "error", "message": "...", "statusCode": 400}
Códigos HTTP: 200 (sucesso), 400 (validação), 401 (token inválido), 404 (não encontrado), 500 (erro interno).
Gerenciamento de Grupos
Gerencie grupos do WhatsApp: listar, criar, atualizar nome/descrição/foto, configurações, código de convite, mencionar todos, sair do grupo.
- GET /api/groups — Listar grupos (query: instanceId)
- POST /api/groups/create — Criar grupo (instanceId, subject, description, participants)
- POST /api/groups/validate-participants — Validar participantes
- POST /api/groups/update-subject — Atualizar nome do grupo
- POST /api/groups/update-description — Atualizar descrição
- POST /api/groups/update-picture — Atualizar foto (multipart/form-data)
- POST /api/groups/update-settings — Configurações (announcement, locked, etc.)
- GET /api/groups/invite-code — Obter código de convite
- POST /api/groups/mention-everyone — Mencionar todos
- POST /api/groups/leave — Sair do grupo
Base URL para grupos: https://back.onlyflow.com.br. Sempre use o header Authorization: Bearer SEU_TOKEN_AQUI.
Exemplo em JavaScript
const API_BASE_URL = 'https://back.onlyflow.com.br/api/v1/webhook';
const TOKEN = 'SEU_TOKEN_AQUI';
async function enviarTexto(phone, text) {
const response = await fetch(`${API_BASE_URL}/send-text`, {
method: 'POST',
headers: { 'Authorization': `Bearer ${TOKEN}`, 'Content-Type': 'application/json' },
body: JSON.stringify({ phone, text })
});
return await response.json();
}
async function moverParaFinalizados(phone) {
const response = await fetch(`${API_BASE_URL}/move-contact`, {
method: 'POST',
headers: { 'Authorization': `Bearer ${TOKEN}`, 'Content-Type': 'application/json' },
body: JSON.stringify({ phone, columnId: '4' })
});
return await response.json();
}
enviarTexto('5511999999999', 'Olá!').then(console.log);
Informações importantes
- Formato do telefone: Apenas números, com código do país (ex: 5511999999999).
- URLs de mídia: Devem ser públicas e acessíveis.
- Short ID colunas: Use 1, 2, 3, 4, 5 em vez de UUIDs.
- Short ID labels: Idem.
- Token: Único por instância, permanente até a instância ser deletada.
- Atualizações: Mudanças via API refletem no frontend via WebSocket.