Skip to main content

Visão Geral

Flows conversacionais implantados expõem uma API de sessão de chat na URL da automação. Em vez de uma única execução /kickoff, você cria uma sessão, envia mensagens do usuário como turnos, opcionalmente transmite tokens e eventos de runtime, e retoma pausas HITL quando um turno precisa de feedback humano.
O chat de Flow conversacional é experimental. Os endpoints só ficam disponíveis quando o Flow implantado reporta conversational: true e handle_turn: true em GET /inspect.
Para construir o Flow em si (conversational = True, handle_turn, routers, tracing), consulte o guia open-source Conversational Flows.

Pré-requisitos

  1. Implante uma automação Flow que implemente turnos conversacionais (handle_turn).
  2. Copie o bearer token da aba Status da automação (o mesmo token usado em /kickoff).
  3. Confirme que o chat está habilitado via /inspect (abaixo).
Todas as requisições usam:
Os exemplos deste guia usam a base https://your-flow-url.crewai.com.

Descobrir capacidade de chat

Procure por flow.chat:
Se qualquer flag for falsa, os endpoints de chat retornam 404 com "Conversational flow chat is not available".

Loop de chat ponta a ponta

1

Iniciar uma sessão

Crie uma sessão de chat. Opcionalmente registre um webhook de turno concluído e webhooks de eventos para a vida da sessão.
Resposta:
Um body vazio ({} ou sem body) é válido quando você não precisa de webhooks.
2

Enviar uma mensagem do usuário

Enfileire um turno para a sessão:
Resposta:
Roles aceitos em messageHistory: user, assistant, system, tool.
3

Aguardar o fim do turno

Faça polling do turno com o kickoff_id retornado (mesma API de status de um kickoff normal de Flow):
Apenas um turno pode ficar ativo por sessão. Um segundo /message enquanto active_kickoff_id estiver definido retorna 409:
Aguarde até o histórico mostrar active_kickoff_id: null (ou o turno atingir status terminal / pausa) antes de enviar a próxima mensagem.
4

Ler o histórico da sessão

Streaming de um turno

O streaming é opcional. Use quando a UI precisar de tokens ou eventos de runtime durante o turno. Os frames sempre incluem tipos de ciclo de vida (turn_started, turn_completed, turn_failed, token, error). Frames event adicionais podem ser filtrados com o query param events (* ou lista separada por vírgulas).

Opção A: mensagem HTTP + anexar SSE

  1. POST /chat/{session_id}/message com "stream": true.
  2. Anexe-se ao turno ativo:
SSE retorna frames JSON text/event-stream (data: {...}), mais comentários de keepalive. O stream termina em turn_completed ou turn_failed. Se não houver turno ativo, este endpoint retorna 409 (No active chat turn).

Opção B: WebSocket (anexar ou enviar)

Auth: passe o bearer token como query param token, ou como header Authorization: Bearer ... quando o cliente suportar headers em WebSocket. Comportamento:
  • Turno ativo já em execução — o socket anexa e emite primeiro turn_started com data.status: "attached", depois transmite frames até um tipo terminal.
  • Sem turno ativo — envie uma mensagem JSON para enfileirar um turno e então consuma o stream:
O servidor responde com turn_started (status: "queued") e então frames do stream para aquele kickoff_id. Use last_event_id / lastEventId para retomar após desconexões.

Exemplos de frames do stream

HITL dentro de uma sessão de chat

Se um turno pausar para feedback humano (status / estado PAUSED), retome com o mesmo endpoint de resume de Flow usado em execuções sem chat:
Em seguida, faça polling do kickoff_id de resume da resposta. Aguarde até /history mostrar active_kickoff_id: null antes de enviar a próxima mensagem de chat. Veja Workflows HITL e Gerenciamento HITL para Flows para a UX de revisão na plataforma.

Referência da API

Erros comuns

Relacionados

Conversational Flows

Construa Flows multi-turno com handle_turn, routers e tracing.

Kickoff Crew / Flow

Kickoff de execução única e polling de status na URL da implantação.

Webhook Streaming

Formato do payload de webhook de eventos e opções de autenticação.

Gerenciamento HITL para Flows

Revisão humana com email-first para etapas pausadas de Flow.