---
title: "Verify, replace, or remove one fact source"
method: POST
path: "/briefs/{id}/sources"
tags: ["Briefs"]
---

# Verify, replace, or remove one fact source

`POST /briefs/{id}/sources`

## Request

- Base URL: `https://next.frase.io/api/v1`
- URL: `https://next.frase.io/api/v1/briefs/{id}/sources`
- Auth: API key in header `X-API-KEY`

Records a durable decision about one claim/source pair. `human_verified` vouches for the page; `removed` removes only the link and keeps the claim. To replace a source, send its `decision_url` from GET /briefs/{id}/facts as `source_url` and the new page as `replacement_url`. The server also resolves a currently displayed replacement URL back to its durable key when unambiguous.

## Path parameters

- `id` string, uuid, required

## Request body

- object
  - `claim` string, required: The exact claim text returned by the fact ledger.
  - `source_url` string, uri, required: The source's `decision_url`, or its visible `url` when no decision_url is present.
  - `replacement_url` string, uri: The new page replacing source_url. Allowed only with human_verified.
  - `decision` 'human_verified' | 'removed', required
  - `quote` string: An optional exact supporting sentence from the page.

## Response `200`

The recorded decision and its durable decision_url.

## Other responses

- `400`: Validation failed
- `401`: Authentication failed
- `403`: Forbidden - action not allowed on this resource
- `404`: Resource not found

---

[API](https://skmtc.dev/frase/apis/frase-api.md) · [All operations](https://skmtc.dev/frase/apis/frase-api/llms.txt) · [OpenAPI document](https://skmtc.dev/frase/apis/frase-api/revisions/7fb75d89f7a4?raw)
