Skip to content

Change settings

PATCH
/org
curl --request PATCH \
--url https://api.asklucy.eu/v1/org \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "retention_days": 1, "sandbox_retention": { "snapshot_days": 1, "artifact_days": 1 }, "sandbox_idle_minutes": 1, "sandbox_internet": "none", "sandbox_allowed_domains": [ "example" ], "instructions": "example", "memory_enabled": true, "local_files": "off", "local_shell": "off", "local_mcp": "off", "local_audit": "metadata", "local_confirm": "never", "web_search": "off", "model_choice": "off", "model_choice_models": [ "example" ], "default_model": "example", "model_choice_enabled": true, "agents": "off", "insights": "off", "connectors_open_catalog": true, "connectors_member_servers": true }'

The name is managed in Zitadel; domains and the identity provider under Sign-in (/org/sso).

Media typeapplication/json
object
>= 1 properties
retention_days
integer | null
>= 1
sandbox_retention
One of:

How long Lucy’s sandbox keeps what it saved: a paused workspace (the files of a conversation after a few idle minutes) and published pages. Days; a field that is null or absent is inherited. The organization’s value is the default and the ceiling: a person or a conversation can only choose a shorter time. The effective value is the shortest that applies, within the platform’s maximum.

object
snapshot_days

0 keeps no paused workspace (an idle sandbox is deleted with its files).

integer | null
artifact_days
integer | null
>= 1
sandbox_idle_minutes
integer | null
>= 1 <= 120
sandbox_internet
string
Allowed values: none allowlist full
sandbox_allowed_domains
Array<string>
<= 100 items
instructions
string | null
<= 8000 characters
memory_enabled
boolean | null
local_files

Whether people may share folders on their computer with Lucy, through the desktop app. read: Lucy lists, searches, reads and attaches files in them. read_write: it may also change them, and asks the person on their computer each time.

string
default: off
Allowed values: off read read_write
local_shell

Whether people may let Lucy run commands on their computer, with their own access. ask: every command asks the person on their computer (once, or one program for the conversation). allow: they may also allow all commands for a conversation, and keep standing rules.

string
default: off
Allowed values: off ask allow
local_mcp

Whether the desktop app may offer the person’s own local MCP servers to Lucy.

string
default: off
Allowed values: off on
local_audit

What the audit log records of local actions. metadata: the device, shared folder, tool, decision and outcome. detailed: also the paths and commands, and the desktop app tells people so.

string
default: metadata
Allowed values: metadata detailed
local_confirm

When the device asks before acting in a shared folder. never: sharing a folder is the consent (only widening access and bulk deletes ask). changes: every change asks. always: every change, and the first read in each conversation.

string
default: never
Allowed values: never changes always
web_search

Who may use web search: nobody (the default), everyone, or the people and groups granted it (/org/web-search/grants). A search sends the model’s query text, and nothing else, to Mistral’s global endpoint (outside the EU-pinned one), which is why it is opt-in. People and conversations can turn it off for themselves, never on.

string
default: off
Allowed values: off everyone selected
model_choice

The older, organization-wide setting: who may choose the model of their conversations: nobody (Lucy picks it for each answer), everyone, or the people and groups granted it (/org/model-choice/grants), among model_choice_models. It applies until an admin first changes model access per model (/org/models), which replaces it.

string
default: off
Allowed values: off everyone selected
model_choice_models

Models of GET /org/model-choice/models; [] offers them all.

Array<string>
default_model

A Model.id of GET /org/models (400 for any other model), or null for Auto.

string | null
model_choice_enabled

False turns model choice off for everyone; the access per model is kept.

boolean
agents

Who may make and run agents (/agents): nobody (the default), org_admins only, everyone, or org_admins and the people and groups granted it (/org/agents/grants). While it is off no agent runs: webhooks answer 404 and schedules don’t fire. An owner agent only runs while its owner may use agents.

string
default: off
Allowed values: off admins everyone selected
insights

Lucy Insights, an experiment: where the organization’s spending goes, by what people were doing (openapi/lucy-insights.yaml, served under /v1/insights/). Off by default. While it is on, each answer’s conversation is classified into segments (activity, client, tags, one neutral line; never the text itself) and admins see the map, members their own.

string
default: off
Allowed values: off on
connectors_open_catalog

Members may connect the catalog’s connectors (Lucy’s curated ones) that admins haven’t turned on, with all their apps. Off (the default): fully managed, only what admins turn on.

boolean
connectors_member_servers

Members may add their own MCP servers, for themselves only. Off (the default): only admins add servers.

boolean

OK

Media typeapplication/json
object
id
required

Zitadel organization ID.

string
name
required
string
settings
required
object
retention_days
required

Conversations (with their files) are deleted this many days after their last activity. Null keeps them.

integer | null
>= 1
sandbox_retention

How long Lucy’s sandbox keeps what it saved: a paused workspace (the files of a conversation after a few idle minutes) and published pages. Days; a field that is null or absent is inherited. The organization’s value is the default and the ceiling: a person or a conversation can only choose a shorter time. The effective value is the shortest that applies, within the platform’s maximum.

object
snapshot_days

0 keeps no paused workspace (an idle sandbox is deleted with its files).

