POST /conversation/actions executa um grupo de até 10
ações sobre uma única conversa, na ordem em que você as envia. Em vez
de fazer N requisições para etiquetar, deixar uma nota e executar o AI, você
as encadeia em uma única requisição.
As 12 ações
Cada elemento do arrayactions leva um campo type. Quase todas espelham um
endpoint individual da API; send_quick_reply_or_template é a exceção:
envia a quick reply se a janela de 24h estiver aberta, ou o
template se estiver fechada — o modo é decidido pelo servidor em
tempo de execução.
Mensagens
Mensagens
send_message— envia uma mensagem (texto, mídia, quick reply ou template).send_quick_reply_or_template— quick reply ou template, conforme a janela.
Etiquetas
Etiquetas
assign_label— atribui uma etiqueta à conversa.remove_label— remove uma etiqueta da conversa.
Caixa e notas
Caixa e notas
assign_mailbox— move a conversa para uma caixa de entrada.context_note— deixa uma nota interna.mark_resolved— marca a conversa como resolvida.mark_pending— marca a conversa como pendente.
AI
AI
run_ai— executa o funcionário AI sobre a conversa.ai_assistance— gera uma resposta sugerida com o AI.assign_ai_employee— atribui um funcionário AI à conversa.unassign_ai— remove o funcionário AI (passa a conversa para um humano). Sem campos; idempotente (no-op se a conversa já não tiver AI).
Um grupo admite até 10 ações, das quais no máximo 3 podem
disparar o AI. Excedê-lo falha com
BATCH_LIMIT_EXCEEDED.Como é executado
1
Validação síncrona
A API valida a requisição. Se o preflight a rejeitar (ex. o AI não tem
tokens), responde um
4xx síncrono e nenhuma ação é executada.2
202 Accepted
Se passar na validação, responde
202 imediatamente; o grupo roda em
background.3
Execução em ordem
As ações são executadas uma por uma, na ordem enviada.
Stop on error
stop_on_error controla o que acontece quando uma ação falha durante a execução:
Escalada para pending
escalate_on_error controla se uma falha do grupo escala a conversa para inbox_status='pending' para revisão humana:
Erros de input do integrador (
*_NOT_FOUND, *_AMBIGUOUS, WINDOW_CLOSED, TEMPLATE_NOT_APPROVED, etc.), os guards de billing (WALLET_BLOCKED, VISION_WALLET_BLOCKED) e o guard de integridade do mark_resolved (TRANSCRIPTION_REQUIRED_TO_RESOLVE) nunca escalam — corrija e tente novamente sem intervenção humana.Exemplo
Etiquetar, deixar uma nota e executar o AI, sem interromper ante falhas:unassign_ai, sem campos. É
idempotente: se a conversa já não tiver AI, é um no-op bem-sucedido.
Só precisa passar para um humano e quer o resultado na hora? O endpoint síncrono
POST /conversation/unassign-ai
faz exatamente isto e responde 200 com o resultado real
({ "ai_employee": null, "schedule_action": "cancelled" | "none" }), sem o
modelo assíncrono do grupo.