---
title: "Update Brand Fact"
method: PATCH
path: "/api/v1/knowledge-base/facts/{fact_id}"
tags: ["Knowledge Base"]
---

# Update Brand Fact

`PATCH /api/v1/knowledge-base/facts/{fact_id}`

## Request

- Base URL: `https://api.athenahq.ai`
- URL: `https://api.athenahq.ai/api/v1/knowledge-base/facts/{fact_id}`
- Auth: API key in header `x-api-key`

Updates one brand fact's text, source URL, or confidence. Only provided fields change; pass source_url: "" to clear the stored source. Changing the text creates a new fact (new id) and archives the current one; the new fact keeps the current review status and is the fact returned. Source URL and confidence edits update the fact in place and re-match the source to the internal link bank. Review status never changes through this endpoint. Requires a website-admin API key. Also available as the MCP tool `update_brand_fact`.

## Path parameters

- `fact_id` string, uuid, required

## Request body

- object
  - `website_id` string, uuid, required: The website the fact belongs to.
  - `text` string: New fact statement. Caps at 10000 characters, matching the in-app edit dialog (add_brand_facts caps new facts at 2000).
  - `source_url` string: New source URL. An empty string clears the stored source URL.
  - `confidence` 'high' | 'medium' | 'low': New confidence level.

## Response `200`

The updated fact plus a pre-update snapshot of the editable fields

- object
  - `fact` BrandFact, required
    - `id` string, uuid, required
    - `text` string, required: The fact statement.
    - `status` 'approved' | 'pending' | 'rejected', required: Review status of the fact.
    - `confidence` 'high' | 'medium' | 'low' | 'null', nullable, required: Confidence level assigned during ingestion, or null when unrated.
    - `source_url` string, nullable, required: URL the fact was extracted from, stored without protocol.
    - `source_quote` string, nullable, required: Verbatim quote from the source backing the fact.
    - `source_type` 'research' | 'response' | 'upload' | 'content_hub', required: How the fact entered the Knowledge Base.
    - `pillar` BrandFactPillar, nullable, required: The published pillar the fact is filed under, or null when the fact is unfiled.
      - `id` string, uuid, required
      - `name` string, required
    - `created_at` string, required: ISO 8601 timestamp of when the fact was added.
  - `before` object, required: Values of the editable fields before this update.
    - `text` string, required
    - `source_url` string, nullable, required
    - `confidence` 'high' | 'medium' | 'low' | 'null', nullable, required

## Other responses

- `400`: Bad request - Invalid parameters
- `401`: Unauthorized - Invalid or missing API key
- `403`: Forbidden - No admin access to this website, or the Knowledge Base is not enabled for the organization
- `404`: Not found - No fact with this id on the website
- `409`: Conflict - The fact cannot be replaced: it was captured from an AI response, is a hidden duplicate, is rejected, or another edit archived it first (fetch the fact again and retry against the live one). A text change on a fact that has already been replaced returns 404, since the addressed fact is archived.

## Changes

- **2026-11-03** `2d1d86d5e067`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/athenahq/apis/athenahq-api/changes/api/v1/knowledge-base/facts/:fact_id/patch.md)

---

[API](https://skmtc.dev/athenahq/apis/athenahq-api.md) - [All operations](https://skmtc.dev/athenahq/apis/athenahq-api/llms.txt) - [OpenAPI document](https://skmtc.dev/athenahq/apis/athenahq-api/revisions/6cf9ca58edf6?raw)
