Fluxos

Como um agente de IA lista, lê, cria e publica fluxos de conversa sem quebrar o atendimento real.

5 min de leitura Atualizado em 4 de set. de 2026

Como operar fluxos de conversa pela API interna. Pré-requisito: Autenticação. O que cada bloco faz está em Blocos e armadilhas; o passo a passo humano está em Gestão de fluxos.

Alterar um fluxo sem quebrar

Ciclo obrigatório — backup → modifica → publica → confirma:

// 1. BACKUP: leia o fluxo atual
const atual = await (await ctx.get(`/flowbuilder/flow/${ID}`, { headers: H })).json();

// 2. Liste todos quando precisar achar ID por nome
const todos = await (await ctx.get('/flowbuilder/all/get', { headers: H })).json();
// → { flows: [{ id, name, folderId, active, channel }] }

// 3. Criar fluxo vazio (quando for novo; não toca nos existentes)
const criado = await ctx.post('/flowbuilder', { headers: H, data: { name: 'Nome', shortcuts: [], folderId: null, channel: 'whatsapp' } });

// 4. PUBLICAR nodes + conexões (idFlow como STRING; retorno "ok" = sucesso, {} = payload errado)
await ctx.post('/flowbuilder/flow', { headers: H, data: { idFlow: String(ID), nodes, connections } });

// 5. CONFIRMAR com GET após pausa — nunca com o GET imediato

⚠️ Leitura suja pós-escrita: logo após um POST /flowbuilder/flow, o GET pode devolver o estado anterior. Entre deploys no mesmo fluxo, espere ~4–5s e re-verifique antes de modificar de novo — senão o 2º POST sobrescreve com base velha e come a mudança do 1º.

Pastas

  • POST /folders/flow cria a pasta mas não devolve o id: faça GET /folders/flow em seguida e filtre pelo nome.
  • Mover fluxo para pasta é PUT /flowbuilder/folder/move com { idFlow, idFolder }.
  • Não existe PUT /flowbuilder/{id} (retorna 404) — conteúdo de fluxo só pelo POST /flowbuilder/flow do ciclo acima.

Import: confira as conexões

Ao importar um fluxo, o Sagazchat pode trazer os nós mas soltar conexões de sub-grafos. Sempre rode uma BFS a partir do start após importar e religue nós inalcançáveis ou sem saída antes de ativar.