---
title: "Create Human Evidence Endpoint"
method: POST
path: "/api/projects/{project_id}/human-evidence"
tags: ["runtime_mutations", "ckg"]
---

# Create Human Evidence Endpoint

`POST /api/projects/{project_id}/human-evidence`

Record a reader-selected span as file-captured evidence.

A user action, so it authenticates like the other reader-facing routes
rather than with ``require_kernel_caller`` — and unlike ``/api/evidence``
it cannot create notebook-*captured* variable evidence, whose value must
still come from a kernel read.

The claim's ``content`` is the verified quote; a reader's note becomes the
title, so an agent reading this back never sees an unverified sentence
presented as a quotation from the file.

There is a window between the verifying read and the insert in which the
file can change. It is deliberately not locked: the quote is re-verified on
every read, so a span invalidated in that window simply shows as
``diverged`` the first time the claim is displayed.

## Path parameters

- `project_id` string, required

## Request body

- CreateHumanEvidenceRequest
  - `source` HumanEvidenceSource, required — Where a reader took a quote from, and the quote itself.
    - `source_type` 'file_section' | 'cell', required
    - `content` string, required — The exact text the reader selected.
    - `file_path` string, nullable — Workspace file, for 'file_section' sources.
    - `notebook_id` string, nullable — Notebook id, for 'cell' sources.
    - `cell_id` string, nullable — Cell id, for 'cell' sources.
    - `cell_part` 'source' | 'output' — Which half of a notebook cell a quoted span was taken from.
    - `output_index` integer, nullable — Which output the quote came from, when cell_part is 'output'.
  - `note` string, nullable — Optional reader caption; becomes the claim's title.
  - `recall_priority` 'global' | 'high' | 'medium' | 'low' — How readily a claim should enter an agent's context. This is a query-*independent* prior authored by the agent that files the claim. It is not relevance, confidence, or truth: a Low claim that is highly relevant to the current work must still be able to outrank an irrelevant Global one once the recall system ranks candidates. ``GLOBAL`` is the only value with delivery semantics rather than ranking semantics: it is injected unconditionally into every agent in the workspace. Every claim type carries a priority — evidence, figures, and findings can all be the thing future agents most need to see.

## Response `200`

Successful Response

- CreateHumanEvidenceResponse
  - `claim_id` string, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/quadrillion/apis/quadrillion-cloud-api.md) · [All operations](https://skmtc.net/quadrillion/apis/quadrillion-cloud-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/quadrillion/quadrillion-cloud-api/versions/399077308c86/schema)
