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.

GroupWhat it is for
generalValues 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.
uiValues for your own app's screens, such as branding or layout. Nothing in the platform reads them.
notificationsYour app's own notification preferences. Nothing in the platform reads them.

Get one entry, or list them

text
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:

json
{
  "id": "…",
  "group": "general",
  "name": "config",
  "value": { "company": "Acme", "currency": "USD" },
  "active": true,
  "updated_at": "2026-11-07T10:00:00Z"
}

Create or replace an entry

text
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.