Verification

Get Merkle inclusion proof

Returns the Merkle inclusion proof for a batch-anchored credential: the proof path, batch root, and the on-chain transaction it was committed in. verified is computed by locally recomputing the root from the proof — never trusted from stored status. Pass ?format=signed to receive the bundle wrapped in a signed envelope bound to the issuer DID (requires PROOF_SIGNING_KEY_PEM/PROOF_SIGNING_KEY_ID to be configured; otherwise 503).

get/verify/{publicId}/proof

Request

  • Base URL: https://app.arkova.ai/api/v1
  • URL: https://app.arkova.ai/api/v1/verify/{publicId}/proof
  • Auth: one of:
    • HTTP bearer
    • API key in header X-API-Key
    • none

Path parameters

publicIdstring required

The public ID of the credential

Query parameters

format'signed'

Pass signed to receive a DID-bound signed proof envelope instead of the raw bundle.

Response

Merkle inclusion proof

public_idstring
fingerprintstring
merkle_rootstring nullable
merkle_proofstring[] nullable
tx_idstring nullable
block_heightinteger nullable
block_timestampstring date-time nullable
batch_idstring nullable
verifiedboolean

Recomputed locally from the proof path — never trusted from stored anchor status.

verdict'valid' | 'invalid' | 'unverifiable'

R3: the same computation as verified, as three states. invalid means a check RAN and FAILED (an alarm; equivalent to verified=false). unverifiable means a check could not be completed — the duplicate-node structural guard was not exercised, either because the record carries no merkle_index/leaf_count or because the stored branch length does not match the tree its leaf_count describes — and is NOT an alarm. valid and unverifiable partition the old verified=true bucket; verified is unchanged and not deprecated.

verdict_notestring

The measured / asserted / NOT-asserted statement for verdict (Constitution §1.5). Always accompanies verdict.

proof_bundleobject nullable

PROOF-05: self-contained bundle (block header, OP_RETURN payload, schema version, and — R1 — the tx_inclusion_branch + tx_block_index that let a verifier confirm transaction inclusion in the block locally) when the confirmation layer has been populated; null otherwise. The two R1 fields are additive and nullable (no schema-version bump) and are null on records populated before migration 0427.

Changes

No recorded changes to this operation across all 1 revision of this API.