Register, verify, and prove content existed at a point in time. Sub-millisecond. Privacy-preserving. Independently verifiable.
No blockchain. No gas fees. No file modification. Just cryptographic proof.
Submit content or its SHA-256 hash. Your content is never stored — only the hash is recorded on the Merkle chain. You get a cryptographic proof receipt back instantly.
Prove content hasn't changed since registration. The chain recomputes the hash and validates integrity mathematically — if any prior entry was tampered with, verification fails.
Inclusion proofs are self-contained and can be verified offline. No server trust required. Anyone with the proof can independently confirm authenticity.
Everything you need to establish content provenance. Nothing you don't.
Registration completes in under a millisecond. No block times, no confirmation delays, no queue.
Content is never stored or transmitted. Only SHA-256 hashes touch the chain. Pre-hash locally for full privacy.
Each entry commits to all previous entries via Merkle Mountain Range. Alter one record and every subsequent hash breaks.
Inclusion proofs are cryptographically self-contained. Verify anywhere, anytime, without server access.
Six endpoints. One HTTP call to register. Python SDK with async support. Integrate in minutes.
Rising Sun License. Free for personal use, education, and research. Commercial terms are simple and transparent.
Purpose-built for content provenance. No compromise.
| Feature | Etch | C2PA | On-chain attestation |
|---|---|---|---|
| Sub-millisecond registration | ✓ | N/A | ✗ |
| Content never stored | ✓ | ✗ | Varies |
| Offline verification | ✓ | ✓ | ✗ |
| No gas fees | ✓ | N/A | ✗ |
| Tamper-evident chain | ✓ | ✓ | ✓ |
| No file modification required | ✓ | ✗ | ✓ |
Register your first proof with a single HTTP call or the Python SDK.
curl -X POST https://etch.locker/v1/proof \ -H "Content-Type: application/json" \ -d '{"content": "My original article", "label": "Blog: Launch Day"}' # Response { "proof_id": 0, "content_hash": "a3f1...", "timestamp": 1710000000.0, "mmr_root": "7e02...", "chain_depth": 1 }
from etch import EtchClient async with EtchClient("https://etch.locker") as client: # Register content receipt = await client.register("My original article") print(receipt.proof_id) # 0 # Verify it later result = await client.verify( receipt.proof_id, "My original article" ) assert result.verified # True
# Content never leaves your machine HASH=$(echo -n "secret document" | sha256sum | cut -d' ' -f1) curl -X POST https://etch.locker/v1/proof \ -H "Content-Type: application/json" \ -d "{\"content_hash\": \"$HASH\"}"
from etch import AuditChain, verify_inclusion_proof chain = AuditChain() entry = chain.append( "content_proof", {"content_hash": "a3f1..."} ) proof = chain.generate_proof(entry.leaf_index) assert verify_inclusion_proof(proof) # offline!
Clean REST API. JSON in, JSON out. Full OpenAPI docs at /docs.
| Method | Endpoint | Description |
|---|---|---|
| CONTENT PROOFS | ||
| POST | /v1/proof |
Register content and get a proof receipt |
| POST | /v1/proof/batch |
Register up to 1,000 items in a single call |
| GET | /v1/proof/{id} |
Retrieve a proof receipt by ID |
| GET | /v1/proof/hash/{hash} |
Look up a proof by SHA-256 content hash |
| GET | /v1/proof/recent |
List recent proofs, newest first |
| GET | /v1/proof/stats |
Chain statistics and current MMR root |
| POST | /v1/proof/{id}/verify |
Verify content integrity and chain validity |
| C2PA COMPATIBILITY | ||
| POST | /v1/c2pa/manifest |
Register a C2PA manifest on the Etch chain |
| GET | /v1/c2pa/manifest/{id} |
Retrieve manifest with inclusion proof |
| POST | /v1/c2pa/verify |
Verify manifest integrity against the chain |
| POST | /v1/c2pa/bridge |
Bridge an existing Etch proof to C2PA format |
Anyone who needs to prove what existed, when.
Prove article authenticity and exact publication time. Combat misinformation with cryptographic evidence.
Timestamp contracts, evidence, and communications. Tamper-evident records that hold up to scrutiny.
Prove data provenance for EU AI Act compliance. Document training data origins before they're questioned.
Establish creation timestamps for intellectual property. Prove you made it first, without exposing the work.
Rising Sun License. Use it freely. Build on it commercially.