Get a project's continuous monitoring status
GET /iso/projects/{projectId}/monitoring
Scope compliance:read Plan Scale+
Requires the compliance:read scope. Needs the continuous_monitoring plan feature.
Example
curl "https://api.autociso.io/api/v1/iso/projects/<projectId>/monitoring" \
-H "Authorization: Bearer <your-api-token>"import requests
response = requests.get(
"https://api.autociso.io/api/v1/iso/projects/<projectId>/monitoring",
headers={"Authorization": "Bearer <your-api-token>"},
)
print(response.json())const response = await fetch("https://api.autociso.io/api/v1/iso/projects/<projectId>/monitoring", {
method: "GET",
headers: { "Authorization": "Bearer <your-api-token>" },
});
console.log(await response.json());Response 200
{
"data": {
"controls": [
{
"collectionEnabled": true,
"consecutiveFailures": 0,
"controlId": "A.5.15",
"freshness": "FRESH",
"lastRunAt": "2026-10-13T04:00:00Z",
"lastRunStatus": "COMPLETED"
},
{
"collectionEnabled": true,
"consecutiveFailures": 0,
"controlId": "A.8.13",
"freshness": "STALE",
"lastRunAt": "2026-10-06T04:00:00Z",
"lastRunStatus": "COMPLETED"
},
{
"collectionEnabled": true,
"consecutiveFailures": 3,
"controlId": "A.8.16",
"freshness": "FAILED",
"lastRunAt": "2026-10-13T04:00:00Z",
"lastRunStatus": "FAILED"
}
],
"projectId": "iso_1hfa8m2c4x0p",
"summary": {
"failed": 1,
"fresh": 1,
"manualOnly": 0,
"stale": 1,
"total": 3
}
},
"error": null
}Path parameters
projectIdstring required
Returns
The data field of the standard { data, error, meta } envelope:
controlsarray of object requiredOne entry per gap control of the project.collectionEnabledboolean requiredAutomated collection is enabled.consecutiveFailuresinteger requiredFailed runs in a row, newest first.controlIdstring requiredAnnex A control id.freshnessstring requiredFRESH, STALE, FAILED or MANUAL_ONLY.lastRunAtstring (date-time) or nullStart of the latest collection run (UTC), when any.lastRunStatusstringRUNNING, COMPLETED, FAILED, SKIPPED or UNKNOWN, when a run exists.
projectIdstring requiredISO project id (iso_).summaryobject requiredCounts per freshness class.failedinteger requiredFAILED controls.freshinteger requiredFRESH controls.manualOnlyinteger requiredMANUAL_ONLY controls.staleinteger requiredSTALE controls.totalinteger requiredControls.
Errors
| Status | Code | Retry | Meaning |
|---|---|---|---|
| 400 | - | no | The request is invalid. |
| 401 | - | no | The token is missing, malformed, expired or revoked. |
| 402 | - | no | The organisation’s plan does not include the feature this route needs. |
| 403 | - | no | The token may not use this route. |
| 404 | - | no | The resource does not exist in this organisation. |
| 429 | - | yes | Rate limit or row budget exceeded; retry after the time in Retry-After. |
| 500 | - | no | Unexpected server error. |
| 503 | - | yes | A dependency is temporarily unavailable; retry later. |
Last reviewed: 2026-10-13
Was this page helpful?