Find the insights and best practices about our product.
Endpoint Reference: Arena All Models

These endpoints return Cranium's All Models catalog: every model Cranium tracks, not only the models discovered in your tenant. The catalog is the same for every tenant, except aiSystemCount, which counts your AI Systems that use the model. To list only the models discovered and tested in your tenant, use the Arena Models endpoint instead.

List All Models

Returns a paginated list of the All Models catalog. Use it to load the full catalog into your own systems and join it to your other Arena data by modelId.

Request

GET /api/public/arena/allmodels

Authentication

Bearer token. See Authentication & Generating Credentials.

Required Permission and License

Api_ArenaAllModels_Read. These endpoints are available only to tenants licensed for All Models. A missing license and a missing permission return the same 401 UNAUTHORIZED response.

Have an administrator grant Api_ArenaAllModels_Read to your API client before your first call.

Query Parameters

Parameter

Type

Value

limit

integer

Results per page. Default 20. Maximum 100. A value of 0 or less is treated as 1.

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 models added at or after this timestamp. Must be between 1753-01-01 and 9999-12-31. Cannot be sent with cursor, even when cursor is empty.

Response Fields

Field

Type

Rules

modelId

GUID

Unique identifier for the model. The same identifier as modelId

on the Arena Models and Arena Model Vulnerabilities endpoints, and as arenaModelId on the Bill of Materials models feed. Use it to join the catalog to those endpoints.

modelName

string

Model name.

modelFamilyId

GUID

Identifier for the model family this model belongs to.

modelFamilyName

string

Family name, for grouping related models.

modelSource

string

Where the model comes from. The value is free text from the catalog. Today it is hf (Hugging Face) for catalog models and an empty string for models added through a pen-test upload. Treat as an open string.

modelType

string

Model type. One of GenAI (generative AI), DL (deep learning), TradML (traditional machine learning) or Unknown.

referenceUrl

string

Link to the model's reference page.

discoveredAt

ISO 8601 timestamp

When the model was first discovered. UTC without a trailing Z.

updatedAt

ISO 8601 timestamp

When the model record was last modified. UTC without a trailing Z. This is the field the sync cursor tracks.

modelStatus

string

Testing state. One of Untested, Queued, InTesting, Completed, Failed or NotTestable.

weaknessCount

integer

Number of identified weaknesses.

attackCategoriesVulnerableCount

integer

Number of attack categories with at least one successful attack.

knownRisksCount

integer

Number of known risks associated with the model.

automatedTestCount

integer

Number of automated penetration tests run.

manualTestCount

integer

Number of manual penetration tests run.

aiSystemCount

integer

Number of your AI Systems that use the model. This is the only value in the catalog that differs by tenant.

vulnerabilityLikelihoodPercentage

integer or null

The model's overall risk score as a percentage: the average attack success rate across all tested attack categories, with each category counted equally. Null when the model has not been tested.

severity

string

Severity, set from vulnerabilityLikelihoodPercentage. One of Low (under 10%), Medium (10% to 50%), High (above 50% up to 95%) or Critical (above 95%).

Keeping the Catalog Current

updatedAfter returns the models added since that time. Changes to a model's status, severity and counts do not move it in the feed, so an incremental sync does not pick them up. Re-read the full catalog periodically to refresh those values.

Sample Response

{
"data": [
{
"modelId": "7e1d9c3b-2a4f-4b8e-9d6c-5f0a1b2c3d4e",
"modelName": "gpt-4o",
"modelFamilyId": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5e",
"modelFamilyName": "GPT-4o",
"modelSource": "hf",
"modelType": "GenAI",
"referenceUrl": "https://platform.openai.com/docs/models/gpt-4o",
"discoveredAt": "2026-03-04T09:12:44.218734",
"updatedAt": "2026-10-18T22:05:31.904512",
"modelStatus": "Completed",
"weaknessCount": 6,
"attackCategoriesVulnerableCount": 4,
"knownRisksCount": 2,
"automatedTestCount": 120,
"manualTestCount": 8,
"aiSystemCount": 3,
"vulnerabilityLikelihoodPercentage": 18,
"severity": "Medium"
},
{
"modelId": "4c8a1e2d-7b3f-4d9a-b6e1-2f0c5a8d3b97",
"modelName": "llama-3.1-8b-instruct",
"modelFamilyId": "9f8e7d6c-5b4a-4392-8170-6f5e4d3c2b1a",
"modelFamilyName": "Llama 3.1",
"modelSource": "hf",
"modelType": "GenAI",
"referenceUrl": "https://huggingface.co/meta-llama/Llama-3.1-8B-Instruct",
"discoveredAt": "2026-05-21T16:40:02.551093",
"updatedAt": "2026-10-11T08:17:56.330871",
"modelStatus": "Untested",
"weaknessCount": 0,
"attackCategoriesVulnerableCount": 0,
"knownRisksCount": 1,
"automatedTestCount": 0,
"manualTestCount": 0,
"aiSystemCount": 0,
"vulnerabilityLikelihoodPercentage": null,
"severity": "Low"
}
],
"pagination": {
"limit": 2,
"nextCursor": "eyJ1cGRhdGVkQXQiOiIyMDI2LTEwLTExVDA4OjE3OjU2LjMzMDg3MTAiLCJpZCI6IjRjOGExZTJkLTdiM2YtNGQ5YS1iNmUxLTJmMGM1YThkM2I5NyJ9",
"hasMore": true
},
"error": null,
"meta": {
"requestId": "a9c2e5f1-3d7b-4e0a-8c6f-1b4d9e2a7c35",
"timestamp": "2026-10-22T15:04:14.3890000Z"
}
}

