Skip to main content
POST
Ingest record

Authorizations

Authorization
string
header
required

API key, not necessarily a JWT. Server derives Organization, permitted actions and Corpus scope; every resource access is authorized.

Body

application/json

Initial request shape. Same source identity creates or corrects a Record. Same external revision with different canonical content conflicts. No revision means canonical Manifest digest identity; no source position means durable acceptance order. Single and batch entry replay share route_family=ingestion. A blob content accepts a verified text/* Blob, read at acceptance, or a Blob whose media type the installation routes to an external normalizer; that normalizer runs after acceptance and its output is the published Manifest, while the Version identity still derives from the submitted Blob. When the normalizer fails, the Version is quarantined with a Diagnostic on the Version read (or, on an optional text/* route, published through the built-in text path with provenance.normalization.fallback). Other media types are rejected with unverified_blob. provenance.normalization is engine-owned and rejected on input. Extension namespaces owned by the pinned plugin are written only by its normalizer output, published on the Version; a submission writing one, top-level or on a Part, is rejected with 422 extension_namespace_owned.

idempotency_key
string
required
Minimum string length: 1
source
object
required
content
object
required
source_revision
string
Minimum string length: 1
source_position
string

Optional monotonic source position, encoded as decimal text to avoid JSON numeric precision loss.

Pattern: ^[0-9]+$
extensions
object

Keys are plugin namespaces. Data is validated against the installed schema version; source data is not a computed Annotation.

provenance
object

Response

Successful response

Durable acceptance outcome, not workflow state. Availability is a separate authorized live read view; omitted before a linked version exists. Infrastructure retry never resolves a Receipt as failed.

receipt_id
string
required
Minimum string length: 1
state
enum<string>
required
Available options:
pending,
resolved
diagnostics
object[]
required
Maximum array length: 20
source
object
required
processing
object
required

Live read view, not a Receipt lifecycle or public workflow identifier. blocked means an outstanding contribution needs intervention; diagnostics describe why. idle means no work currently pending, not a promise of final enrichment. Phase is omitted when idle; required and optional progress do not override Version Availability.

outcome
enum<string>
Available options:
created,
duplicate,
withdrawal_applied,
conflict
record_id
string
Minimum string length: 1
version_id
string
Minimum string length: 1
availability
object