docimprint

← All docs

Evidence bundles

DocImprint ·

What is in a DocImprint evidence bundle?

manifest.json listing artifact SHA-256 hashes, EIP-191 signature, screenshot PNG, PDF, Markdown, OCR text, and optional Merkle root for citation proofs. Verify free with GET /v1/extract/{id}/verify.

Evidence bundle

Every stored extract produces a verifiable evidence bundle: Markdown, screenshot, OCR text, structured data, a SHA-256 manifest, signature.json (EIP-191 metadata), and optional Base L2 attestation. Complete bundles require a platform signature for valid: true on deep verify. Auditors can verify offline: download the ZIP, recompute manifest.json SHA-256, verify the signature against GET /v1/keys (active and retired keys), and check Merkle citation proofs — without trusting our database.

  • Deep verifyGET /v1/extract/:id/verify re-fetches R2 and recomputes every hash (409 on tamper; unsigned complete bundles fail)
  • Citation proofsPOST .../verify-citation returns Merkle proof[]
  • Version history — pass parent_bundle_id; query GET .../history
  • Legal holdPUT .../hold blocks delete/GC; hold and handoff events are audit-logged (handoffs are application-layer, not cryptographically signed)
  • Action receipts — tools/responses include rcpt_…; list with GET .../{id}/receipts, verify with GET .../receipts/{receipt_id}/verify (free, not owner-gated)
  • GET/v1/extract/{id}Free

    Bundle status

    Fetch bundle metadata: status, manifest_sha256, artifact refs, and notarization fields without downloading the ZIP.

  • GET/v1/extract/{id}/verifyFree

    Verify bundle

    Recompute SHA-256 over stored artifacts and compare to the signed manifest. Returns verified:true or 409 if anything was tampered with.

  • POST/v1/extract/{id}/verify-citationFree

    Verify citation

    Prove a chunk_id + quoted text is included in the bundle Merkle tree. Body: { chunk_id, text }. Use after collections ask / search citations.

  • GET/v1/extract/{id}/historyFree

    Version history

    Walk parent_bundle_id / superseded_by links for re-extracts of the same source. Useful when a page changed and you need the prior version.

  • GET/v1/extract/{id}/downloadFree

    Download ZIP

    Stream the full evidence package (manifest.json, signature.json, screenshot, PDF, Markdown, OCR text) as one archive.

  • GET/v1/extract/{id}/manifestFree

    Get manifest

    Download raw manifest.json bytes with X-Manifest-SHA256 header. Prefer verify for integrity checks; use this for offline inspection.

  • POST/v1/extract/{id}/notarize$0.05

    Notarize

    Anchor the bundle manifest hash on Base L2 (EAS attestation). Returns tx / attestation ids for public timestamping.

  • PUT/v1/extract/{id}/holdFree

    Legal hold

    Freeze a bundle so retention GC and DELETE cannot remove it. Use when litigation or investigation requires preservation.

  • DELETE/v1/extract/{id}/holdFree

    Release legal hold

    Clear an existing hold so normal retention and delete are allowed again.

  • DELETE/v1/extract/{id}Free

    Delete bundle

    Permanently delete stored evidence and artifacts. Blocked while on legal hold or after notarization until policy allows.

  • POST/v1/extract/{id}/revokeFree

    Revoke

    Revoke an EAS attestation for a previously notarized bundle so auditors see it as withdrawn. Notarize first.

  • GET/v1/extract/{id}/provenanceFree

    Provenance log

    List application-layer events (agent_id, action, query, result_summary) appended to this bundle over time.

  • POST/v1/extract/{id}/provenanceFree

    Append provenance

    Record what an agent did with this bundle (action + optional query/summary). Builds an audit trail beyond the signed ZIP.

  • POST/v1/extract/{id}/handoffFree

    Agent handoff

    Record a from_agent → to_agent custody transfer with an optional note. Call when ownership of the workflow moves between agents.

  • GET/v1/extract/{id}/chainFree

    Custody chain

    Ordered list of handoffs for a bundle — who held it and when. Pair with receipts for full chain-of-custody.

  • GET/v1/extract/{id}/receiptsFree

    List action receipts

    Signed receipts that bind a specific agent action to this bundle’s manifest_sha256. Proof the action ran against this exact evidence.

  • GET/v1/extract/receipts/{receipt_id}/verifyFree

    Verify action receipt

    Independently verify a receipt_id (capability token). Not owner-gated — anyone with the id can check signature + manifest binding.

bashDeep verify (free)
curl https://api.docimprint.com/v1/extract/ev_abc123/verify
# Deep verify (default): re-hashes manifest + artifacts from R2
# Add ?quick=true for status-only check
bashPublished signing keys
curl https://api.docimprint.com/v1/keys
# Returns active and retired secp256k1 keys (key_id, signer_address, retired_at)
# Use with manifest signature + signature.json from the bundle ZIP for offline verify
bashVersion history
curl https://api.docimprint.com/v1/extract/ev_abc123/history
bashNotarize ($0.05)
curl -X POST https://api.docimprint.com/v1/extract/ev_abc123/notarize \
  -H "X-Payment: <eip712-signed-usdc-transfer>"

Bundle output details: Extract guide → Outputs

Related