Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.powabase.ai/llms.txt

Use this file to discover all available pages before exploring further.

Project Settings expose a typed registry of configuration knobs (extraction defaults, copilot behavior, model selection, etc.). The registry defines each setting’s default; user overrides are stored per-project and merged at read time. Secret-typed settings are returned with a mask placeholder — sending that placeholder back is treated as “no change”. Setting keys come from the registry as-is — most use UPPER_SNAKE_CASE (e.g. EXTRACTION_DEFAULT_METHOD, COPILOT_TEMPERATURE), with a few historical lowercase keys (e.g. copilot_model). All values are persisted as strings, so when sending bools or numbers, stringify them ("true", "0.7"). Categories defined by the registry: copilot, agents, tools, knowledge-indexing, knowledge-retrieval, compaction, sources.

Common Patterns

Use GET to discover the full set of settings (with their defaults, current values, types, and category metadata). Use PUT for bulk updates from a settings UI. Use DELETE on a key to revert a single override; use reset-category to revert an entire group at once.

GET /api/settings

Return every setting in the registry with its default value, current override (if any), category, type, and (for secret settings) a masked representation. Category metadata accompanies the response so a UI can render labels and grouping.
response = requests.get(f"{BASE_URL}/api/settings", headers=headers)

PUT /api/settings

Bulk-update overrides. The body is { "settings": { key: value, ... } }. Each value is validated against its registry definition; on any failure the whole request is rejected with per-key errors and nothing is written. For secret settings, sending back the mask placeholder unchanged is silently skipped (so a UI can round-trip the full settings object without leaking or clobbering secrets).
{
  "settings": {
    "EXTRACTION_DEFAULT_METHOD": "mistral",
    "COPILOT_TEMPERATURE": "0.5"
  }
}
requests.put(f"{BASE_URL}/api/settings", headers=headers, json={"settings": {"EXTRACTION_DEFAULT_METHOD": "mistral"}})

DELETE /api/settings/

Remove a single override, reverting that setting to its registry default. Returns the key and the default value (empty string for secret-typed settings).
key
string
required
A registry key. Unknown keys return 404.
requests.delete(f"{BASE_URL}/api/settings/EXTRACTION_DEFAULT_METHOD", headers=headers)

POST /api/settings/reset-category

Remove every override in a category at once. Returns the list of keys that were reset.
category
string
required
One of the registry categories: copilot, agents, tools, knowledge-indexing, knowledge-retrieval, compaction, sources. Unknown categories return 400.
{ "category": "copilot" }
requests.post(f"{BASE_URL}/api/settings/reset-category", headers=headers, json={"category": "copilot"})

Error Responses

Settings routes return {"error": "<message>"} (PUT additionally includes details with per-key errors). The codes below are the documentation labels we use for each failure mode.
StatusDescription
400One or more setting values failed registry validation; PUT response includes a details map of per-key errors
400The given category is not in the registry (reset-category)
400No settings provided (PUT body has empty settings object)
404The given key is not in the registry (DELETE)