Anchor any file to Bitcoin with one API call. Hash-in, proof-out.
artifact → artifact.proof
Zero dependencies. Python 3.8+.
pip install umarise-core-sdkfromumariseimportUmariseCore, hash_bufferimportoscore=UmariseCore(api_key=os.environ["UMARISE_API_KEY"])
withopen("release.tar.gz", "rb") asf:
file_hash=hash_buffer(f.read())
origin=core.attest(file_hash)
print(origin.origin_id) # donefromumariseimportUmariseCore, hash_buffercore=UmariseCore()
withopen("release.tar.gz", "rb") asf:
file_hash=hash_buffer(f.read())
result=core.verify(file_hash)
ifresult:
print(f"Existed since {result.captured_at}")Verification is public. No account, no API key, no vendor dependency.
npx @umarise/cli anchor release.tar.gz
# → release.tar.gz.proofVerify offline:
npx @umarise/cli verify release.tar.gz.proof
# Hash Match ✓ | Bitcoin Block #881234 | 2026-03-05 | VALID| Method | Auth | Description |
|---|---|---|
health() | Public | API health check |
resolve(origin_id=...) | Public | Lookup by origin ID |
resolve(hash=...) | Public | Lookup by hash |
verify(hash) | Public | Check if hash is anchored |
proof(origin_id) | Public | Download .ots proof |
attest(hash) | API Key | Create anchor |
hash_buffer(bytes) | — | SHA-256 hash, no network |
Use the GitHub Action for automated anchoring:
- uses: AnchoringTrust/anchor-action@v1with:
file: build.tar.gzenv:
UMARISE_API_KEY: ${{ secrets.UMARISE_API_KEY }}Every build gets a .proof file. Verifiable offline, independent of Umarise.
Unlicense (Public Domain)