Replace the AI inference subsystem configuration
PUT /admin/ai/config
Full-replacement write. Validates the supplied config before persisting — invalid configs return 422 with structured findings; the existing config stays in place until the admin resolves the findings.
Requires ai.admin capability.
Authorizations
Section titled “Authorizations ”Request Body required
Section titled “Request Body required ”PUT body for /admin/ai/config. Same shape as the read minus the validator-computed findings.
object
object
object
object
When true, assets at sensitivity tier restricted or
embargo route to local providers only. Defaults to
true on fresh install.
Provider names considered “local” for the gate above.
object
USD threshold at which a soft-warn audit event fires.
USD ceiling beyond which CheckBudgetBefore rejects calls
with ai_budget_exhausted. Zero (the fresh-install
default) fails-closed with cloud_budget_not_configured
on the very first call until the operator raises it.
Responses
Section titled “ Responses ”Updated config (with any non-blocking findings)
AI inference subsystem snapshot. Returned by GET /admin/ai/config; writable via PUT with the AIInferenceConfigWrite shape (the read shape carries findings + computed defaults that the write shape doesn’t include).
object
Master switch. Defaults to false on fresh install (operator opts in).
Per-task default provider. Keys are concern names (complete | embed | transcribe | tag | caption); values are provider names registered via /admin/system/ai.
object
Ordered fallback list per concern. The router walks transient + rate-limit failures down the chain; permanent/budget/privacy errors short-circuit.
object
object
When true, assets at sensitivity tier restricted or
embargo route to local providers only. Defaults to
true on fresh install.
Provider names considered “local” for the gate above.
object
USD threshold at which a soft-warn audit event fires.
USD ceiling beyond which CheckBudgetBefore rejects calls
with ai_budget_exhausted. Zero (the fresh-install
default) fails-closed with cloud_budget_not_configured
on the very first call until the operator raises it.
Validator findings against the current config (e.g. routing references a provider that isn’t registered). Empty when the config is clean.
object
Stable identifier (routing_missing_concern,
privacy_lock_with_empty_local_list,
routing_undefined_provider, etc.) the admin UI uses
to render a localised message.
Empty when the finding isn’t concern-specific.
Operator-readable English fallback message.
Authentication required, missing, or invalid
object
Human-readable error summary
Example
the request could not be completedExample
{ "error": "authentication required: sign in and retry with a valid session or API token"}Authenticated but missing required capabilities
object
Human-readable error summary
Example
the request could not be completedConfig rejected by validator
object
object
Stable identifier (routing_missing_concern,
privacy_lock_with_empty_local_list,
routing_undefined_provider, etc.) the admin UI uses
to render a localised message.
Empty when the finding isn’t concern-specific.
Operator-readable English fallback message.