Conectar sem entregar a chave da conta
A conexão usa o Instagram API with Instagram Login — o fluxo oficial da Meta que autentica diretamente na conta profissional (Business ou Creator), sem precisar de uma Página do Facebook vinculada. Quem administra a clínica clica em “Conectar Instagram” no painel, é redirecionado pro próprio Instagram, autoriza as permissões abaixo, e volta. A senha nunca passa pelos servidores da Novixis — só um token de acesso emitido pela Meta, cifrado antes de ser salvo.
As 4 permissões que pedimos (e nenhuma a mais)
instagram_business_basic— identificar qual conta profissional foi conectada (usuário, nome, foto de perfil).instagram_business_content_publish— publicar imagens, Reels e Stories que a própria clínica aprovou no módulo editorial.instagram_business_manage_comments— ler, responder, ocultar e excluir comentários feitos na conta conectada.instagram_business_manage_messages— enviar e receber mensagens diretas (DM) em nome da conta conectada.
Não pedimos permissão de anúncios, catálogo de produtos ou curtida automática — a API da Meta nem oferece curtida automática, então não fingimos que temos esse recurso em nenhum lugar do produto.
Como uma publicação sai do rascunho pro Instagram
Publicar não é uma chamada só — é um processo de três etapas que a própria Meta exige, e que tratamos com cuidado porque cada etapa pode falhar de um jeito diferente:
- Criar o container de mídia. Enviamos a URL da imagem/vídeo pra Meta, que cria um “rascunho” interno (
media container). Imagem de feed usaimage_url; Reel usavideo_urlcommedia_type=REELS; Story aceita imagem ou vídeo, e detectamos qual é pela extensão do arquivo — nunca assumimos vídeo por padrão. - Esperar o processamento. A Meta processa a mídia de forma assíncrona — pode levar de segundos a minutos. Consultamos o status periodicamente (começando em 5 segundos, espaçando até 1 minuto) sem travar nenhum processo esperando; se o processamento não terminar depois de várias tentativas, a publicação é marcada como falha e some da fila.
- Publicar. Só quando o container está pronto (
FINISHED) chamamosmedia_publish. Esse passo é idempotente do lado da Meta — se a nossa conexão cair bem nesse momento e tentarmos de novo, reconsultamos o status antes de publicar de novo, então nunca duplicamos um post por causa de instabilidade de rede.
Quando a Meta diz “não agora”
A Graph API da Meta tem limite de uso, e de vez em quando devolve “Application request limit reached” ou simplesmente cai a conexão no meio do caminho. Nenhum dos dois casos vira “falhou” imediatamente — tratamos como algo temporário e tentamos de novo automaticamente, com espera crescente (minutos no caso de limite de uso, segundos a minutos no caso de rede), até um teto de tentativas. Só depois de esgotar essas tentativas — ou diante de um erro que realmente não vai se resolver sozinho, como formato de mídia inválido — a publicação é marcada como falha, com o motivo exato disponível pra quem está gerenciando.
Comentários e mensagens diretas
Comentários e DMs chegam por webhook (a Meta nos avisa em tempo real, não ficamos perguntando). A clínica decide o nível de automação: desde totalmente manual até respostas assistidas por IA — e mesmo no modo assistido, a IA nunca decide sozinha sobre assuntos clínicos, sensíveis ou ambíguos; esses casos são sempre encaminhados pra um humano da equipe. Toda mensagem/comentário fica associado à conta que a recebeu — nenhuma clínica enxerga interação de outra.
Segurança da integração
- Webhooks recebidos da Meta têm a assinatura validada (HMAC) antes de qualquer processamento — payload sem assinatura correta é rejeitado sem nem ser lido.
- O token de acesso é cifrado em repouso; a chave de cifra é separada das chaves usadas para outras finalidades (sessão, CPF, notas clínicas).
- Isolamento por empresa (RLS — row-level security) garante que uma consulta só alcança os comentários, mensagens e credenciais da empresa autenticada.
O que a integração não faz: não posta nada sem uma pessoa da clínica ter criado e aprovado o conteúdo, não gera curtida automática (a Meta não oferece esse recurso via API), e não acessa mensagens ou comentários de contas que a empresa não conectou.
Detalhamento formal de permissões e tratamento de dados: Como usamos o WhatsApp e o Instagram. Prazos de retenção e como solicitar exclusão: Política de Privacidade.
