SettleMint
Developer guidesAPI integration

Portfolio statistics

Query portfolio value time series and portfolio breakdowns for the active DALP system through the statistics API.

Use the portfolio statistics API when an integration needs reporting data for the current user's portfolio in a DALP system. The endpoints return historical value points, a current asset-type breakdown, and the resolved range DALP used for time series queries.

Portfolio statistics are scoped to the active system from the request context. If the same wallet has holdings in more than one DALP system, the result for one system does not include portfolio history, hourly fallback deltas, or breakdown rows from another system.

Endpoints

The portfolio statistics API exposes three read endpoints:

EndpointUse it for
GET /api/v2/system/stats/portfolio-stat-rangesA custom from and to time window.
GET /api/v2/system/stats/portfolio-stat-range-presets/{preset}A predefined trailing window.
GET /api/v2/system/stats/portfolio-breakdownsThe current portfolio value and holdings grouped by asset type and class.

All three endpoints return a JSON:API single-resource envelope with data and links.self.

Query a custom range

Use the range endpoint when your dashboard controls the interval and timestamps. interval accepts hour or day. from and to are timestamps, and from must be before or equal to to.

curl --request GET \
  "$DALP_API_URL/api/v2/system/stats/portfolio-stat-ranges?interval=hour&from=2026-03-24T13:00:00.000Z&to=2026-03-24T16:00:00.000Z" \
  --header "X-Api-Key: $DALP_API_TOKEN"

Query a preset range

Use the preset endpoint when DALP should resolve the window from the current time. Supported presets are:

PresetInterval
trailing24Hourshour
trailing7Daysday
curl --request GET \
  "$DALP_API_URL/api/v2/system/stats/portfolio-stat-range-presets/trailing7Days" \
  --header "X-Api-Key: $DALP_API_TOKEN"

Query the current breakdown

Use the breakdown endpoint when a dashboard needs the current portfolio total and a grouped view of holdings.

curl --request GET \
  "$DALP_API_URL/api/v2/system/stats/portfolio-breakdowns" \
  --header "X-Api-Key: $DALP_API_TOKEN"

The endpoint has no query parameters. DALP returns the current breakdown for the authenticated wallet and active system. Responses can be cached for that wallet and system, so a repeated request after switching organisations can reuse previously returned asset-type or asset-class labels until the statistics cache refreshes.

Time-series response shape

The time-series response body contains the resolved range, portfolio value points, and a currency-conversion reliability flag.

{
  "data": {
    "range": {
      "interval": "hour",
      "from": "2026-03-24T13:00:00.000Z",
      "to": "2026-03-24T16:00:00.000Z",
      "isPreset": false
    },
    "data": [
      {
        "timestamp": "2026-03-24T13:00:00.000Z",
        "totalValueInBaseCurrency": 1000
      },
      {
        "timestamp": "2026-03-24T14:00:00.000Z",
        "totalValueInBaseCurrency": 1200
      }
    ],
    "conversionReliable": true
  },
  "links": {
    "self": "/v2/system/stats/portfolio-stat-ranges"
  }
}

data.data is the time series. Each point includes:

  • timestamp: the bucket timestamp for the returned point.
  • totalValueInBaseCurrency: the portfolio value at that point, rounded for the API response.

conversionReliable is false when one or more FX rates needed for the conversion path are unavailable and DALP had to use its fallback conversion behavior.

Breakdown response shape

The breakdown response returns current totals, grouped values, grouped holdings, and the same conversion reliability flag.

{
  "data": {
    "totalValue": "5000000.00",
    "totalAssetTypes": 2,
    "totalAssetsHeld": 15,
    "typeBreakdown": [
      {
        "assetType": "bond",
        "totalValue": "3000000.00",
        "tokenBalancesCount": 5,
        "percentage": 60
      },
      {
        "assetType": "equity",
        "totalValue": "2000000.00",
        "tokenBalancesCount": 10,
        "percentage": 40
      }
    ],
    "valueBreakdown": {
      "bond": "3000000.00",
      "equity": "2000000.00"
    },
    "holdingsBreakdown": {
      "bond": 5,
      "equity": 10
    },
    "valueBreakdownByClass": {
      "fixed-income": "3000000.00",
      "flexible-income": "2000000.00"
    },
    "holdingsBreakdownByClass": {
      "fixed-income": 5,
      "flexible-income": 10
    },
    "conversionReliable": true
  },
  "links": {
    "self": "/v2/system/stats/portfolio-breakdowns"
  }
}

Use typeBreakdown when you need a sortable list with percentages. Use the valueBreakdown and holdingsBreakdown maps when your application already knows which asset-type keys it wants to display.

Asset-type keys can be system types such as bond or equity, or custom template slugs. Asset-class keys can be system class slugs such as fixed-income, or custom organisation class slugs.

conversionReliable is false when one or more FX rates needed for the breakdown are unavailable and DALP had to use its fallback conversion behavior.

System scoping

The portfolio time-series result is calculated for the authenticated user's wallet inside the active system. DALP filters portfolio snapshots and hourly fallback deltas by chain, system, wallet account, and requested time range before building the response.

The current breakdown response also uses the authenticated wallet and active system. Tenant scope can affect the organisation-specific asset templates and classes used to label grouped rows, but the response should still be treated as wallet-and-system scoped unless your API environment partitions the endpoint by organisation.

That means an integration can safely show the time-series output as the user's portfolio history for the selected system. Treat breakdown output as current wallet-and-system reporting, not as independent organisation-level evidence and not as a response your application can reuse across organisations. Do not add results from another system unless your application is intentionally building a cross-system report.

On this page