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:
- Explanations render in the vertical's vocabulary — an
inspectionexplains "this inspection raised…" rather than "this claim". - Risk policy can key rules on
case_type, so a vertical's required signals and thresholds are configuration, not code.
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.