---
title: "Correct a learned fact"
method: PATCH
path: "/business/knowledge-hubs/learned-facts/{factId}"
tags: ["Knowledge hubs"]
---

# Correct a learned fact

`PATCH /business/knowledge-hubs/learned-facts/{factId}`

## Request

- Base URL: `https://api.tryfuse.ai/api/v1`
- URL: `https://api.tryfuse.ai/api/v1/business/knowledge-hubs/learned-facts/{factId}`
- Auth: HTTP basic

Corrects a learned fact's claim text and/or category. Any member of the owning teammate's team may edit. A new claim must stay anonymized — no person or customer names, no contract-level details — or the call answers 422 `LEARNED_FACT_NOT_ANONYMIZED`. The correction reaches the hubs' pages on the next daily learning run. The response carries only the fields this call changes; read the fact back from `GET /business/knowledge-hubs/learned-facts` for its confidence, channels and dates. Retired facts cannot be edited (404).

Errors:
- `404` `LEARNED_FACT_NOT_FOUND` — No active fact with that id, it was already retired, or it belongs to another team (existence is never confirmed).
- `422` `LEARNED_FACT_NOT_ANONYMIZED` — The new claim names a person or customer, or carries a contract-level detail.
- `422` `VALIDATION_FAILED` — Neither claim nor category given, or a value outside its limits or enum.
- `429` `RATE_LIMITED` — More than 30 knowledge-hub/campaign requests in a minute (or 1000 in a day). Knowledge hubs share the campaigns bucket.

Requires one of the following token scopes: campaigns.

## Path parameters

- `factId` string, required: 24-character hex id of the learned fact (from GET /business/knowledge-hubs/learned-facts).

## Request body

- object: At least one of claim or category is required.
  - `claim` string: Corrected claim text (1-1000 characters). Free text — there is no vocabulary — but it must stay anonymized: a deterministic gate answers 422 LEARNED_FACT_NOT_ANONYMIZED when the claim contains an email address, a run of 9 or more phone-like digits, a currency amount in the same claim as deal language (discount, quote, contract, renewal, proposal, negotiated, agreed), or contract vocabulary (renewal date, contract term, termination clause, auto-renew, payment terms, net 30/60/90, master service agreement, MSA, SOW, non-disclosure, NDA). Person and customer names are NOT checked, so keep them out yourself. The edit reaches the hub's pages on the next daily learning run, not immediately.
  - `category` 'overview' | 'products' | 'pricing' | 'icp-use-cases' | 'differentiators' | 'competitors' | 'faq' | 'source-digest' | 'custom' | 'objection' | 'faq-insight': Fact category, one of overview (company summary), products, pricing, icp-use-cases (ideal customers and use cases), differentiators, competitors, faq, source-digest (digest of one source), custom (user-authored), objection (a buyer objection) or faq-insight (a recurring question).

## Response `200`

Success

- object
  - `fact` object, required: The fields the update reports. Read the fact back from the list endpoint for the rest.
    - `id` string, required
    - `claim` string, nullable, required: The claim as stored after this call.
    - `category` 'overview' | 'products' | 'pricing' | 'icp-use-cases' | 'differentiators' | 'competitors' | 'faq' | 'source-digest' | 'custom' | 'objection' | 'faq-insight' | 'null', nullable, required

## Other responses

- `400`: Error
- `401`: Error
- `402`: Error
- `403`: Error
- `404`: Error
- `409`: Error
- `422`: Error
- `429`: Error
- `500`: Error

---

[API](https://skmtc.dev/fuseai/apis/fuse-business-api.md) · [All operations](https://skmtc.dev/fuseai/apis/fuse-business-api/llms.txt) · [OpenAPI document](https://skmtc.dev/fuseai/apis/fuse-business-api/revisions/50d95e0536f4?raw)
