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 |
|---|---|---|
| integer | Results per page. Default 20. Maximum 100. A value of 0 or less is treated as 1. |
| string | Sync cursor. Omit on the first call to begin from the beginning. Pass |
| 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 |
Response Fields
Field | Type | Rules |
|---|---|---|
| GUID | Unique identifier for the model. The same identifier as on the Arena Models and Arena Model Vulnerabilities endpoints, and as |
| string | Model name. |
| GUID | Identifier for the model family this model belongs to. |
| string | Family name, for grouping related models. |
| string | Where the model comes from. The value is free text from the catalog. Today it is |
| string | Model type. One of |
| string | Link to the model's reference page. |
| ISO 8601 timestamp | When the model was first discovered. UTC without a trailing |
| ISO 8601 timestamp | When the model record was last modified. UTC without a trailing |
| string | Testing state. One of |
| integer | Number of identified weaknesses. |
| integer | Number of attack categories with at least one successful attack. |
| integer | Number of known risks associated with the model. |
| integer | Number of automated penetration tests run. |
| integer | Number of manual penetration tests run. |
| integer | Number of your AI Systems that use the model. This is the only value in the catalog that differs by tenant. |
| 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. |
| string | Severity, set from |
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:limitis over 100:limit must be 100 or less.updatedAfteris outside the allowed range:updatedAfter must be between 1753-01-01 and 9999-12-31.cursorandupdatedAfterare both sent, even whencursoris empty:cursor and updatedAfter are mutually exclusive.- The cursor is not valid.
- The request includes a
pageparameter.
401 UNAUTHORIZED: the request is missing a token, the token lacksApi_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 |
|---|---|---|
| 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 lacksApi_ArenaAllModels_Read, or the tenant is not licensed for All Models. An unlicensed tenant receives this response before themodelIdis looked up.404 NOT_FOUND: no catalog entry has thismodelId. The message isResource 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.





