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.Documentation Index
Fetch the complete documentation index at: https://docs.superform.xyz/llms.txt
Use this file to discover all available pages before exploring further.
Endpoint
https://erebor.superform.xyzAuth: None
Path Parameters
| Parameter | Type | Description |
|---|---|---|
chain_id | integer | Chain ID (e.g., 8453 for Base, 1 for Ethereum) |
vault_address | string | Vault contract address (checksummed or lowercase) |
Response
Published tree
Not yet published
Response Fields
| Field | Type | Description |
|---|---|---|
published | boolean | Whether the manager has published a tree for this vault |
published_at | string | ISO 8601 timestamp of the most recent publish |
root_hash | string | 32-byte merkle root. Verify this against the onchain root in SuperVaultAggregator before using any proof |
s3_url | string | Direct URL to the full proof JSON artifact |
total_leaves | integer | Number of authorized (hook, params) combinations in the tree |
tree_id | string | UUID of the published tree version |
is_stale | boolean | Whether the published tree is out of date — see below |
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_hashin 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
is_stale is false:
- The published tree was generated from the manager’s current active config
- The artifact is current, but still verify
root_hashagainst the onchainSuperVaultAggregatorstate — 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
Thes3_url is a direct public URL to a JSON file containing the complete merkle tree with all leaf proofs.
Proof Artifact Shape
The JSON ats3_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.
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
| Code | Meaning |
|---|---|
200 | Success — check data.published and data.is_stale |
404 | Vault not registered in Erebor |
500 | Internal error |