curl --request GET \
--url https://{host}/v2/workspaces/slug:llm-gateway/webhooks/v1/models \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{host}/v2/workspaces/slug:llm-gateway/webhooks/v1/models', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{host}/v2/workspaces/slug:llm-gateway/webhooks/v1/models"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"items": [
{
"model_id": "<string>",
"type": "completion",
"display": {
"name": "<string>",
"brand": "<string>",
"hidden": true
},
"capabilities": {
"vision": true,
"audio": true,
"text": true,
"image": true
},
"limits": {},
"failover": "<string>",
"region": "<string>",
"dimensions": "<unknown>",
"supported_dimensions": [
123
],
"metrics": "<unknown>",
"provider_config": {},
"pricing": {
"input_per_1m_tokens": 123,
"output_per_1m_tokens": 123
},
"tags": [
"<string>"
],
"org_slugs": [
"<string>"
],
"enabled": true
}
],
"total": 123,
"page": 123,
"limit": 123
}{
"error": "<string>",
"message": "<string>",
"code": "<string>",
"details": {},
"status": 123,
"retryAfter": 123,
"provider": "<string>",
"model": "<string>",
"provider_error_type": "<string>"
}{
"error": "<string>",
"message": "<string>",
"code": "<string>",
"details": {},
"status": 123,
"retryAfter": 123,
"provider": "<string>",
"model": "<string>",
"provider_error_type": "<string>"
}List models from the catalogue
Returns a paginated, filterable list of models from the gateway catalogue.
Note. The response uses Prisme.ai’s standard pagination envelope
({ items, total, page, limit }), not OpenAI’s
{ object: "list", data: [...] } shape - this endpoint is the
management catalogue, not the OpenAI-compatible model listing.
Per-org availability filter:
- No
orgSlugquery → restrict to models reachable from the current session (noorg_slugsconstraint, or the session’s org is listed). orgSlug=all(admin only) → returns the full catalogue regardless of per-modelorg_slugs.orgSlug=<slug>(admin only) → impersonate that org’s view.
curl --request GET \
--url https://{host}/v2/workspaces/slug:llm-gateway/webhooks/v1/models \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{host}/v2/workspaces/slug:llm-gateway/webhooks/v1/models', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{host}/v2/workspaces/slug:llm-gateway/webhooks/v1/models"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"items": [
{
"model_id": "<string>",
"type": "completion",
"display": {
"name": "<string>",
"brand": "<string>",
"hidden": true
},
"capabilities": {
"vision": true,
"audio": true,
"text": true,
"image": true
},
"limits": {},
"failover": "<string>",
"region": "<string>",
"dimensions": "<unknown>",
"supported_dimensions": [
123
],
"metrics": "<unknown>",
"provider_config": {},
"pricing": {
"input_per_1m_tokens": 123,
"output_per_1m_tokens": 123
},
"tags": [
"<string>"
],
"org_slugs": [
"<string>"
],
"enabled": true
}
],
"total": 123,
"page": 123,
"limit": 123
}{
"error": "<string>",
"message": "<string>",
"code": "<string>",
"details": {},
"status": 123,
"retryAfter": 123,
"provider": "<string>",
"model": "<string>",
"provider_error_type": "<string>"
}{
"error": "<string>",
"message": "<string>",
"code": "<string>",
"details": {},
"status": 123,
"retryAfter": 123,
"provider": "<string>",
"model": "<string>",
"provider_error_type": "<string>"
}Authorizations
User-bound credential carrying an identity: either a session JWT
or a user access token (at:*) generated from the user settings UI.
Send as Authorization: Bearer <token>.
Org API keys (iak_*) are not accepted here - they carry
no user identity. Use the x-prismeai-api-key header instead
(see OrgApiKeyAuth).
Query Parameters
Page size (capped server-side at 100, default 100).
Zero-based page index.
Filter by model type.
completion, embeddings, image_generation Filter by enabled flag.
true, false Comma-separated list of model IDs.
Comma-separated list of tags (matches any).
When "true", exclude models with display.hidden = true.
true, false Exact match on display.brand.
Case-insensitive search across model_id, display.name, display.brand.
Filter to models declaring the given capability.
vision, audio, text, image Admin-only override for the per-org availability filter. Use all
to bypass the filter, or a slug to impersonate that org's view.
Ignored for non-admin callers.
Response
Paginated list of models.
Pagination envelope used by GET /v1/models (Prisme.ai standard, not
OpenAI's { object: "list", data: [...] }).
Hide child attributes
Hide child attributes
Stable identifier (matches the value sent in request.model).
128Model family.
completion, embeddings, image_generation 64Provider-side limits (e.g. context window, max tokens).
Optional model_id to route to when the primary fails.
128Hosting region (free-text).
64Default embedding dimensionality (embeddings models only).
Allowed values for the request dimensions parameter.
Free-form metrics block (latency, throughput hints, …).
Provider-specific configuration (batch size, parallelism, …).
Free-form tags used by the search/filter UI.
When set and non-empty, restricts the model to the listed organizations. Empty / missing means the model is available to all orgs (subject to governance overlays).
When false, the model is hidden from routing.
Total number of matching documents (ignoring pagination).
Zero-based page index.
Effective page size (server-capped at 100).
Was this page helpful?