A HAHS receipt is a signed claim. An anchored HAHS receipt is a signed claim plus a tamper-evident inclusion proof against a public Base block. The Anchor API batches receipt hashes into a Merkle root and posts the root to Base every hour. Counterparties verify the Merkle path locally.
Three calls. Nothing else.
The receipt body never leaves your machine. Only the canonical SHA-256 is sent. The hash is one-way: we cannot read or reconstruct the receipt.
POST https://api.thehiveryiq.com/v1/anchor Authorization: Bearer hk_pro_xxxxxxxxxxxxxxxxxxxx Content-Type: application/json { "canonical_sha256": "<base64url SHA-256 of the JCS body>" }
{
"hahs_anchor": "urn:hahs:anchor:pending:2026-05-25T17:00Z:7f2e1a93",
"batch_id": "2026-05-25T17:00Z",
"eta_seconds": 3600
}
{
"hahs_anchor": "urn:hahs:anchor:base:18472193:0xabcd1234...:7f2e1a93",
"network": "base",
"block_height": 18472193,
"tx_hash": "0xabcd1234ef567890...",
"merkle_root": "sha256:9a67...4d21",
"merkle_path": ["sha256:...", "sha256:..."],
"verified_at": "2026-05-25T17:01:14Z"
}
The Python and TypeScript SDKs handle the call for you. Pass api_key + anchor=True on a Pro key, or anchor every receipt by default on Scale and Enterprise.
# Python — hive-protocol v0.2.0 from hive import hahs receipt = hahs.issue( symbol="USDC", units=10, amount_usd=145, recipient="0xabc...", issuer_sk=sk, api_key="hk_pro_xxxxxxxx", anchor=True, ) # receipt["hahs_anchor"] populated. receipt["tier"] == "pro".
// TypeScript — @hive-protocol/sdk v0.2.0 import { hahs } from "@hive-protocol/sdk"; const r = await hahs.issue({ symbol: "USDC", units: 10, amountUsd: 145, recipient: "0xabc...", issuerSk: sk, apiKey: "hk_pro_xxxxxxxx", anchor: true, });
| Tier | API key prefix | Receipts | Anchored | Verifier |
|---|---|---|---|---|
| Free | none | 100/day | — | Local only |
| Pro | hk_pro_* | 50k/mo | On demand | Priority hosted |
| Scale | hk_scale_* | Unlimited | Every receipt | Dedicated SLA |
| Enterprise | hk_ent_* | Unlimited | Every receipt | On-prem image |
Pay with USDC on Base. Reference your X handle or domain in the transaction memo. API key delivered within one business day to the email or DID listed in the memo.
In the memo, include: tier=pro|scale, contact=<email or domain>, optional issuer_did=<your did>. Annual prepay: 10× the monthly rate, 2 months free.
https://thehiveryiq.com/.well-known/issuers/<did>.jsondid:hive:<your-handle>Counterparties verifying an anchored receipt are expected to:
issuer_pubkey through the Hive Issuer Registry if the receipt claims issuer_verified: true.merkle_root recovered from the Base transaction at block_height.tier == "free" if the use case is regulated (signature still valid, but issuer identity is not registry-verified).The local SDK hive.hahs.verify() does steps 1 and the canonical re-hash. Steps 2 and 3 are the network calls Pro/Scale/Enterprise subscribers pay for.