Skip to main content
The merkle publish endpoint returns the latest published merkle tree metadata for any vault. It is public — no authentication required. Use it to retrieve the proof artifact, verify the root hash, and check whether the published tree reflects the manager’s current active configuration.

Endpoint

Base URL: https://erebor.superform.xyz
Auth: None

Path Parameters

Response

Published tree

Not yet published

Response Fields

Understanding is_stale

is_stale: true when the published tree is not the vault’s current active tree (including the case where no current active tree exists). The published artifact at s3_url was generated from a config version that no longer matches the vault’s current state. When is_stale is true:
  • The root_hash in this response may no longer match the current onchain root
  • The proof artifact may not cover all currently authorized operations
  • Wait for the manager to re-publish before relying on these proofs for execution
When is_stale is false:
  • The published tree was generated from the manager’s current active config
  • The artifact is current, but still verify root_hash against the onchain SuperVaultAggregator state — publishing updates the off-chain record; the onchain root is updated separately through the proposal-timelock-execute cycle
Even when is_stale: false, always verify root_hash against the onchain SuperVaultAggregator before passing proofs to executeHooks(). The off-chain publish and the onchain root sync are independent operations.

Fetching the Proof Artifact

The s3_url is a direct public URL to a JSON file containing the complete merkle tree with all leaf proofs.

Proof Artifact Shape

The JSON at s3_url matches the MerkleTreeWithLeaves shape returned by GET /api/v1/merkle/proofs. Each leaf contains the hook address and name, encoded argument values, leaf hash, index in the tree, and the merkle proof path.
Pass leaf.proof as strategyProofs[i] when calling executeHooks().

Caching

Responses are cached — 60 seconds on a successful hit, 30 seconds on a negative (unpublished) response. Build polling intervals of at least 60 seconds around this endpoint.

Error Codes