---
title: "Update complexity analyzer config"
method: PUT
path: "/api/governance/complexity-analyzer-config"
tags: ["Governance"]
---

# Update complexity analyzer config

`PUT /api/governance/complexity-analyzer-config`

Replaces the full complexity analyzer runtime config and hot-reloads the governance plugin. Tier thresholds must satisfy 0 < simple_medium < medium_complex < complex_reasoning < 1.

## Request body

- object — Full runtime configuration for complexity routing analysis.
  - `tier_boundaries` object, required — Score thresholds for complexity tier classification. All values must satisfy 0 < simple_medium < medium_complex < complex_reasoning < 1.
    - `simple_medium` number, required — Score boundary between SIMPLE and MEDIUM tiers
    - `medium_complex` number, required — Score boundary between MEDIUM and COMPLEX tiers
    - `complex_reasoning` number, required — Score boundary between COMPLEX and REASONING tiers
  - `keywords` object, required — Editable keyword lists used by the complexity analyzer. Only the four user-facing dimensions are exposed; `reasoning_keywords` entries drive the reasoning tier override. Matching is normalized to lowercase and duplicates are removed on save.
    - `code_keywords` string[], required
    - `reasoning_keywords` string[], required
    - `technical_keywords` string[], required
    - `simple_keywords` string[], required

## Response `200`

Complexity analyzer config updated successfully

- object — Full runtime configuration for complexity routing analysis.
  - `tier_boundaries` object, required — Score thresholds for complexity tier classification. All values must satisfy 0 < simple_medium < medium_complex < complex_reasoning < 1.
    - `simple_medium` number, required — Score boundary between SIMPLE and MEDIUM tiers
    - `medium_complex` number, required — Score boundary between MEDIUM and COMPLEX tiers
    - `complex_reasoning` number, required — Score boundary between COMPLEX and REASONING tiers
  - `keywords` object, required — Editable keyword lists used by the complexity analyzer. Only the four user-facing dimensions are exposed; `reasoning_keywords` entries drive the reasoning tier override. Matching is normalized to lowercase and duplicates are removed on save.
    - `code_keywords` string[], required
    - `reasoning_keywords` string[], required
    - `technical_keywords` string[], required
    - `simple_keywords` string[], required

## Other responses

- `400` — Bad request
- `500` — Internal server error
- `503` — Config store not available

---

[API](https://skmtc.net/getbifrost/apis/bifrost-api.md) · [All operations](https://skmtc.net/getbifrost/apis/bifrost-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/getbifrost/bifrost-api/versions/f8cab88f64ea/schema)
