Propose a new category (agent plane)
POST /v1/categories
Create a category on the fly (D9). It stands IMMEDIATELY (author_kind=agent, state supervised) and writes a create audit/undo row. Returns the cat_…; match the registry first so you do not duplicate an existing bucket.
Authorizations
Section titled “Authorizations ”Request Body required
Section titled “Request Body required ”Propose a new category on the fly (D9). It stands immediately (author_kind= agent, state supervised) and writes a create audit/undo row.
object
Display name (mutable metadata; never a reference key).
Skill-style matcher text the agent reads (mutable).
Defaults to org_shared.
Responses
Section titled “ Responses ”Created.
A category (cat_…) in the registry (Review Loop, D9/D10). name + description are the skill-style metadata an agent fuzzy-matches against (NO LLM on our side; the agent does the matching). Categories are CUSTOMER-scoped and agent-attributed; nothing keys on the name (renames never break a reference).
object
Logical accepted messages created in the last 7 days in the authorized project.
Logical accepted messages created in the last 30 days in the authorized project.
Logical accepted messages created in the last 90 days in the authorized project.
Most recent accepted message creation time; absent when unused.
Current nonterminal reviews across composers in the authorized project.
Active category rules visible in the authorized project; excludes retired and superseded versions.
Opaque category id (cat_…).
Survivor category id when this one was merged/soft-deleted (cat_…).
Human lock pinning the category at supervised (no live auto-send; D16).
Clean human-approve-as-is count toward the maturity gate (D16).
Human edit/reject count in a graduated category toward drift auto-demote (K; §7).
When the category was last graduated (omitted if never).
Who last graduated it (‘human:’); empty if never/demoted.
Invalid request.
The canonical error envelope. error is a stable machine code.
object
Stable error code (e.g. unauthorized, forbidden, not_found, invalid, quota_exceeded, rate_limited).
Example
forbiddenHuman-readable detail (never leaks internals).
Example
missing required scopeMachine-readable quota reason. inbox_limit_exceeded means billing account inbox capacity across all organizations and projects sharing that account; enrollment_token_mailbox_budget_exhausted means the enrollment key lifetime creation allowance. Read message for recovery; inbox counts are separate from sending quotas.
Consumed plus reserved units.
Requested additional units.
Next UTC usage-period boundary; pending reservations survive this boundary.
Missing or invalid credential.
The canonical error envelope. error is a stable machine code.
object
Stable error code (e.g. unauthorized, forbidden, not_found, invalid, quota_exceeded, rate_limited).
Example
forbiddenHuman-readable detail (never leaks internals).
Example
missing required scopeMachine-readable quota reason. inbox_limit_exceeded means billing account inbox capacity across all organizations and projects sharing that account; enrollment_token_mailbox_budget_exhausted means the enrollment key lifetime creation allowance. Read message for recovery; inbox counts are separate from sending quotas.
Consumed plus reserved units.
Requested additional units.
Next UTC usage-period boundary; pending reservations survive this boundary.
Authenticated but lacking the required scope, or out of quota.
The canonical error envelope. error is a stable machine code.
object
Stable error code (e.g. unauthorized, forbidden, not_found, invalid, quota_exceeded, rate_limited).
Example
forbiddenHuman-readable detail (never leaks internals).
Example
missing required scopeMachine-readable quota reason. inbox_limit_exceeded means billing account inbox capacity across all organizations and projects sharing that account; enrollment_token_mailbox_budget_exhausted means the enrollment key lifetime creation allowance. Read message for recovery; inbox counts are separate from sending quotas.
Consumed plus reserved units.
Requested additional units.
Next UTC usage-period boundary; pending reservations survive this boundary.