Provenance

Guide: the Attested Capture Platform

The capture→attest→verify pipeline is vertical-agnostic. The same primitive, cryptographic proof that specific media came from a real device at a real moment, powers insurance claims, field inspections, marketplace escrow, proof-of-work, and proof-of-presence. You don't integrate four products; you integrate one platform and pick the vocabulary.

The neutral surface

Every insurance-flavored /v1/claims/* route has an identical, vertical-neutral alias under /v1/verifications/*, backed by the same handler — there is no forked logic, so the two surfaces never drift:

| Neutral (canonical) | Insurance alias (kept forever) | | --- | --- | | POST /v1/verifications/attest | POST /v1/claims/attest | | POST /v1/verifications/verify | POST /v1/claims/verify | | GET /v1/verifications | GET /v1/claims | | GET /v1/verifications/{id}/provenance | GET /v1/claims/{id}/provenance | | GET /v1/verifications/{id}/links | GET /v1/claims/{id}/links | | POST /v1/verifications/{id}/escalate | POST /v1/claims/{id}/escalate |

In the SDK, prov.verifications.* mirrors prov.claims.*.

case_type

Tag each attestation with the vertical it belongs to:

curl $PROVENANCE_API/v1/verifications/attest \
  -H "Authorization: Bearer $PRV_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "bundle": { ... }, "case_type": "inspection" }'

case_type is one of insurance_claim (the default when omitted), inspection, escrow, proof_of_work, presence, or custom. Omitting it is byte-identical to the legacy insurance behavior. custom requires the enterprise plan.

The case type flows into two places:

A vertical is config, not code

Because case_type is a policy fact, you can require different signals per vertical without a code change. For example, "inspections must carry a biometric" is a single risk-policy rule:

{
  "rules": [
    { "id": "inspections-need-biometric",
      "when": [{ "fact": "case_type", "op": "eq", "value": "inspection" }],
      "require": { "signal": "biometric" } }
  ]
}

Set it with PUT /v1/policy?domain=claims_risk. See Policies.

Pricing

Verticals reuse the existing attest/verify meters — there is no per-vertical surcharge. Only the custom case type (and its bespoke policy) is gated to the enterprise plan.

Where to go next