modelId is the join key to the Arena Models and Arena Model Vulnerabilities endpoints. gpt-4o has been tested and is used by three of your AI Systems. llama-3.1-8b-instruct has not been tested, so vulnerabilityLikelihoodPercentage is null, and none of your AI Systems use it. hasMore is true, so pass nextCursor as cursor on the next call.

Error Responses

  • 400 BAD_REQUEST: the request was rejected. The message names the reason. A 400 is returned when:
    • limit is over 100: limit must be 100 or less.
    • updatedAfter is outside the allowed range: updatedAfter must be between 1753-01-01 and 9999-12-31.
    • cursor and updatedAfter are both sent, even when cursor is empty: cursor and updatedAfter are mutually exclusive.
    • The cursor is not valid.
    • The request includes a page parameter.
  • 401 UNAUTHORIZED: the request is missing a token, the token lacks Api_ArenaAllModels_Read, or the tenant is not licensed for All Models.
  • 500 INTERNAL_ERROR: an unexpected server error.

Every error response includes error.traceId. Include it when you report an issue to Cranium support.

Sample 401 response:

{
"data": null,
"pagination": null,
"error": {
"code": "UNAUTHORIZED",
"message": "Unauthorized.",
"traceId": "0HNOVC2K1R7QF:00000001"
},
"meta": {
"requestId": "e1a5c9d3-4f7b-4a2e-8c6d-0b3f9e1a5d72",
"timestamp": "2026-10-22T15:04:15.9830000Z"
}
}

Get an All Models Entry

Returns one entry from the All Models catalog. Use it to look up a single model by the modelId you received from another endpoint.

Request

GET /api/public/arena/allmodels/{modelId}

Authentication

Bearer token. See Authentication & Generating Credentials.

Required Permission and License

Api_ArenaAllModels_Read. Available only to tenants licensed for All Models. A missing license and a missing permission return the same 401 UNAUTHORIZED response.

Path Parameters

Parameter

Type

Value

modelId

GUID

Identifier of the model. The same identifier used on the Arena Models and Arena Model Vulnerabilities endpoints.

Response Fields

The same fields as List All Models, returned as a single object in data. pagination is null.

Sample Response

{
"data": {
"modelId": "7e1d9c3b-2a4f-4b8e-9d6c-5f0a1b2c3d4e",
"modelName": "gpt-4o",
"modelFamilyId": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5e",
"modelFamilyName": "GPT-4o",
"modelSource": "OpenAI",
"modelType": "GenAI",
"referenceUrl": "https://platform.openai.com/docs/models/gpt-4o",
"discoveredAt": "2026-03-04T09:12:44.218734",
"updatedAt": "2026-10-18T22:05:31.904512",
"modelStatus": "Completed",
"weaknessCount": 6,
"attackCategoriesVulnerableCount": 4,
"knownRisksCount": 2,
"automatedTestCount": 120,
"manualTestCount": 8,
"aiSystemCount": 3,
"vulnerabilityLikelihoodPercentage": 18,
"severity": "Medium"
},
"pagination": null,
"error": null,
"meta": {
"requestId": "5d0b8e3a-6f1c-4a9e-b2d7-8c4f0e1a3d26",
"timestamp": "2026-10-22T15:04:14.9020000Z"
}
}

Error Responses

  • 401 UNAUTHORIZED: the request is missing a token, the token lacks Api_ArenaAllModels_Read, or the tenant is not licensed for All Models. An unlicensed tenant receives this response before the modelId is looked up.
  • 404 NOT_FOUND: no catalog entry has this modelId. The message is Resource not found. The all-zeros GUID also returns 404.
  • 500 INTERNAL_ERROR: an unexpected server error.

Every error response includes error.traceId. Include it when you report an issue to Cranium support.