Find the insights and best practices about our product.
AI Systems

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

limit

integer

Results per page. Maximum 200.

cursor

string

Sync cursor. Omit on the first call to begin from the beginning. Pass nextCursor from the previous response on subsequent calls.

updatedAfter

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

aiSystemId

GUID

Unique identifier for the AI System. This is the join key back to the sync feeds: it appears in the aiSystemIds array on both the Bills of Materials and Technology Vulnerabilities endpoints.

aiSystemName

string

Name as displayed in the Cranium portal.

owner

string or null

Free-text owner field. Not a resolved user reference; do not parse it as an email address or user id.

type

string

Currently always ArtifactBased on this feed. Treat as an open string.

status

string

Lifecycle state in the Cranium UI, e.g. Active or Draft. Treat as an open string.

boms

integer

Current count of associated Bills of Materials. Can decrease if a BOM is unlinked.

datasets

integer

The count of associated datasets. Can decrease if a BOM is unlinked.

models

integer

Current count of associated models. Can decrease if a BOM is unlinked.

createdAt

ISO 8601 timestamp

When the AI System was created.

updatedAt

ISO 8601 timestamp

When the AI System was last modified. null if it has never been modified since creation; treat updatedAt ?? createdAt as the effective last-changed time.

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, or cursor and updatedAfter were supplied together.
  • 401 UNAUTHORIZED: the request is missing a token, or the token lacks Api_AiSystems_Read.
  • 500 INTERNAL_ERROR: an unexpected server error.
Did this answer your question?