---
title: "Latest on-ledger anchor of the MPT registry (free)"
method: GET
path: "/api/mpt/anchor"
tags: ["Tokens"]
---

# Latest on-ledger anchor of the MPT registry (free)

`GET /api/mpt/anchor`

## Request

- Base URL: `https://www.xrplhub.io`
- URL: `https://www.xrplhub.io/api/mpt/anchor`
- Auth: none required

The BIS Working Paper 1374 pattern: after each cron pass the registry index is canonicalised, a Merkle root is computed over the issuance records, and that root is committed in a Memo on an AccountSet transaction from a dedicated anchor wallet (r9dQS1oGms3B7SdY6nyU24Dy7dWyWXuJXb — NOT the credential issuer). Returns the latest root, its tx hash, ledger index, issuance/issuer counts, coverage label, and the exact canonicalisation + Merkle scheme so a third party can reproduce the root from /api/mpt/search + /api/mpt/issuer and check that the registry rows we publish match the root we anchored on-ledger at a known time. (The index is mutable and can be re-anchored; this proves published-rows-match-anchored-root, not immutability.) Free, no signup.

## Response `200`

The latest anchor plus the verification recipe.

- object
  - `status` 'ok' | 'misconfigured' | 'failing' | 'pending' | 'disabled': Headline — a failed/misconfigured attempt never reads as 'nothing happened'.
  - `message` string
  - `health` object
    - `anchoringEnabled` boolean
    - `signingKeyPresent` boolean
    - `misconfigured` boolean: anchoringEnabled && !signingKeyPresent — fails every run until fixed
    - `lastAttempt` object, nullable: most recent MptAnchor row, any status
    - `lastFailure` object, nullable: most recent failed/misconfigured attempt
  - `anchoringEnabled` boolean
  - `latest` object, nullable
    - `canonVersion` string
    - `merkleRoot` string: 64-hex lowercase SHA-256 Merkle root
    - `issuanceCount` integer
    - `issuerCount` integer
    - `coverage` 'complete-per-known-issuer' | 'partial'
    - `freshnessFloorAt` string, date-time, nullable
    - `status` 'pending' | 'anchored' | 'failed'
    - `txHash` string, nullable
    - `ledgerIndex` integer, nullable
    - `account` string, nullable
    - `feeDrops` string, nullable
    - `memo` string: exact UTF-8 payload; on-ledger MemoData is this hex-encoded
    - `anchoredAt` string, date-time, nullable
    - `explorer` string, nullable
  - `pendingNext` object, nullable: the next snapshot awaiting an anchor, if its root differs from `latest`
  - `history` object
    - `totalSnapshots` integer
    - `anchoredOnLedger` integer
  - `verify` object: Everything needed to reproduce merkleRoot: the registry source endpoints, the frozen canonicalisation spec, and where the root sits on-ledger.

---

[API](https://skmtc.dev/xrplhub/apis/xrplhub-xrplscore-and-prebuilt-xrpl-transactions.md) · [All operations](https://skmtc.dev/xrplhub/apis/xrplhub-xrplscore-and-prebuilt-xrpl-transactions/llms.txt) · [OpenAPI document](https://skmtc.dev/xrplhub/apis/xrplhub-xrplscore-and-prebuilt-xrpl-transactions/revisions/a5d4e13aff32?raw)
