18790 and no access token. With STUDIO_ACCESS_TOKEN set, add -b 'clawboo_access=<token>' to each curl. All nine routes are on the general rate limit described in the REST API overview. Errors use { "error": "<message>" }.
Routes
Briefs
A brief is markdown. A missing brief reads ascontent: null, not as a 404; the dashboard then shows a generated default.
The dashboard edits the team brief from the team chat’s settings sheet and the global brief from Boo Zero’s own page; see Boo Zero.
GET /api/boo-zero/team-briefs/:teamId
Responses
200 OK: the stored brief, or nulls when there is none:
400 Bad Request: { "error": "teamId required" }.
500 Internal Server Error: a database failure, { "error": "<message>" }.
Example
PUT /api/boo-zero/team-briefs/:teamId
Creates or replaces the team’s brief.
- Request body:
{ "content": string }(required).
Responses
200 OK:
400 Bad Request: { "error": "teamId required" }, or { "error": "content (string) required" } when content is missing or not a string.
500 Internal Server Error: a database failure, { "error": "<message>" }. A teamId that names no team fails here too, because a brief must belong to a team.
Example
DELETE /api/boo-zero/team-briefs/:teamId
Removes the team’s brief. Removing a brief that does not exist still answers 200. Deleting the team removes its brief too.
Responses
200 OK: { "ok": true }.
400 Bad Request: { "error": "teamId required" }.
500 Internal Server Error: a database failure, { "error": "<message>" }.
Example
GET /api/boo-zero/global-brief
Responses
200 OK: the stored brief, or null content when unset. updatedAt is always null on this route:
500 Internal Server Error: a database failure, { "error": "<message>" }.
Example
PUT /api/boo-zero/global-brief
Creates or replaces the global brief.
- Request body:
{ "content": string }(required).
Responses
200 OK: updatedAt is the time of the save:
400 Bad Request: { "error": "content (string) required" }.
500 Internal Server Error: a database failure, { "error": "<message>" }.
Example
Display name
A name the dashboard shows for Boo Zero instead of the agent’s own name, saved per agent id in thesettings table (key boo-zero:display-name:<agentId>). It is removed when the agent is deleted.
GET /api/boo-zero/display-name/:agentId
Responses
200 OK: the saved name, or null when none was ever saved. A cleared name reads as ""; treat an empty name as unset:
400 Bad Request: { "error": "agentId required" }.
500 Internal Server Error: a database failure, { "error": "<message>" }.
Example
PUT /api/boo-zero/display-name/:agentId
Saves the name, trimmed and cut to 80 characters. An empty string clears it.
- Request body:
{ "name": string }(required).
Responses
200 OK: the value actually stored:
400 Bad Request: { "error": "agentId required" }, or { "error": "name (string) required" } when name is missing or not a string.
500 Internal Server Error: a database failure, { "error": "<message>" }.
Example
Leader override
Clawboo picks Boo Zero in this order:- The override: an agent you named with
POST /api/boo-zero/override, on any runtime, if it still exists and is not archived. - Clawboo Native’s Boo Zero: the team-less Boo Zero agent Clawboo creates on Clawboo Native once a team has a Clawboo Native member.
- The OpenClaw default: among OpenClaw agents with no team, the Gateway’s default agent if it is one of them, else the first of them.
GET /api/boo-zero/override
Responses
200 OK:
tier reads override whenever an override is saved, even when that agent cannot be resolved (it was deleted or archived) and effective has fallen through to the next rule.
500 Internal Server Error: a database failure, { "error": "<message>" }.
Example
POST /api/boo-zero/override
Sets or clears the override. Any runtime is allowed. The agent must exist and not be archived; clearing restores the order above.
- Request body:
{ "agentId": string | null }(required: a non-empty string to set,nullto clear).
Responses
200 OK: saved, with the agent that is Boo Zero after the change:
400 Bad Request: the body has no agentId key:
400 Bad Request: agentId is neither null nor a non-empty string:
404 Not Found: no live agent has that id:
500 Internal Server Error: a database failure, { "error": "<message>" }.
Example
apps/web/server/api/booZero.ts, apps/web/server/api/booZeroOverride.ts, and the resolution order in apps/web/server/lib/teamChat/booZero.ts.
Related
- Boo Zero: where the dashboard edits the briefs and the display name
- Teams API: team rules, rooms, and the team activity summary
- Agents API:
defaultIdinGET /api/agentsis the agent this page calls Boo Zero - Agent model: Boo Zero and a team’s own Leader