Execuções
Acompanhe uma execução de workflow nó a nó, leia o resultado de cada nó, liste execuções passadas e cancele agora ou quando os nós em andamento terminarem.
Uma execução é cada vez que um workflow inteiro é executado. Ela registra o status da execução, quantos nós já terminaram, os créditos usados e o estado e o resultado de cada nó. Ela também agrupa os jobs que a execução criou, um para cada nó de IA. POST /v1/workflows/:id/run retorna um executionId, e os endpoints de execuções acompanham essa execução até o fim.
Endpoints
| Método | Caminho | O que faz |
|---|---|---|
GET | /v1/workflow-executions/:id | Uma execução: status, contagens de nós, créditos e o estado de cada nó. |
GET | /v1/workflow-executions/:id/stream | A mesma execução como um fluxo de server-sent events. |
GET | /v1/workflows/:id/executions | As execuções de um workflow, em páginas. |
POST | /v1/workflow-executions/:id/cancel | Cancela uma execução, agora ou depois que os nós em andamento terminarem. |
GET | /v1/api/status/:execId | A via dos tokens de API: status, contagens de nós e créditos usados de uma execução. |
GET | /v1/api/result/:execId | A via dos tokens de API: as saídas de uma execução terminada. |
As duas últimas pertencem às execuções iniciadas com POST /v1/api/run. Elas estão descritas em Executar um workflow com novos valores de entrada.
Obter uma execução
curl -s https://app.nodaro.ai/v1/workflow-executions/3f9e2b1a-7c6d-4e5f-8a9b-0c1d2e3f4a5b \
-H "Authorization: Bearer $NODARO_API_KEY"const { data } = await client.executions.get(executionId)
console.log(data.status, `${data.completedNodes}/${data.totalNodes}`)nodaro executions get 3f9e2b1a-7c6d-4e5f-8a9b-0c1d2e3f4a5b --json{
"data": {
"id": "3f9e2b1a-7c6d-4e5f-8a9b-0c1d2e3f4a5b",
"workflowId": "8c2d7f1e-3a4b-4c5d-9e6f-7a8b9c0d1e2f",
"status": "running",
"triggerType": "manual",
"totalNodes": 4,
"completedNodes": 2,
"failedNodes": 0,
"totalCreditsUsed": 45,
"errorMessage": null,
"nodeStates": {
"text-prompt-1": { "status": "completed", "output": { "text": "a knight on a hill at dawn" } },
"generate-image-1": { "status": "completed", "output": { "imageUrl": "https://…/knight.png" } },
"generate-video-1": { "status": "running" },
"add-captions-1": { "status": "pending" }
},
"completedAt": null
}
}| Campo | Significado |
|---|---|
status | O status da execução. Veja a tabela abaixo. |
triggerType | O que iniciou a execução, como manual, webhook, schedule, app_run ou single-node. |
totalNodes, completedNodes, failedNodes | Contagens de nós. Mostre o progresso como completedNodes / totalNodes. |
totalCreditsUsed | Os créditos usados pela execução até agora. |
errorMessage | Por que a execução falhou ou parou, em palavras. |
nodeStates | O estado de cada nó, indexado pelo ID do nó. |
completedAt | Quando a execução terminou, ou null. |
O ID de um job avulso de um único nó também funciona aqui: o servidor responde com o mesmo formato, descrevendo esse nó. Um ID que não existe ou não é seu responde 404.
Status das execuções
| Status | Final | Significado |
|---|---|---|
pending | Não | A execução está na fila. |
running | Não | Os nós estão em execução. |
stopping | Não | Você cancelou com after_current: os nós em andamento terminam e, depois, a execução para. |
completed | Sim | A execução terminou. |
failed | Sim | A execução falhou. errorMessage diz por quê. |
cancelled | Sim | A execução foi cancelada. |
timed_out | Sim | O tempo da execução se esgotou. |
discarded | Sim | Você cancelou com discard: os jobs em andamento terminaram sem atualizar o canvas. |
Estados dos nós
Cada entrada de nodeStates tem um status: pending, running, completed, failed ou skipped. Um nó com falha também traz o error dele.
Um nó concluído traz o resultado em output. As chaves dependem da saída do nó: procure url, imageUrl, videoUrl, audioUrl, resultUrl ou text, nessa ordem.
Um nó com falha também pode trazer output, quando a execução guardou um resultado estruturado. Hoje, esse é o caso dos nós de criação de cenas 3D. Uma cena cuja revisão visual falhou depois de todas as correções ainda publicou um rascunho, e o nó falha com esse rascunho em output.plan. Daí vêm duas regras:
- Verifique o campo, não o status. Um nó em
pendingourunningnunca temoutput, e outros tipos de nó podem guardar resultados no futuro. - Um
outputpresente não é sucesso. O nó falhou; ele só guardou alguma coisa.
O SDK exporta nodeStateMayCarryOutput(status), que é true para completed e failed, e o mesmo par como OUTPUT_BEARING_NODE_STATUSES.
Esperar uma execução terminar
Consulte periodicamente, a cada 2 a 5 segundos, até o status ser final:
const { executionId } = await client.workflows.run(workflowId)
const final = ['completed', 'failed', 'cancelled', 'timed_out', 'discarded']
while (true) {
const { data } = await client.executions.get(executionId)
console.log(`${data.completedNodes}/${data.totalNodes} nodes done`)
if (final.includes(data.status)) {
if (data.status !== 'completed') throw new Error(`Run ${data.status}: ${data.errorMessage ?? 'no message'}`)
console.log(`Done. Used ${data.totalCreditsUsed} credits.`)
break
}
await new Promise((r) => setTimeout(r, 2_000))
}while true; do
STATUS=$(curl -s -H "Authorization: Bearer $NODARO_API_KEY" \
"https://app.nodaro.ai/v1/workflow-executions/$EXEC" | jq -r .data.status)
echo "Status: $STATUS"
case "$STATUS" in completed|failed|cancelled|timed_out|discarded) break;; esac
sleep 3
donenodaro executions get 3f9e2b1a-7c6d-4e5f-8a9b-0c1d2e3f4a5b --watchCom --watch, a CLI consulta periodicamente até a execução terminar e sai com o código 0 em caso de sucesso, 2 quando a execução falhou e 130 quando ela foi cancelada. Com --json, ela imprime o payload e sai normalmente, então verifique .status você mesmo.
GET /v1/workflow-executions/:id/stream envia o mesmo estado da execução como server-sent events enquanto a execução está em andamento, com as mesmas regras de output dos nós da leitura acima. A consulta periódica é a opção mais simples para a maioria das integrações.
Listar as execuções de um workflow
GET /v1/workflows/:id/executions retorna as execuções de um workflow em páginas, como { data, nextCursor }. A lista inclui os jobs avulsos de um único nó desse workflow ao lado das execuções completas.
| Parâmetro de consulta | Significado |
|---|---|
limit | O tamanho da página. |
cursor | O nextCursor da página anterior. |
status | Status separados por vírgula, por exemplo pending,running. |
source | editor deixa de fora as execuções iniciadas por apps, webhooks e agendamentos. all inclui essas execuções. |
curl -s "https://app.nodaro.ai/v1/workflows/$WORKFLOW_ID/executions?limit=20&status=completed" \
-H "Authorization: Bearer $NODARO_API_KEY"const { data, nextCursor } = await client.executions.listForWorkflow(workflowId, {
limit: 20,
status: 'completed',
})Cancelar uma execução
POST /v1/workflow-executions/:id/cancel interrompe uma execução. O mode opcional no corpo decide o que acontece com os nós que já estão em execução:
mode | O que acontece | Status final |
|---|---|---|
| nenhum | A execução para agora. Os jobs em andamento são cancelados, e os créditos reservados para eles são reembolsados. | cancelled |
after_current | Os nós em andamento terminam, e os resultados deles vão para o canvas e para a sua biblioteca. Depois, a execução para. | stopping e, depois, o status final |
discard | Nenhum nó novo é iniciado. Os jobs em andamento não podem ser interrompidos no modelo, então eles terminam e são salvos na sua biblioteca, mas os resultados não são gravados no canvas. Não há reembolso, porque esses jobs foram concluídos. | discarded |
A resposta é { "success": true }.
curl -s -X POST https://app.nodaro.ai/v1/workflow-executions/$EXEC/cancel \
-H "Authorization: Bearer $NODARO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"mode": "after_current"}'await client.executions.cancel(executionId) // now
await client.executions.cancel(executionId, { mode: 'after_current' }) // after running nodes
await client.executions.cancel(executionId, { mode: 'discard' }) // stop schedulingnodaro executions cancel 3f9e2b1a-7c6d-4e5f-8a9b-0c1d2e3f4a5b # now
nodaro executions cancel 3f9e2b1a-7c6d-4e5f-8a9b-0c1d2e3f4a5b --mode stopping # after running nodesPara interromper uma geração em vez de uma execução inteira, cancele o job dela: veja Jobs.
Execuções e jobs
Cada nó de IA de uma execução cria um job, e nodeStates traz o resultado de cada nó assim que o job dele termina. Leia a execução para acompanhar o andamento geral. Leia um job para ver os detalhes de uma geração: o error_hint, o credit_status ou tudo o que foi enviado ao modelo em input_data.
Quando um gatilho inicia o workflow, como uma chamada a um Gatilho de webhook (Webhook Trigger) ou o disparo de um Gatilho agendado (Schedule Trigger), isso também gera uma execução, com triggerType webhook ou schedule. Veja Webhooks.
Perguntas frequentes
Páginas relacionadas
Workflows
Jobs
Webhooks
Execução de workflows
Erros
Última atualização
Jobs
Consulte status e resultados de jobs, leia dicas de falha e créditos, verifique 100 jobs em uma chamada, cancele jobs e pare ou continue o Gerar vídeo Pro.
Envio de arquivos
Envie imagens, vídeo e áudio ao Nodaro com POST /v1/upload, copie de URLs, importe vídeos de redes sociais, corte mídia salva grátis e liste a biblioteca.