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:
| List | Default items |
|---|---|
| Audiences | CEO, CTO, System Admins, Architects, Developers, Business People |
| Languages | German, 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:
| Rule | What happens if you break it |
|---|---|
| At most 30 items | Save fails |
| Each item's name is 100 characters or fewer | Save fails |
Each item has both an id and a name | Save 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
- Audiences API reference — full endpoint contract.
- Prompts feature guide — where a default audience/language is attached to a saved prompt.
- GenAI feature guide — how the picked audience/language reaches the generation prompt.
- Workspaces & Membership — the membership check this domain relies on (existence only, no role gating).