Status do intent (polling)
Consulta o estado de uma execução assíncrona do Sequential Thinking após runWithAgents com async: true
Endpoint de leitura para polling do estado de um intent. Use após POST /runWithAgents quando a resposta imediata traz apenas { intentId, status: "planning" } — seja com async: true (HTTP 200) ou com o caminho síncrono sob ST_RUNWITHAGENTS_202_ENABLED (HTTP 202).
Alternativas em tempo real: WebSocket /sequential-thinking ou GET /getKeeperSnapshot para histórico de eventos.
Endpoint
GET /getIntentStatus
Autenticação
Exige token Bearer. O KrakenD injeta X-Host-Id e X-Domain-Id quando aplicável. O hostId gravado no context do intent precisa coincidir com o host resolvido a partir do token — caso contrário, 403.
Authorization: Bearer {TOKEN}
Em ambiente local, quando os headers do gateway não existem, passe hostId, hostSlug ou domainId na query string (mesma resolução que runWithAgents).
Parâmetros (query string)
ID da execução retornado por runWithAgents (síncrono ou assíncrono).
UUID do host. Obrigatório apenas em ambiente local quando o token/gateway não resolve identidade.
Slug do host (alternativa ao hostId em ambiente local).
Exemplo
curl -G "{{BASE_URL}}/getIntentStatus" \
-H "Authorization: Bearer {{TOKEN}}" \
--data-urlencode "intentId=uuid-da-execucao"
Ambiente local
curl -G "http://localhost:8080/api/externalAPIs/public/sequentialThinking/getIntentStatus" \
--data-urlencode "intentId=uuid-da-execucao" \
--data-urlencode "hostId=uuid-do-host-aqui"
Resposta
{
"data": {
"intentId": "uuid-da-execucao",
"status": "executing",
"currentStepIndex": 2,
"totalSteps": 5,
"result": {
"success": false,
"intentId": "uuid-da-execucao",
"steps": []
}
}
}
Quando a execução falhou:
{
"data": {
"intentId": "uuid-da-execucao",
"status": "failed",
"currentStepIndex": 1,
"totalSteps": 3,
"error": "Mensagem de erro persistida"
}
}
Campos da resposta
Fluxo assíncrono recomendado
POST /runWithAgentscom"async": true→ HTTP 200, ou semasyncquandoST_RUNWITHAGENTS_202_ENABLED→ HTTP 202. Em ambos os casos o corpo traz{ "intentId": "…", "status": "planning" }.- Poll
GET /getIntentStatus?intentId=…atéstatusser terminal (completed,failed,cancelled,awaiting_input, etc.). - Quando terminal, leia
result(se presente) para obterfinalAnswer,stepsemetrics. - Opcional: escute eventos em tempo real via socket
/sequential-thinkingou recupere histórico comgetKeeperSnapshot.
async function runAsyncAndWait(token, instructions) {
const startRes = await fetch(`${BASE_URL}/runWithAgents`, {
method: 'POST',
headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },
body: JSON.stringify({ instructions, async: true }),
});
// Aceite 200 (async:true) ou 202 (sync + ST_RUNWITHAGENTS_202_ENABLED)
const start = await startRes.json();
const intentId = start.data.intentId;
for (;;) {
const snap = await fetch(
`${BASE_URL}/getIntentStatus?intentId=${encodeURIComponent(intentId)}`,
{ headers: { Authorization: `Bearer ${token}` } },
).then(r => r.json());
const { status, result } = snap.data;
if (['completed', 'failed', 'cancelled', 'awaiting_input'].includes(status)) {
return { status, result };
}
await new Promise(r => setTimeout(r, 1500));
}
}
Erros
| Código | Descrição |
|---|---|
400 | intentId ausente — O parâmetro “intentId” é obrigatório. |
401 | Token inválido ou host não resolvido |
403 | Intent pertence a outro host |
404 | Intent não encontrado |
500 | Erro interno do servidor |