Entities are for records with a schema. Sometimes you just need a place to put config — a company name, a currency, a theme. Tenant settings are that place: a named JSON value in a group, kept per tenant (workspace), with no schema to define first.
Your app reaches them at /app/{orgCode}/tenant/settings with the token it already has. The tenant is always the one in the token, and only a tenant admin (a user with full access in that tenant) may call it; anyone else gets 403.
| Group | What it is for |
|---|---|
general | Values your Logic Blocks, Glyphs and agents read, as {{params.settings.KEY}} or ctx.params.settings. Keep one entry here, named config (the console uses the same one); a second general entry is not merged. |
ui | Values for your own app's screens, such as branding or layout. Nothing in the platform reads them. |
notifications | Your app's own notification preferences. Nothing in the platform reads them. |
Get one entry, or list them
GET {orgApiEndpoint}/app/{orgCode}/tenant/settings?group=general&name=config
GET {orgApiEndpoint}/app/{orgCode}/tenant/settings?group=ui With a name you get that one entry (or 404); without it, { settings: [...] }, optionally for one group. An entry looks like:
{
"id": "…",
"group": "general",
"name": "config",
"value": { "company": "Acme", "currency": "USD" },
"active": true,
"updated_at": "2026-11-07T10:00:00Z"
} Create or replace an entry
PUT {orgApiEndpoint}/app/{orgCode}/tenant/settings
{ "group": "general", "name": "config", "value": { "company": "Acme", "currency": "USD" } } value must be a JSON object. A new name is created (201); an existing one has its whole value replaced (200) — there is no partial merge the way there is on an entity update. Delete one with DELETE …/tenant/settings?group=ui&name=theme.
What does not go here
Secrets, third-party API keys and connector credentials are entered in the console's Tenant Settings (Secrets, Connectors), where they are encrypted — never in these plain groups. Feature flags are their own feature (see Feature flags). Asking for any other group answers 400.
Email templates, members, invitations and the workspace name are managed the same way, from your own app — see Manage tenant settings from your own app.