---
title: "Update brand fact status"
method: PATCH
path: "/api/mcp/projects/{projectId}/brand-profile/facts/{factId}"
tags: ["Brand"]
---

# Update brand fact status

`PATCH /api/mcp/projects/{projectId}/brand-profile/facts/{factId}`

## Request

- Base URL: `https://app.searchable.com`
- URL: `https://app.searchable.com/api/mcp/projects/{projectId}/brand-profile/facts/{factId}`
- Auth: HTTP bearer

Mark one AI-observed brand fact, a statement AI platforms make about the brand, as correct (`pass`) or incorrect (`fail`), or clear the verdict (`unverified`). This is the app's brand-facts verification. Take the fact's `id` from the brand profile's `facts`. An id that is not one of the project's facts returns 404 `not_found` and changes nothing. On an active project on a paid plan, marked facts feed the daily update of the brand context (`profile.positioning`): correct facts are worked into it, and incorrect ones are noted as not true. Needs the Member role and the `knowledge:manage` capability. A pitch project that is not currently active refuses with 409 `INACTIVE_PITCH_PROMPT_MUTATION`.

## Path parameters

- `projectId` string, uuid, required
- `factId` string, uuid, required

## Request body

- UpdateBrandFactStatusRequest
  - `status` 'pass' | 'fail' | 'unverified', required: `pass` marks the fact correct, `fail` incorrect, and `unverified` clears the verdict.

## Response `200`

Fact status updated.

- UpdateBrandFactStatusResponse
  - `success` boolean, required
  - `fact` object, required: The fact with its new status.
    - `id` string, uuid, required
    - `fact` string, required: What the AI platform said about the brand.
    - `platform` string, required
    - `verificationStatus` 'pass' | 'fail' | 'unverified', required
    - `observedAt` string, date-time, required
  - `previousStatus` 'pass' | 'fail' | 'unverified', required: The fact's status before this request.

## Other responses

- `400`: Error response. `code` is the machine-readable reason — see the [error reference](/api/errors) for the full catalog and remediation per code.
- `401`: Error response. `code` is the machine-readable reason — see the [error reference](/api/errors) for the full catalog and remediation per code.
- `403`: Error response. `code` is the machine-readable reason — see the [error reference](/api/errors) for the full catalog and remediation per code.
- `404`: Error response. `code` is the machine-readable reason — see the [error reference](/api/errors) for the full catalog and remediation per code.
- `409`: Error response. `code` is the machine-readable reason — see the [error reference](/api/errors) for the full catalog and remediation per code.
- `429`: Rate limited. Usually the per-API-key REST limit (600 requests/minute); on Google-backed endpoints it can also relay an upstream Google rate limit. `Retry-After` (seconds) is present when the limit was applied by Searchable's own rate limiter; it may be absent when an upstream provider rate-limits.

## Changes

- **2026-11-03** `28a5e2a65cd3`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/searchable/apis/searchable-rest-api/changes/api/mcp/projects/:projectId/brand-profile/facts/:factId/patch.md)

---

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