SettleMint
Developer guidesOperations

Blockchain monitoring

Monitor platform status from the DALP dapp and API, and inspect chain RPC and indexer health from the API or CLI.

Use blockchain monitoring when you need detailed chain RPC and indexer diagnostics. The API exposes sync lag, block age, finality lag, stall time, reindex state, and recent service status for each monitored chain service.

Use platform status when you need the operator dashboard rollup. The platform status API combines data freshness, transaction infrastructure, API request health, and workflow health into one snapshot and a trailing history view.

This is operational data for a DALP environment. It helps you answer questions like:

  • Is an indexer behind the chain head?
  • Is a chain RPC endpoint stale or stalled?
  • Which networks have degraded or critical health?
  • Did a service recover after an incident?

Admin or owner access required

Blockchain monitoring endpoints require the global admin role or the organization owner role. API keys inherit the permissions of the user that created them.

What DALP monitors

DALP reports health for two service types:

Service typeWhat it tells you
chain-rpcWhether DALP can read fresh blocks from the configured chain RPC endpoint.
indexerWhether the indexer is keeping up with chain head and serving current indexed data.

Health status values are:

StatusMeaning
healthyThe service is reporting normally.
degradedThe service is lagging or stale enough to need attention.
criticalThe service is unhealthy for the monitored range.
unknownDALP does not have enough recent data to classify the service.
reindexingThe indexer is rebuilding data for a chain.

Get the platform status rollup

Open Platform settings > Platform status in the dapp when you need the operator dashboard view. DALP shows the same snapshot and history data from the API to users with administrator or owner access.

Use the platform status snapshot when you need a single environment-level health view for an operations dashboard. The snapshot returns a header verdict, four panel verdicts, and stat cards for the last 24 hours.

curl -G "https://your-platform.example.com/api/v2/platform-status/snapshot" \
  -H "X-Api-Key: sm_dalp_xxxxxxxxxxxxxxxx"

The response groups health into four panels:

PanelWhat it summarizes
Data freshnessLatest indexer rollups, chains in sync, and recent sync errors.
TransactionsChain RPC service coverage.
Platform APIRequest volume and 4xx/5xx rates over the trailing 24 hours.
WorkflowsCompleted and stalled workflow counts when workflow metrics are available.

The platform status verdict is operational, degraded, outage, or no_data. no_data means DALP has not collected enough rollup data yet, such as immediately after a fresh deployment.

Use the history endpoint when you need the trailing daily severity grid shown in the dapp status page. The days query parameter accepts 1 to 90 days and defaults to 90.

curl -G "https://your-platform.example.com/api/v2/platform-status/history" \
  -H "X-Api-Key: sm_dalp_xxxxxxxxxxxxxxxx" \
  --data-urlencode "days=30"

Get a blockchain monitoring summary

Use the blockchain monitoring summary endpoint for the current state per monitored chain service.

curl -G "https://your-platform.example.com/api/v2/blockchain-monitoring/health-metrics/summary" \
  -H "X-Api-Key: sm_dalp_xxxxxxxxxxxxxxxx" \
  --data-urlencode "from=2026-05-01T00:00:00.000Z" \
  --data-urlencode "to=2026-05-01T12:00:00.000Z"

The response contains one entry per monitored service:

{
  "services": [
    {
      "serviceId": "01964f21-9f02-7000-9e8d-1e6d1fdc7f01",
      "serviceType": "indexer",
      "chainId": 11155111,
      "networkName": "Sepolia",
      "latestStatus": "healthy",
      "latestSampledAt": "2026-05-01T11:59:30.000Z",
      "snapshotCount": 48,
      "syncLag": 2,
      "blockHeight": 8154321,
      "blockAgeSeconds": null,
      "finalityLagBlocks": null,
      "stallSeconds": null,
      "recentLatencies": [124, 119, 131],
      "deploymentState": null
    }
  ]
}

Use these fields like this:

FieldUse it for
latestStatusThe current classified health state.
syncLagIndexer lag in blocks. This is only set for indexer services.
blockAgeSecondsChain RPC freshness. This is only set for chain-rpc services.
finalityLagBlocksChain RPC finality lag.
stallSecondsHow long the chain head has stopped advancing.
deploymentStateIndexer version and reindex progress when an indexer is rebuilding.

Admins also see active indexer reindexes on the main dashboard. When an indexer's deployment state shows an active rebuild, the dashboard displays a reindex banner with the progress percentage, elapsed time, and a link to /platform-settings/blockchain-monitoring. If three or more indexers are actively reindexing, the banner switches to an aggregate count instead of listing every indexer. The banner is hidden for non-admin users and when there is no meaningful active reindex status to show.

Check a timeline

Use the timeline endpoint when you need chart data or want to see whether a problem is getting worse.

