Endpoint de leitura para diagnóstico. Retorna o que ficou registrado no sequentialKeeper (cache do motor) sobre uma execução: a sequência de eventos emitidos, snapshot de contexto e correlações de sessão.

Use quando precisar investigar uma execução já encerrada — por exemplo, num atendimento de suporte (“cliente reclama que a resposta veio errada às 14:30”), em troubleshooting de produção, ou para reconstruir contexto para um replay.

Este endpoint não substitui a escuta em tempo real pelo socket /sequential-thinking. Ele recupera o que foi registrado, com TTL: eventos ficam 1h em cache; contexto dinâmico fica 3h. Após esse prazo, o histórico vai apenas para a persistência em PostgreSQL (não exposta por este endpoint).

Endpoint

GET /getKeeperSnapshot

Autenticação

Exige token Bearer. O KrakenD injeta X-Host-Id e X-Domain-Id quando aplicável. Em ambiente local, o hostId pode ir nos headers manualmente.

Authorization: Bearer {TOKEN}

Parâmetros (query string)

Ao menos um dos identificadores (sessionId, intentId ou requestControlId) é necessário para localizar o snapshot.

sessionId
string

ID da sessão WebSocket. Use quando quiser ver tudo o que aconteceu numa sessão de usuário (pode incluir várias execuções encadeadas).

intentId
string (UUID)

ID da execução específica. Use quando o problema está localizado num pedido — é o caminho mais direto.

requestControlId
string

ID de controle de requisição (gerado no gateway/orquestrador externo). Use quando seu sistema externo correlaciona pedidos por esse ID e você só tem ele à mão.

limit
integer
default: "50"

Quantidade máxima de eventos a retornar. Máximo 200. O servidor devolve os mais recentes.

Exemplo

curl -X GET "{{BASE_URL}}/getKeeperSnapshot?intentId=uuid-da-execucao&limit=100" \
  -H "Authorization: Bearer {{TOKEN}}"

Resposta

{
  "data": {
    "intentId": "uuid-da-execucao",
    "sessionId": "uuid-da-sessao",
    "requestControlId": "req-12345",
    "hostId": "uuid-do-host",
    "conversationId": "uuid-da-conversa",
    "events": [
      {
        "type": "plan_ready",
        "intentId": "uuid-da-execucao",
        "seq": 7,
        "chapterKey": "planning",
        "timestamp": "2026-04-26T14:30:01.234Z",
        "payload": { "totalSteps": 3 }
      },
      {
        "type": "step_completed",
        "seq": 12,
        "chapterKey": "execution",
        "payload": { "stepNumber": 1, "action": "ragSearch", "progress": 33 }
      }
    ],
    "context": {
      "entries": []
    }
  }
}

Campos da resposta

data
object

O que esperar

  • O endpoint só retorna o que ainda está no cache. Execuções com mais de 1h podem voltar sem events. Para histórico permanente, recorra à persistência interna (não exposta por API pública).
  • A ordem dos eventos é a mesma que o socket emitiu, com seq monotônico.
  • Eventos sensíveis (que carregavam dados privados) podem ter o payload reduzido conforme política de retenção.

Erros

CódigoDescrição
400Nenhum identificador (sessionId, intentId ou requestControlId) foi enviado
401Token inválido ou ausente
404Snapshot não encontrado (expirado ou nunca existiu)
500Erro interno do servidor