Proof of Reserves

Get Proof of Reserves signing keys

Changed on

List the zh_por_pub Ed25519 public keys used to sign Merkle Sum Tree root commitments, with the range of snapshot dates each one covers.

The list is a discovery convenience, not a trust anchor: it is served over your authenticated partner session but is not itself signed. Pin the key fingerprint you are given out-of-band at onboarding and compare against it.

Keys are region-global rather than platform-scoped, so this endpoint returns the same list for every partner in a region. Unlike the root and proof endpoints it is not gated on Proof of Reserves being enabled for your platform, though the same authentication and device checks still apply.

To verify a commitment, select the entry whose keyId equals the commitment's signingKeyId and check signature against that entry's publicKey.

The validity window is not checkable yet. The only date a root commitment carries is snapshotTs, which is currently emitted as the Unix epoch, so there is nothing meaningful to compare against validFromSnapshotDate..validToSnapshotDate. Do not gate verification on that comparison in this release, and do not substitute your own clock for the missing value.

get/por/keys

Request

  • Base URL
    https://api.cert.zerohash.com
  • URL
    https://api.cert.zerohash.com/por/keys
  • Auth
    API key in header X-SCX-API-KEY and API key in header X-SCX-PASSPHRASE

Headers

X-SCX-SIGNEDstring required

HMAC-SHA256 signature of the request, base64-encoded. See the Authentication guide for the exact signing formula.

X-SCX-TIMESTAMPstring required
Example:1678901234

Current Unix timestamp in seconds. Must be within 60 seconds of server time or the request is rejected.

X-Request-Idstring uuid

Optional client-supplied request ID used for tracing and idempotency. Must be a UUID v4. When omitted, zerohash generates one and returns it in the response X-Request-Id header.

Response

Current and previously rotated signing keys

Example response

{
  "keys": [
    {
      "key_id": "Wallet:3b779fac-a9c2-4bef-a7b2-05ee8807af96",
      "public_key": "MCowBQYDK2VwAyEAsjfXVOjTHH+pv3CTmavkvpfnHrRcGz13s6JDtvNLyRo=",
      "valid_from_snapshot_date": "2026-07-20"
    }
  ]
}

Changes