Features
Audiences & Languages

Audiences & Languages

Two small, workspace-scoped settings lists that power dropdowns across the app: audiences ("who is this post for?") and languages ("what language should it be written in?"). Every workspace starts out with a fixed set of built-in defaults you can freely rename, add to, or replace from Settings.

This page describes product-facing behavior. For exact request/response shapes and error codes, see the Audiences API reference. The underlying spec this page is based on is specs/features/audiences.md in the repo.

What they're for

Both lists feed the same dropdowns wherever you generate or draft a post:

  • The Prompts editor's "Default Audience" / "Default Language" fields.
  • The Generate Post dialog's Audience / Language selectors (pre-filled from whichever prompt you picked, if it has defaults set).
  • The manual New Post dialog.

Whatever string you pick (or a prompt's default carries) gets substituted straight into the AI generation prompt template — see GenAI feature guide for how {audience} / {language} placeholders work.

⚠️

Neither list is enforced as a foreign key anywhere. A prompt's default audience/ language, or a value typed into a generation request, is just a string — nothing checks it's still present in the current list at the time you generate a post.

Defaults

Until a workspace saves a custom list, these are what GET returns:

ListDefault items
AudiencesCEO, CTO, System Admins, Architects, Developers, Business People
LanguagesGerman, SwissGerman, English, French, Italian, Spanish

Reading the defaults never writes anything — the first time a list actually gets persisted to the workspace is the first time you hit Save in the settings editor (see below).

Managing the lists

Go to Settings → Audiences or Settings → Languages — two tabs of the same editor UI (ItemListEditor), one per list:

  • Add appends a blank row and drops you straight into editing it.
  • Click the pencil icon (or a freshly-added row) to rename an item inline.
  • The trash icon removes a row immediately (client-side — nothing is persisted until you save).
  • Reset to defaults replaces everything currently shown with the hardcoded default list — again, purely local until you save.
  • Save sends the entire current list to the server, which replaces the workspace's saved list wholesale. There's no per-row save and no merge: leave an existing item out of what you save, and it's gone.
⚠️

Save is all-or-nothing. If you meant to just add one audience but you'd also deleted three others locally first, all three deletions go through the moment you hit Save — there's no way to save partial changes.

Who can edit these

Unlike most Workspace settings, there's no role restriction here — any workspace member (owner, editor, or viewer) can both view and overwrite the audiences/languages list. A viewer who otherwise can't change workspace settings can still edit these two lists.

Validation

Whatever you save is checked against a few simple rules:

RuleWhat happens if you break it
At most 30 itemsSave fails
Each item's name is 100 characters or fewerSave fails
Each item has both an id and a nameSave fails

What's not checked: duplicate names, empty names (the "unnamed" placeholder in the editor is exactly this state before you type something), or any particular format for the internal id — new items just get a random one, invisibly, when you click Add.

See also