This endpoint returns Cranium's representation of the AI Systems registered across your tenant, so you can track the Bills of Materials, datasets, and models that make up each registered AI capability.
List AI Systems
Returns a paginated list of AI Systems for your tenant. An AI System groups the BOMs, datasets, and models that make up a registered AI use case.
Request
GET /api/public/aisystems
Authentication
Bearer token. See Authentication & Generating Credentials.
Required Permission
Api_AiSystems_Read
Query parameters
Parameter | Type | Value |
|---|---|---|
| integer | Results per page. Maximum 200. |
| string | Sync cursor. Omit on the first call to begin from the beginning. Pass |
| ISO 8601 timestamp | Return only records updated at or after this timestamp. Use to recover a lost cursor or reset to a known point in time. |
Response Fields
Field | Type | Rules |
|---|---|---|
| GUID | Unique identifier for the AI System. This is the join key back to the sync feeds: it appears in the |
| string | Name as displayed in the Cranium portal. |
| string or null | Free-text owner field. Not a resolved user reference; do not parse it as an email address or user id. |
| string | Currently always |
| string | Lifecycle state in the Cranium UI, e.g. |
| integer | Current count of associated Bills of Materials. Can decrease if a BOM is unlinked. |
| integer | The count of associated datasets. Can decrease if a BOM is unlinked. |
| integer | Current count of associated models. Can decrease if a BOM is unlinked. |
| ISO 8601 timestamp | When the AI System was created. |
| ISO 8601 timestamp | When the AI System was last modified. |
Sample Response
{
"data": [
{
"aiSystemId": "a2d78b6f-9c4c-4a7d-d16f-4e1d8c9b0f20",
"aiSystemName": "Fraud Detection Platform",
"owner": "Risk Engineering",
"type": "ArtifactBased",
"status": "Active",
"boms": 3,
"datasets": 4,
"models": 2,
"createdAt": "2025-11-03T14:22:00Z",
"updatedAt": "2026-06-01T20:11:09Z"
},
{
"aiSystemId": "b3e89c7a-0d5d-4b8e-e27a-5f2e9d0a1f31",
"aiSystemName": "Customer Support Assistant",
"owner": null,
"type": "ArtifactBased",
"status": "Draft",
"boms": 1,
"datasets": 0,
"models": 1,
"createdAt": "2026-05-20T12:14:00Z",
"updatedAt": null
}
],
"pagination": {
"limit": 100,
"nextCursor": "eyJ1cGRhdGVkQXQiOiIyMDI2LTA2LTAxVDIwOjExOjA5WiIsImlkIjoiYjNlODljN2EifQ==",
"hasMore": false
},
"error": null,
"meta": {
"requestId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"timestamp": "2026-08-24T10:20:00Z"
}
}
Record 1's aiSystemId matches the id that would appear in that same AI System's entries in the aiSystemIds arrays on the Bills of Materials and Technology Vulnerabilities feeds, so you can join across all three. Record 2 shows updatedAt: null, meaning the system was created but never modified since; treat updatedAt ?? createdAt as the effective last-changed time. boms, datasets, and models are current counts of associated artifacts, not historical totals, so they can decrease if artifacts are unlinked. hasMore: false with a non-null nextCursor is the normal end-of-feed state; store the cursor and replay it on your next poll.
Error Responses
400 VALIDATION_FAILED: the cursor is invalid, orcursorandupdatedAfterwere supplied together.401 UNAUTHORIZED: the request is missing a token, or the token lacksApi_AiSystems_Read.500 INTERNAL_ERROR: an unexpected server error.





