---
title: "Get portfolio dashboard"
method: GET
path: "/api/v1/dashboard/portfolio"
tags: ["Dashboard"]
---

# Get portfolio dashboard

`GET /api/v1/dashboard/portfolio`

Returns portfolio-level risk, delinquency, and freshness metrics for the requested business date.

## Query parameters

- `portfolioId` string, uuid, required — Portfolio identifier.
- `asOf` string, date — Business date (YYYY-MM-DD); defaults to today (UTC).
- `productIds` string[], nullable — Filter by loan product identifiers (repeat to pass multiple).
- `productVersionIds` string[], nullable — Filter by loan product version identifiers (repeat to pass multiple).
- `bucketCode` 'current' | '1_30' | '31_60' | '61_90' | '91_plus' | 'par30' | 'par60' | 'par90' — Delinquency bucket code.

## Response `200`

OK

- PortfolioDashboardHumaBody
  - `asOfDate` string, date-time, required — Business date the metrics were computed for (RFC3339, UTC midnight).
  - `delinquencyDistribution` DashboardBucketHumaBody[], nullable, required — Loan count and exposure broken down by delinquency bucket.
    - `bucketCode` string, required — Delinquency bucket code (one of current, 1_30, 31_60, 61_90, 91_plus, par30, par60, par90).
    - `bucketLabel` string, required — Human-readable label for the bucket (e.g. "1-30 days").
    - `exposureAmount` string, required — Outstanding exposure aggregated for this bucket (decimal string, two-decimal scale).
    - `loanCount` integer, required — Number of active loans falling into this bucket.
  - `drillDown` DashboardDrillDownRow[], nullable, required — Per-loan delinquency rows for the requested bucket (empty when none).
    - `assignedOfficerId` string, required — Identifier (UUID) of the loan officer assigned to the loan.
    - `assignedOfficerName` string, required — Display name of the assigned loan officer.
    - `borrowerId` string, required — Borrower identifier (UUID) who holds the loan.
    - `bucketCode` string, required — Delinquency bucket the loan falls into (one of current, 1_30, 31_60, 61_90, 91_plus, par30, par60, par90).
    - `daysOverdue` integer, required — Number of days past the earliest unpaid due date as of the business date.
    - `earliestUnpaidDueDate` string, date-time, required — Due date of the oldest unpaid installment driving the delinquency (RFC3339, UTC).
    - `exposureAmount` string, required — Outstanding exposure on this loan (decimal string, two-decimal scale).
    - `loanId` string, required — Loan account identifier (UUID) for this delinquent row.
    - `productId` string, required — Loan product identifier (UUID) the loan was originated under.
    - `productVersionId` string, required — Loan product version identifier (UUID) governing this loan's terms.
  - `freshness` DashboardFreshnessHuma, required
    - `generatedAt` string, date-time, required — Timestamp when the snapshot was generated (RFC3339, UTC).
    - `isStale` boolean, required — True when the snapshot is older than the freshness policy allows.
    - `liveFallbackUsed` boolean, required — True when no usable snapshot existed and metrics were computed live as a fallback.
    - `policyCode` string, required — Code of the freshness policy applied to evaluate staleness.
    - `policyPersistedAt` string, date-time, required — Timestamp when the active freshness policy was last persisted (RFC3339, UTC).
    - `snapshotAsOfDate` string, date-time, required — Business date the source snapshot was computed for (RFC3339, UTC).
    - `snapshotId` string, required — Identifier (UUID) of the snapshot the metrics were read from; empty when served live.
    - `source` string, required — Origin of the metrics (e.g. snapshot vs. live computation).
    - `stalenessReason` string — Explanation of why the data is considered stale; omitted when fresh.
  - `portfolioId` string, required — Portfolio identifier (UUID) the metrics belong to.
  - `summary` DashboardSummaryHumaBody, required
    - `activeLoanCount` integer, required — Number of active (non-closed) loans in the portfolio.
    - `currentExposure` string, required — Outstanding exposure on non-delinquent (current) loans (decimal string, two-decimal scale).
    - `delinquentExposure` string, required — Outstanding exposure on delinquent loans (decimal string, two-decimal scale).
    - `delinquentLoanCount` integer, required — Number of active loans currently in a delinquent bucket.
    - `disbursementVolume` string, required — Principal disbursed over the period (decimal string, two-decimal scale).
    - `outstandingExposure` string, required — Total outstanding principal balance across active loans (decimal string, two-decimal scale).
    - `par30` string, required — Portfolio-at-risk ratio for 30+ days overdue, as a decimal fraction string (e.g. 0.05 = 5%, two-decimal scale).
    - `par60` string, required — Portfolio-at-risk ratio for 60+ days overdue, as a decimal fraction string (e.g. 0.05 = 5%, two-decimal scale).
    - `par90` string, required — Portfolio-at-risk ratio for 90+ days overdue, as a decimal fraction string (e.g. 0.05 = 5%, two-decimal scale).
    - `repaymentVolume` string, required — Principal repaid over the period (decimal string, two-decimal scale).
  - `trend` DashboardTrendPointHuma[], nullable, required — Month-by-month historical series leading up to the business date.
    - `asOfDate` string, date-time, required — Business date the trend point was computed for (RFC3339, UTC midnight).
    - `delinquentExposure` string, required — Outstanding exposure on delinquent loans for the month (decimal string, two-decimal scale).
    - `delinquentLoanCount` integer, required — Number of active loans in a delinquent bucket during the month.
    - `disbursementVolume` string, required — Principal disbursed during the month (decimal string, two-decimal scale).
    - `month` string, required — Calendar month of the trend point in YYYY-MM format.
    - `outstandingExposure` string, required — Total outstanding principal balance for the month (decimal string, two-decimal scale).
    - `par30` string, required — Portfolio-at-risk ratio for 30+ days overdue, as a decimal fraction string (e.g. 0.05 = 5%, two-decimal scale).
    - `par60` string, required — Portfolio-at-risk ratio for 60+ days overdue, as a decimal fraction string (e.g. 0.05 = 5%, two-decimal scale).
    - `par90` string, required — Portfolio-at-risk ratio for 90+ days overdue, as a decimal fraction string (e.g. 0.05 = 5%, two-decimal scale).
    - `repaymentVolume` string, required — Principal repaid during the month (decimal string, two-decimal scale).

## Other responses

- `default` — Error

---

[API](https://skmtc.net/lerian/apis/identity-plugin.md) · [All operations](https://skmtc.net/lerian/apis/identity-plugin/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/lerian/identity-plugin/versions/25daba385532/schema)
