Verifications

A Verification is the record of submitting an artifact to SourceVerify, running it through the AI pipeline, and recording the verdict.

Lifecycle

submit  →  hash + upload (S3)  →  model inference  →  pin to IPFS  →  anchor on-chain
  1. The client submits an artifact (raw bytes or an S3 reference).
  2. SourceVerify computes a SHA-256 contentHash and stores the bytes in S3 (S3_ARTIFACTS_BUCKET).
  3. Verification metadata is written to Postgres (Artifact, Verification).
  4. The verification record JSON is pinned to IPFS via Pinata → ipfsCid.
  5. The proof tuple is anchored on-chain via viem → txHash, blockNumber.

Submit

curl -X POST https://api.sourceverify.app/v1/verifications \
  -H "X-Api-Key: $SOURCEVERIFY_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "artifactRef": "s3://producer-uploads/article-42.pdf",
    "modality": "document"
  }'

List

List endpoints accept page and perPage query parameters.

curl 'https://api.sourceverify.app/v1/verifications?page=1&perPage=20' \
  -H "X-Api-Key: $SOURCEVERIFY_API_KEY"

Fetch one

curl https://api.sourceverify.app/v1/verifications/$VERIFICATION_ID \
  -H "X-Api-Key: $SOURCEVERIFY_API_KEY"

The response includes the IPFS cid, the on-chain txHash, and the verdict.

Verdict semantics

Verdict Meaning
authentic Content matches a registered original.
manipulated Hash matches a known artifact but the bytes diverge in detectable ways.
synthetic The artifact was generated by a known model (deepfake detector hit).
unknown No registered match, no synthetic signal.

Pair the verdict with the on-chain proof for end-user verification: a third party can re-compute the SHA-256 of the artifact and look up the tuple on-chain.

See Proof & Anchoring for the format of the on-chain tuple.