Skip to content

Who may choose each model

GET
/org/models
curl --request GET \
--url https://api.asklucy.eu/v1/org/models \
--header 'Authorization: Bearer <token>'

Every chat model of Lucy’s catalog, cheapest tier first, with who may choose it and, for selected, the people and groups granted it. Grants are kept while a model is everyone or off and count again when it is selected.

OK

Media typeapplication/json
object
models
required

Cheapest tier first.

Array
object
id
required
string
label
required
string
description
required
string
vision
required

Reads images.

boolean
tools
required

Uses tools (the sandbox, memory, files on your computer).

boolean
context_tokens
required

How long a conversation it can read at once, in tokens.

integer
cost_tier
required

How fast it uses your limits, from 1 (slowest) to 3.

integer
>= 1 <= 3
access
required

Who may choose a model: nobody (off: not offered, and nobody can ask for it), everyone, or the people and groups granted it (selected: others can ask for it).

string
Allowed values: off everyone selected
grants
required

People first, then groups, by name.

Array<object>
object
subject
required
object
type
required
string
Allowed values: user group
id
required
string
name
string | null
note
required

Why, for other admins. A grant made by approving a request carries its reason.

string | null
updated_at
required
string format: date-time
updated_by
required
One of:
object
id
required

Zitadel user ID.

string
name
required
string
email
string | null format: email
kind

service is a customer system’s Zitadel service user; agent is a service agent (its ID is the agt_ ID), the author of its runs’ messages.

string
Allowed values: person service agent
default_model
required

The organization’s settings.default_model: the Model.id a conversation uses when nobody picks one. Null is Auto.

string | null
model_choice_enabled
required

The organization’s settings.model_choice_enabled. False: nobody may choose a model, whatever each model’s access (kept).

boolean

Example

{
"models": [
{
"id": "mistral-large-4-0",
"label": "Mistral Large",
"description": "Most capable",
"access": "off",
"grants": [
{
"subject": {
"type": "user"
},
"updated_by": {
"kind": "person"
}
}
]
}
]
}

Missing, expired or invalid token.

Media typeapplication/problem+json

RFC 9457 problem details.

object
type
required
string format: uri-reference
title
required
string
status
required
integer
detail
string
instance
string
request_id
string
quota

For quota-exceeded, the window that is used up.

object
window
required
string
Allowed values: five_hours week month
percent_used
required
number
<= 100
resets_at
required

Null for a rolling window that hasn’t started.

string | null format: date-time
limited_by
required

organization when the organization’s budget is closer to running out than the member’s own limit.

string
Allowed values: personal organization
request
One of:

A request as its member sees it, where they asked.

object
id
required
string
status
required
string
Allowed values: pending approved declined withdrawn
created_at
required
string format: date-time
decided_at
required
string | null format: date-time
note
required

What the admin who decided wrote back.

string | null
errors

Field-level problems (400 only).

Array<object>
object
field
required

JSON pointer into the request body.

string
message
required
string

Example

{
"type": "https://docs.asklucy.eu/errors/answer-in-progress",
"quota": {
"window": "five_hours",
"limited_by": "personal",
"request": {
"status": "pending"
}
}
}
X-Request-Id
string

Unique per request; quote it to support.

The token is valid but lacks the role this needs.

Media typeapplication/problem+json

RFC 9457 problem details.

object
type
required
string format: uri-reference
title
required
string
status
required
integer
detail
string
instance
string
request_id
string
quota

For quota-exceeded, the window that is used up.

object
window
required
string
Allowed values: five_hours week month
percent_used
required
number
<= 100
resets_at
required

Null for a rolling window that hasn’t started.

string | null format: date-time
limited_by
required

organization when the organization’s budget is closer to running out than the member’s own limit.

string
Allowed values: personal organization
request
One of:

A request as its member sees it, where they asked.

object
id
required
string
status
required
string
Allowed values: pending approved declined withdrawn
created_at
required
string format: date-time
decided_at
required
string | null format: date-time
note
required

What the admin who decided wrote back.

string | null
errors

Field-level problems (400 only).

Array<object>
object
field
required

JSON pointer into the request body.

string
message
required
string

Example

{
"type": "https://docs.asklucy.eu/errors/answer-in-progress",
"quota": {
"window": "five_hours",
"limited_by": "personal",
"request": {
"status": "pending"
}
}
}
X-Request-Id
string

Unique per request; quote it to support.