curl -G "https://your-platform.example.com/api/v2/blockchain-monitoring/health-metrics/timeline" \
  -H "X-Api-Key: sm_dalp_xxxxxxxxxxxxxxxx" \
  --data-urlencode "from=2026-04-24T00:00:00.000Z" \
  --data-urlencode "to=2026-05-01T00:00:00.000Z" \
  --data-urlencode "granularity=day"

The timeline accepts hour or day granularity. The queried range must be 31 days or less.

{
  "buckets": [
    {
      "timestamp": "2026-04-30T00:00:00.000Z",
      "services": [
        {
          "serviceKey": "indexer-11155111",
          "serviceType": "indexer",
          "chainId": 11155111,
          "networkName": "Sepolia",
          "healthyPct": 95.8,
          "degradedPct": 4.2,
          "criticalPct": 0
        }
      ]
    }
  ]
}

Inspect service health

Use the service breakdown when you need one row per monitored service with aggregate percentages.

curl -G "https://your-platform.example.com/api/v2/blockchain-monitoring/service-health-metrics" \
  -H "X-Api-Key: sm_dalp_xxxxxxxxxxxxxxxx" \
  --data-urlencode "from=2026-05-01T00:00:00.000Z" \
  --data-urlencode "to=2026-05-01T12:00:00.000Z"

The time range for summary and service breakdown calls must be 7 days or less.

Inspect raw snapshots

Use snapshots when you need the underlying health log. You can filter by service, status, service type, network name, and time range.

curl -G "https://your-platform.example.com/api/v2/blockchain-monitoring/health-snapshots" \
  -H "X-Api-Key: sm_dalp_xxxxxxxxxxxxxxxx" \
  --data-urlencode "status=degraded" \
  --data-urlencode "serviceType=indexer" \
  --data-urlencode "limit=20"

Each snapshot includes the sampled time, service type, chain ID, network name, status, block metrics, and collector latency. Responses include nextCursor for pagination.

{
  "items": [
    {
      "id": "01964f32-4cc1-7000-a05e-88a188d62921",
      "serviceType": "chain-rpc",
      "chainId": 11155111,
      "networkName": "Sepolia",
      "status": "degraded",
      "rawStatus": "degraded",
      "sampledAt": "2026-05-01T11:55:00.000Z",
      "blockHeight": 8154300,
      "chainHeadBlock": null,
      "syncLag": null,
      "entityCount": null,
      "blockAgeSeconds": 45,
      "finalityLagBlocks": 3,
      "stallSeconds": 30,
      "collectorLatencyMs": 148
    }
  ],
  "nextCursor": null,
  "totalCount": 1,
  "facets": {}
}

Stream health events

Use the stream endpoint when you want live updates in an operations screen or incident console.

curl -N "https://your-platform.example.com/api/v2/blockchain-monitoring/health-snapshots/stream" \
  -H "X-Api-Key: sm_dalp_xxxxxxxxxxxxxxxx"

The stream uses server-sent events. Every event includes eventType, so parse that first instead of assuming each message has snapshot fields.

Snapshot events use eventType: "snapshot" and carry the same health fields as snapshot list items, plus serviceId and optional deploymentState:

{
  "eventType": "snapshot",
  "id": "01964f32-4cc1-7000-a05e-88a188d62921",
  "serviceId": "01964f21-9f02-7000-9e8d-1e6d1fdc7f01",
  "serviceType": "indexer",
  "chainId": 11155111,
  "networkName": "Sepolia",
  "status": "healthy",
  "rawStatus": "healthy",
  "sampledAt": "2026-05-01T11:59:30.000Z",
  "blockHeight": 8154321,
  "chainHeadBlock": 8154323,
  "syncLag": 2,
  "entityCount": null,
  "blockAgeSeconds": null,
  "finalityLagBlocks": null,
  "stallSeconds": null,
  "collectorLatencyMs": 124,
  "deploymentState": null
}

Block-progress events use eventType: "block-progress". DALP emits these while an indexer processes block batches, including during reindexing:

{
  "eventType": "block-progress",
  "chainId": 11155111,
  "blockNumber": 8154321
}

Keep the connection open and update your view based on the event type you receive.

Use the CLI

The same monitoring data is available from the DALP CLI:

dalp monitoring blockchain summary --from 2026-05-01T00:00:00.000Z --to 2026-05-01T12:00:00.000Z
dalp monitoring blockchain timeline --from 2026-04-24T00:00:00.000Z --to 2026-05-01T00:00:00.000Z
dalp monitoring blockchain services --from 2026-05-01T00:00:00.000Z --to 2026-05-01T12:00:00.000Z
dalp monitoring blockchain snapshots
dalp monitoring blockchain snapshots-stream

Use the CLI for quick checks. Use the API when you are building dashboards, alerting, or operational reports.

On this page