API Logs and Monitoring
Logging endpoints are split across Core/api.py and Core/api_logging.py.
Workflow Log Retrieval
- GET /api/projects/:project_id/workflows/:workflow_id/logs
- GET /api/workflows/:project_id/:workflow_id/logs
- GET /api/workflows/:project_id/:workflow_id/executions/:execution_id/logs
- DELETE /api/projects/:project_id/workflows/:workflow_id/logs
- DELETE /api/workflows/:project_id/:workflow_id/logs
Latest Signals
- GET /api/workflows/:project_id/:workflow_id/logs/latest-node-log
- GET /api/workflows/:project_id/:workflow_id/logs/latest-workflow-event
- GET /api/projects/:project_id/workflows/:workflow_id/last-execution
- GET /api/projects/:project_id/workflows/:workflow_id/animation-data
Ingestion and Append
- POST /api/node-logs/batch/:env_id
- POST /api/node-logs/:project_id/:workflow_id/:env_id
- POST /api/workflows/:project_id/:workflow_id/logs/append
- POST /api/workflows/:project_id/:workflow_id/logs
Example: Fetch Workflow Logs
GET /api/projects/:project_id/workflows/:workflow_id/logs
Typical response shape:
{
"ok": true,
"data": {
"items": [
{
"ts": "2026-03-24T09:40:00Z",
"level": "INFO",
"nodeType": "RunModel",
"message": "Execution completed"
}
]
}
}
Example: Append Runtime Log
POST /api/workflows/:project_id/:workflow_id/logs/append
Content-Type: application/json
{
"executionId": "exec_001",
"nodeId": "node_12",
"level": "INFO",
"message": "Batch processed"
}
Common Errors
404workflow/execution context missing413payload too large for append endpoint429excessive logging rate from edge/runtime
Operational notes:
- Use batched ingestion for high-throughput edge logs.
- Keep log payloads compact and structured.
- Include executionId and nodeId for incident triage.
