> ## Documentation Index
> Fetch the complete documentation index at: https://ormaprotocol.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# GET /api/mpt/:mptId/nav — Unit Valuation by Share Token

> Returns the per-unit NAV keyed by MPT issuance ID — the route a share token's own metadata points at. Optionally values a specific pledge of N units.

Use this endpoint when you hold a vault's share token and need to value it, but have no direct knowledge of which vault issued it. This is the route that a share token's own metadata points at: it is what the `nav_url` pointer in the `MPTokenIssuance` metadata resolves to. Pass `units` to receive the value of a specific pledge without reimplementing decimal arithmetic yourself.

## Parameters

<ParamField path="mptId" type="string" required>
  48-character hex MPT issuance ID. Case insensitive.
</ParamField>

<ParamField query="units" type="string">
  Number of share units to value as a pledge (a count of token units, as a decimal string). When present, the response includes a `pledge` block with `valueHeld`, `valueReported`, and `overstatement`.
</ParamField>

This route sends `Cache-Control: public, max-age=4` and `Access-Control-Allow-Origin: *`. It is designed to be called by any party that holds the share token — no prior relationship with Orma is required.

## Request

```bash theme={null}
curl -s "http://localhost:8787/api/mpt/000000014D667775372D5B78E07FFF294678C7F9CE82AFBC/nav?units=1000000"
```

## Response

The body is identical to [`GET /api/vaults/:vaultId/nav`](/api/vault-nav) with one additional block when `units` is supplied:

```json theme={null}
{
  "serverTime": "2026-09-12T22:20:22Z",
  "ledgerIndex": 5263343,
  "schema": "orma.nav/1",
  "asOf": "2026-09-12T22:20:22Z",
  "instrument": {
    "kind": "vault-share",
    "vaultId": "5763707D11EA19D1B5FF04E4EBA4F9336057955CDE65B725D1FF3EF2A96CB0E5",
    "shareMptId": "000000014D667775372D5B78E07FFF294678C7F9CE82AFBC",
    "unitsOutstanding": "51000000",
    "asset": { "kind": "XRP", "currency": "XRP", "issuer": null, "mptIssuanceId": null },
    "vaultKind": "ClosedEnded",
    "phase": "Investment",
    "redemptionAt": "2026-09-13T15:11:47Z"
  },
  "unitValue": {
    "held": "0.803922",
    "reported": "1.000000",
    "divergenceBps": 1961,
    "basis": "assets net of recognised loss, divided by units outstanding"
  },
  "valuation": {
    "currency": "XRP",
    "scale": 6,
    "perUnitHeld": "0.803922",
    "perUnitReported": "1.000000"
  },
  "assessment": {
    "grade": "AA",
    "gradeNumeric": 89,
    "methodVersion": "1.0.0",
    "advisory": true
  },
  "provenance": {
    "network": "devnet",
    "source": "devnet",
    "assetsTotal": "51000000",
    "lossUnrealized": "10000000",
    "unitsOutstanding": "51000000",
    "recompute": "(assetsTotal - lossUnrealized) / unitsOutstanding",
    "buildVersion": "3.4.0-rc5"
  },
  "pledge": {
    "units": "1000000",
    "valueHeld": "803922",
    "valueReported": "1000000",
    "overstatement": "196078"
  }
}
```

## Response Fields

All fields are identical to [`GET /api/vaults/:vaultId/nav`](/api/vault-nav). The `pledge` block is added when `units` is provided:

<ResponseField name="pledge" type="object | null">
  Present only when the `units` query parameter is supplied.

  <Expandable title="pledge fields">
    <ResponseField name="units" type="string">
      The number of units valued, echoed from the request parameter.
    </ResponseField>

    <ResponseField name="valueHeld" type="string">
      Value of `units` at `navCorrect`, in drops. For example, 1 000 000 units at `0.803922` = `803922` drops.
    </ResponseField>

    <ResponseField name="valueReported" type="string">
      Value of `units` at `navNaive`, in drops. What a tool reading `AssetsTotal` alone would report.
    </ResponseField>

    <ResponseField name="overstatement" type="string | null">
      `valueReported - valueHeld`, in drops. How much the naive valuation overstates the pledge. `null` when the resolved document carries no `unitValue` — see [contract 2](/api/overview#2-absent-means-zero).
    </ResponseField>
  </Expandable>
</ResponseField>

<Note>
  The `units` parameter exists so a lender does not have to reimplement decimal arithmetic. One million units against a held NAV of `0.803922` is worth `803922` drops. A tool reading `AssetsTotal` alone marks the same pledge at `1000000` — an overstatement of `196078` drops, or 19.61%.
</Note>

<Note>
  This route never follows a metadata pointer. It is what the pointer points at. A route that followed its own pointer would create a loop. Use [`GET /api/mpt/:mptId/resolve`](/api/mpt-resolve) to walk and inspect the full pointer chain.
</Note>
