---
title: "Record Source"
method: POST
path: "/memories/source"
tags: ["provenance"]
---

# Record Source

`POST /memories/source`

## Request

- Base URL: `https://cathedral-ai.com` (the document declares no server; this is the origin it was published from)
- URL: `https://cathedral-ai.com/memories/source`
- Auth: none declared. Required headers: `authorization`

Record a source that contributed to this agent's knowledge.

The agent pre-computes SHA256(source_content) and submits it. Cathedral
anchors this hash on BCH, creating an immutable record of what the agent
was reading and when.

At snapshot time, all source hashes are folded into a source_chain_hash
that is included in the snapshot and BCH anchor — proving not just what
the agent knew, but where that knowledge came from.

## Headers

- `authorization` string, required

## Request body

- SourceCreate
  - `source_type` string, required: One of: url, document, api, file, manual
  - `source_identifier` string, required: URL, file path, API endpoint, or other identifier for the source.
  - `content_hash` string, required: SHA256 hex digest of the source content at ingestion time. Compute this yourself before calling: hashlib.sha256(content.encode()).hexdigest()
  - `memory_ids` string[], nullable: Optional list of memory IDs that were created from this source.

## Response `201`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/cathedral-ai/apis/cathedral-memory-service.md) · [All operations](https://skmtc.dev/cathedral-ai/apis/cathedral-memory-service/llms.txt) · [OpenAPI document](https://skmtc.dev/cathedral-ai/apis/cathedral-memory-service/revisions/e40fefc11dcf?raw)
