AIHealth¶
GET ai/health
Everything AIPing reports, plus the parts that matter when something behaves oddly rather than fails outright.
Access Control¶
Any session. The method reads no customer data.
Response Data¶
{
"ready": true,
"database": { "ok": true, "latencyMs": 1 },
"runs": { "active": 0, "limits": { "global": 50, "brand": 10, "actor": 2 } },
"knowledge": { "ready": true, "documents": 52, "chunks": 203, "failedFiles": [] },
"openrouter": { "requests": 128, "errors": 2, "lastLatencyMs": 4120, "model": "anthropic/claude-sonnet-4.5", "keyConfigured": true },
"tools": { "calls": 74, "errors": 1, "platformEnabled": true },
"platform": {
"ok": false,
"available": 15,
"missing": [ { "command": "MngGetAccountInfo", "reason": "tool \"get_account_info\"", "critical": false } ],
"missingCritical": []
},
"notifications": { "generated": 4, "delivered": 3, "suppressed": 11, "awaitingApproval": 1, "failed": 0, "fallback": 0, "suppressedBy": { "cooldown": 9, "filter": 2 } },
"stscript": { "enabled": true, "ok": true, "problems": [], "runtimeId": "stscript-dsl-sha256:b791bd3042d168af2c5e24a402c054922be1b2dbe031e3c0ac9f2e7090415823", "referenceVersion": "reference-…", "skillVersion": "1.0.0", "toolMode": "tools", "validator": { "active": 0, "waiting": 0 }, "runs": 12, "artifacts": 9, "failedProposals": 1 },
"maintenance": { "enabled": true, "staleRunsReleased": 0 },
"last24h": { "runs": { "completed": 126, "failed": 2 }, "cost": 0.4821 }
}
Two blocks are worth surfacing in an operations screen.
platform lists platform commands the module needs but does not see on the bus. When
it is not ok, some tools are silently unavailable and the cause is the platform build,
not the module. A non-empty missingCritical means nothing works at all.
stscript is the state of the StScript assistant. ok: false with a
reason in problems means the reference was not verified for the deployed compiler build
(or was edited without rebuilding the package): the capability is off until the package is
rebuilt. A growing failedProposals with the same model means the reference or the prompt
drifted away from the compiler.
notifications.suppressedBy explains where generated messages went. Suppressed events
are counted here rather than stored as records, so this is the only place that shows how
often a rule is firing.