integer | null
artifact_days
integer | null
>= 1
sandbox_idle_minutes

How long a conversation’s sandbox may sit unused before it is paused (its workspace is saved and it is stopped to free resources; the next message restores it). Null is the platform’s default (5 minutes).

integer | null
>= 1 <= 120
sandbox_internet
required

What code run by Lucy may reach on the internet.

string
Allowed values: none allowlist full
sandbox_allowed_domains

Used when sandbox_internet is allowlist.

Array<string>
instructions

Instructions Lucy follows in every conversation of the organization (tone, language, rules, context about the company). Members’ own instructions add to these and can’t override them.

string | null
<= 8000 characters
memory_enabled
required

Lucy Memory for the organization. Null (the default) means on when the contract includes it (entitlements.memory); false turns it off for everyone. Without the entitlement it stays off. When it is off, Lucy neither reads nor writes memory; people can still see, export and delete what is stored.

boolean | null
local_files

Whether people may share folders on their computer with Lucy, through the desktop app. read: Lucy lists, searches, reads and attaches files in them. read_write: it may also change them, and asks the person on their computer each time.

string
default: off
Allowed values: off read read_write
local_shell

Whether people may let Lucy run commands on their computer, with their own access. ask: every command asks the person on their computer (once, or one program for the conversation). allow: they may also allow all commands for a conversation, and keep standing rules.

string
default: off
Allowed values: off ask allow
local_mcp

Whether the desktop app may offer the person’s own local MCP servers to Lucy.

string
default: off
Allowed values: off on
local_audit

What the audit log records of local actions. metadata: the device, shared folder, tool, decision and outcome. detailed: also the paths and commands, and the desktop app tells people so.

string
default: metadata
Allowed values: metadata detailed
local_confirm

When the device asks before acting in a shared folder. never: sharing a folder is the consent (only widening access and bulk deletes ask). changes: every change asks. always: every change, and the first read in each conversation.

string
default: never
Allowed values: never changes always
web_search

Who may use web search: nobody (the default), everyone, or the people and groups granted it (/org/web-search/grants). A search sends the model’s query text, and nothing else, to Mistral’s global endpoint (outside the EU-pinned one), which is why it is opt-in. People and conversations can turn it off for themselves, never on.

string
default: off
Allowed values: off everyone selected
model_choice

The older, organization-wide setting: who may choose the model of their conversations: nobody (Lucy picks it for each answer), everyone, or the people and groups granted it (/org/model-choice/grants), among model_choice_models. It applies until an admin first changes model access per model (/org/models), which replaces it.

string
default: off
Allowed values: off everyone selected
model_choice_models

The models people may choose (Model.ids). Empty offers every chat model of the catalog.

Array<string>
model_choice_enabled

Whether people may choose the model of their conversations at all (true when never set). False: nobody may choose or ask for a model, there is no picker, and every conversation uses the default model (or Auto). What each model allows (GET /org/models) and who was given which are kept, and count again once it is back on.

boolean
default_model

The model (a Model.id of GET /org/models) a conversation uses when nobody picks one, instead of Lucy’s own choice per answer. Null (the default) is Auto. People who may choose a model still can. An answer records the default as the model requested, like a chosen one, with the same fallbacks (an image it can’t read, a conversation too long for it).

string | null
agents

Who may make and run agents (/agents): nobody (the default), org_admins only, everyone, or org_admins and the people and groups granted it (/org/agents/grants). While it is off no agent runs: webhooks answer 404 and schedules don’t fire. An owner agent only runs while its owner may use agents.

string
default: off
Allowed values: off admins everyone selected
insights

Lucy Insights, an experiment: where the organization’s spending goes, by what people were doing (openapi/lucy-insights.yaml, served under /v1/insights/). Off by default. While it is on, each answer’s conversation is classified into segments (activity, client, tags, one neutral line; never the text itself) and admins see the map, members their own.

string
default: off
Allowed values: off on
connectors_open_catalog

Members may connect the catalog’s connectors (Lucy’s curated ones) that admins haven’t turned on, with all their apps. Off (the default): fully managed, only what admins turn on.

boolean
connectors_member_servers

Members may add their own MCP servers, for themselves only. Off (the default): only admins add servers.

boolean
entitlements
required

What the customer’s contract allows.

object
sandbox
required

Lucy may run code for this organization.

boolean
max_file_size_bytes
required
integer
max_files_per_conversation
required
integer
memory
required

Lucy Memory (processes and knowledge graph) is part of the contract.

boolean
sandbox_retention_platform

The platform’s default and maximum for how long Lucy’s sandbox keeps saved data, in days: what an administrator may choose between for settings.sandbox_retention.

object
snapshot_days
required
object
default
required
integer
max
required
integer
artifact_days
required
object
default
required
integer
max
required
integer

Example

{
"settings": {
"sandbox_internet": "none",
"sandbox_allowed_domains": [
"api.example.com"
],
"local_files": "off",
"local_shell": "off",
"local_mcp": "off",
"local_audit": "metadata",
"local_confirm": "never",
"web_search": "off",
"model_choice": "off",
"agents": "off",
"insights": "off"
}
}

The request is invalid; errors lists what’s wrong.

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.

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.