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 imagem
  • caption (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.