Sandbox version
For experimental use only. Proceed with caution.
mptokens
Batch metrics-only lookup by IDs
post
/mpt/metrics/batch
operationId: mpt-getMetricsBatch

Batch counterpart of /mpt/{issuanceId}/metrics. Body: { "issuanceIds": ["00000064…", "…"] } (max 100). Returns identity + metrics-only records. Mirror of /token/metrics/batch.

Unlock protected endpoints

Enter your Bearer token once to enable every protected route in this API reference.

HTTP bearer

Saved for this browser tab only. The credential is never sent until you test an endpoint.

Authorizations
NameLocationDetails
BearerAuthAuthorization header · bearerJWT issued by the Honeycluster auth service for the `indexer` audience. Present as `Authorization: Bearer <token>`.
Request Body
application/json
required
FieldTypeDescription
issuanceIds
required
string[]
MPT issuance IDs to resolve metadata for (max 100). Unmatched IDs are silently omitted.
Example
Json
{
  "issuanceIds": [
    "string"
  ]
}
Responses
200
application/json
Successful response
FieldTypeDescription
items
object[]
Per-issuance metrics-only records. Unmatched IDs are silently omitted.
items[].id
string
MPTokenIssuance ID (same as `issuance_id`). Top-level alias for shape parity with token / NFT detail.
items[].issuance_id
string
On-chain MPTokenIssuance ID (hex string).
items[].issuer
string
XRPL classic address of the issuer.
items[].created_at_ledger
integer
Ledger sequence where the issuance was created.
items[].destroyed_at_ledger
object
Ledger sequence where the issuance was destroyed; `null` while active.
items[].burned
boolean
True once `destroyed_at_ledger` is set.
items[].metrics
object
items[].metrics.trustlines
null
Always `null` for MPTs — MPTs do not use trustlines. Field present for shape parity with `/token/list`.
items[].metrics.holders
integer
Current count of holders with a positive balance.
items[].metrics.supply
string
Total outstanding supply (decimal string in token base units).
items[].metrics.circulating_supply
string
Supply minus issuer-held balance, computed at request time from `mpt_holders` for the (issuance_id, issuer_account) pair. Equals `supply` when the issuer holds none of its own MPT (the common case).
items[].metrics.price
object
Latest observed XRP-denominated price (decimal string). `null` when the MPT has no XRP-paired trade history.
items[].metrics.market_cap
object
Computed at request time: `price × supply`. `null` when price is unknown.
items[].metrics.fdv
object
Fully-diluted valuation: `price × max_supply`. `null` when price or `max_supply` is unknown.
items[].metrics.tvl
null
Always `null` for MPTs — MPTs are not yet supported by the AMM module. Field present for shape parity.
items[].metrics.vesting
null
Always `null` for MPTs — escrow vesting is an IOU concept. Field present for shape parity.
items[].metrics.price_change
object
Rolling price change per window. All windows source from `mpt_metrics_v`, which reads `ohlcv_5m` (5m / 1h windows) and `ohlcv_1h` (6h / 24h / 7d). NULL when the MPT has no XRP-paired trade pair or no buckets materialised in the window.
items[].metrics.price_change.last_5m
object
items[].metrics.price_change.last_1h
object
items[].metrics.price_change.last_6h
object
items[].metrics.price_change.last_24h
object
items[].metrics.price_change.last_7d
object
items[].metrics.volume
object
Rolling volume windows + lifetime total + XRPL dominance.
items[].metrics.volume.last_5m
object
items[].metrics.volume.last_1h
object
items[].metrics.volume.last_6h
object
items[].metrics.volume.last_24h
object
items[].metrics.volume.last_7d
object
Trailing 7d XRP-denominated volume (decimal string).
items[].metrics.volume.total
object
Cumulative lifetime XRP volume. `null` until denormalized.
items[].metrics.volume.dominance
object
items[].metrics.txn
object
Rolling trade-count windows per same-length bucket.
items[].metrics.txn.last_5m
object
items[].metrics.txn.last_1h
object
items[].metrics.txn.last_6h
object
items[].metrics.txn.last_24h
object
items[].metrics.txn.last_7d
object
Trade count over the last 7d.
items[].metrics.takers_24h
integer
Distinct taker addresses over the last 24h, sourced from the HLL union over `ohlcv_1h`. Returns 0 when the MPT has no XRP-paired trade history.
items[].metrics.takers_7d
integer
Distinct taker addresses over the last 7d, sourced from the HLL union over `ohlcv_1h`. Returns 0 when the MPT has no XRP-paired trade history.
items[].metrics.buy_sell_24h
object
Buy/sell breakdown over the last 24h, inferred from the taker's XRP balance delta sign on each trade. All sub-fields default to 0 when the MPT had no trades in the window.
items[].metrics.buy_sell_24h.buys
object
items[].metrics.buy_sell_24h.sells
object
items[].metrics.quality_score
string
Composite 0–100 quality score. Rubric (additive, capped at 100): +20 issuer verified, +15 issuer renounced, +15 metadata present (name + icon), +10 holders ≥ 100, +10 recent activity (≥10 trades in 24h), +10 has XRP-paired trade pair.
items[].metrics.max_supply
object
Hard cap on supply, decimal string. `null` when uncapped.
items[].metrics.transfer_fee_bps
integer
Transfer fee in basis points (0–50_000; 50_000 = 50%).
items[].metrics.asset_scale
integer
Decimal places for display (0–15). `raw_amount / 10^asset_scale` = human-readable value.
items[].metrics.flags
object
Decoded MPT issuance flag bits.
items[].metrics.flags.require_auth
boolean
Holders must be authorized by the issuer.
items[].metrics.flags.can_lock
boolean
Issuer can lock holder balances.
items[].metrics.flags.can_clawback
boolean
Issuer can claw back tokens.
items[].metrics.last_trade_at
object
Unix-seconds timestamp of the most recent trade across any pair this MPT trades on.
Example
Json
{
  "items": [
    {
      "id": "string",
      "issuance_id": "string",
      "issuer": "string",
      "created_at_ledger": 0,
      "destroyed_at_ledger": 0,
      "burned": false,
      "metrics": {
        "trustlines": null,
        "holders": 0,
        "supply": "string",
        "circulating_supply": "string",
        "price": "string",
        "market_cap": "string",
        "fdv": "string",
        "tvl": null,
        "vesting": null,
        "price_change": {
          "last_5m": {
            "absolute": "string",
            "percent": "string"
          },
          "last_1h": {
            "absolute": "string",
            "percent": "string"
          },
          "last_6h": {
            "absolute": "string",
            "percent": "string"
          },
          "last_24h": {
            "absolute": "string",
            "percent": "string",
            "since_inception": false
          },
          "last_7d": {
            "absolute": "string",
            "percent": "string",
            "since_inception": false
          }
        },
        "volume": {
          "last_5m": {
            "value": "string",
            "change_absolute": "string",
            "change_percent": "string"
          },
          "last_1h": {
            "value": "string",
            "change_absolute": "string",
            "change_percent": "string"
          },
          "last_6h": {
            "value": "string",
            "change_absolute": "string",
            "change_percent": "string"
          },
          "last_24h": {
            "value": "string",
            "change_absolute": "string",
            "change_percent": "string"
          },
          "last_7d": "string",
          "total": "string",
          "dominance": {
            "last_24h": "string"
          }
        },
        "txn": {
          "last_5m": {
            "value": 0,
            "change_absolute": 0,
            "change_percent": "string"
          },
          "last_1h": {
            "value": 0,
            "change_absolute": 0,
            "change_percent": "string"
          },
          "last_6h": {
            "value": 0,
            "change_absolute": 0,
            "change_percent": "string"
          },
          "last_24h": {
            "value": 0,
            "change_absolute": 0,
            "change_percent": "string"
          },
          "last_7d": 0
        },
        "takers_24h": 0,
        "takers_7d": 0,
        "buy_sell_24h": {
          "buys": {
            "txns": 0,
            "traders": 0,
            "xrp": "string"
          },
          "sells": {
            "txns": 0,
            "traders": 0,
            "xrp": "string"
          }
        },
        "quality_score": "string",
        "max_supply": "string",
        "transfer_fee_bps": 0,
        "asset_scale": 0,
        "flags": {
          "require_auth": false,
          "can_lock": false,
          "can_clawback": false
        },
        "last_trade_at": 1745798400
      }
    }
  ]
}
400
application/json
Invalid input data
FieldTypeDescription
message
string
The error message
code
string
The error code
issues
object[]
An array of issues that were responsible for the error
issues[].message
string
Example
Json
{
  "code": "BAD_REQUEST",
  "message": "Invalid input data",
  "issues": []
}
401
application/json
Authorization not provided
FieldTypeDescription
message
string
The error message
code
string
The error code
issues
object[]
An array of issues that were responsible for the error
issues[].message
string
Example
Json
{
  "code": "UNAUTHORIZED",
  "message": "Authorization not provided",
  "issues": []
}
403
application/json
Insufficient access
FieldTypeDescription
message
string
The error message
code
string
The error code
issues
object[]
An array of issues that were responsible for the error
issues[].message
string
Example
Json
{
  "code": "FORBIDDEN",
  "message": "Insufficient access",
  "issues": []
}
500
application/json
Internal server error
FieldTypeDescription
message
string
The error message
code
string
The error code
issues
object[]
An array of issues that were responsible for the error
issues[].message
string
Example
Json
{
  "code": "INTERNAL_SERVER_ERROR",
  "message": "Internal server error",
  "issues": []
}