Skip to main content

Dashboard Statistics

The Dashboard Statistics API exposes the read-only summary numbers shown on the digital onboarding compliance dashboard — status counts, risk ratings, renewals, and monthly charts. All endpoints return aggregate counts or chart data only. No customer detail records are exposed.

The numbers match exactly what a user sees on the dashboard for the same context, and every endpoint respects the same client-level filtering.

Authentication​

All requests to this API require authentication using a bearer token in the Authorization header:

Authorization: Bearer your-token-here

For details on how to obtain an authentication token, please refer to the Authentication documentation.

Client Filtering​

Every endpoint accepts an optional clientIds query parameter to narrow the numbers to specific clients:

GET {base_url}/ExtStats/GetConsolidatedCount?clientIds=8b3e1c47-c1d8-4ae5-bcf6-3902f4a6c8d2&clientIds=5f4d9e07-2cb2-4a35-9b8d-a017fc1e2b88
BehaviorDescription
No filterWhen clientIds is omitted, the response covers every client your API key is allowed to see.
Valid filterWhen clientIds is provided, the response is limited to those clients.
Out of scopeIf any requested client id is outside the set your API key is allowed to see, the request fails with 403 Forbidden.

The same clientIds query parameter applies to all endpoints below and is not repeated in each section.

Consolidated Status Count​

Counts of customer profiles grouped by their consolidated status.

GET {base_url}/ExtStats/GetConsolidatedCount

Response​

{
"version": null,
"statusCode": 200,
"messages": ["Processed successfully"],
"result": [
{ "status": "Pending", "clientCount": 2338 },
{ "status": "Approved", "clientCount": 267 },
{ "status": "Rejected", "clientCount": 5 },
{ "status": "Frozen", "clientCount": 14 },
{ "status": "Expired", "clientCount": 0 },
{ "status": "Closed", "clientCount": 9 },
{ "status": "Dormant", "clientCount": 40 }
]
}

Response Fields​

FieldTypeDescription
statusstringDisplay name of the status
clientCountnumberNumber of customer profiles in this status

AML Risk Rating Count​

Counts of customers grouped by their anti-money laundering risk rating.

GET {base_url}/ExtStats/GetAmlCount

Response​

{
"version": null,
"statusCode": 200,
"messages": ["Processed successfully"],
"result": [
{ "status": "High", "customerCount": 555 },
{ "status": "Medium", "customerCount": 74 },
{ "status": "Low", "customerCount": 1953 },
{ "status": "Prohibited", "customerCount": 91 }
]
}

Response Fields​

FieldTypeDescription
statusstringDisplay name of the risk rating
customerCountnumberNumber of customers with this risk rating

Submissions Count​

Counts of submissions grouped by completeness.

GET {base_url}/ExtStats/GetSubmissionsCount

Response​

{
"version": null,
"statusCode": 200,
"messages": ["Processed successfully"],
"result": [
{ "submissionStatus": "Complete", "submissionCount": 2697 },
{ "submissionStatus": "Incomplete", "submissionCount": 1250 }
]
}

Response Fields​

FieldTypeDescription
submissionStatusstringCompleteness state ("Complete" or "Incomplete")
submissionCountnumberNumber of submissions in this state

Classification Count​

Counts of customers grouped by client classification.

GET {base_url}/ExtStats/GetClassificationCount

Response​

{
"version": null,
"statusCode": 200,
"messages": ["Processed successfully"],
"result": [
{ "classificationState": "Retail", "clientCount": 233 },
{ "classificationState": "AssessedProfessional", "clientCount": 1608 },
{ "classificationState": "DeemedProfessional", "clientCount": 125 },
{ "classificationState": "MarketCounterParty", "clientCount": 12 },
{ "classificationState": "NewStatus", "clientCount": 0 }
]
}

Response Fields​

FieldTypeDescription
classificationStatestringDisplay name of the classification
clientCountnumberNumber of customers with this classification

Ongoing Monitoring Count​

Counts of ongoing monitoring cases grouped by status.

GET {base_url}/ExtStats/GetOnGoingMonitoringCount

Response​

{
"version": null,
"statusCode": 200,
"messages": ["Processed successfully"],
"result": [
{ "status": "Open", "count": 0 },
{ "status": "Closed", "count": 0 },
{ "status": "UnderReview", "count": 0 }
]
}

Response Fields​

FieldTypeDescription
statusstringDisplay name of the monitoring status
countnumberNumber of cases in this status

KYC Refresh Count​

Counts of KYC refresh cases grouped by status.

GET {base_url}/ExtStats/GetKycRefreshCount

Response​

{
"version": null,
"statusCode": 200,
"messages": ["Processed successfully"],
"result": [
{ "status": "Pending", "clientCount": 71 },
{ "status": "Completed", "clientCount": 5 },
{ "status": "Open", "clientCount": 32 },
{ "status": "Unknown", "clientCount": 4 }
]
}

Response Fields​

FieldTypeDescription
statusstringDisplay name of the refresh status
clientCountnumberNumber of cases in this status

Submission Delete Request Count​

Counts of submission delete requests grouped by status.

GET {base_url}/ExtStats/GetSubmissionDeleteRequestCount

Response​

{
"version": null,
"statusCode": 200,
"messages": ["Processed successfully"],
"result": [
{ "status": "Pending", "clientCount": 4 },
{ "status": "Approved", "clientCount": 54 },
{ "status": "Rejected", "clientCount": 3 }
]
}

Response Fields​

FieldTypeDescription
statusstringDisplay name of the delete request status
clientCountnumberNumber of delete requests in this status

Pending Approvals​

Count of submissions waiting for approval.

GET {base_url}/ExtStats/GetSubmitForApproval

Response​

{
"version": null,
"statusCode": 200,
"messages": ["Processed successfully"],
"result": [
{ "status": "Pending", "count": 1 }
]
}

Response Fields​

FieldTypeDescription
statusstringApproval status — always "Pending" for this endpoint
countnumberNumber of submissions awaiting approval

Document Renewal Count​

Number of customers and documents due for document renewal within a window, or already expired.

GET {base_url}/ExtStats/GetDocumentRenewalCount/{type}

Parameters​

ParameterTypeRequiredDescription
typestringYesRenewal bucket. Supported values: 30 (documents expiring within 30 days), 90 (documents expiring within 90 days), Expired (documents with an expiry date in the past). Any value other than 30 or 90 is treated as Expired.

Response​

{
"version": null,
"statusCode": 200,
"messages": ["Processed successfully"],
"result": {
"customersCount": 0,
"documentTotal": 0
}
}

Response Fields​

FieldTypeDescription
customersCountnumberNumber of customers in this bucket
documentTotalnumberTotal number of documents in this bucket

KYC Renewal Count​

Number of customers due for KYC renewal within a window, or already overdue.

GET {base_url}/ExtStats/GetKycRenewalCount/{type}

Parameters​

ParameterTypeRequiredDescription
typestringYesRenewal bucket. Supported values: 30 (next review within 30 days), 60 (next review within 60 days), 90 (next review between 31 and 90 days — not 0–90), Overdue (next review date already in the past). Any value other than 30, 60, or 90 is treated as Overdue.

Response​

{
"version": null,
"statusCode": 200,
"messages": ["Processed successfully"],
"result": {
"customersCount": 30
}
}

Response Fields​

FieldTypeDescription
customersCountnumberNumber of customers in this bucket

Chart Periods​

The Risk Profile, Exception, and PEP chart endpoints group their data over a period supplied in the path. Supported values, lowercase, exactly as written:

PeriodDescription
last 7 daysDaily points for the last seven days
last 12 monthsMonthly points for the last twelve months
quarterlyPoints grouped by quarter of the current year
yearlyMonthly points for the current year
previous yearMonthly points for the previous year

The period is part of the path and must be URL-encoded (for example, last%2012%20months).

The Sanction Screening Graph endpoint accepts a different set of period values — see its own section below.

Risk Profile Chart​

Customer counts by risk level over the selected period. See Chart Periods for supported {period} values.

GET {base_url}/ExtStats/GetRiskProfileChart/{period}

Response​

{
"version": null,
"statusCode": 200,
"messages": ["Processed successfully"],
"result": [
{
"dateSpan": "08/05/2026 16:21:51",
"customerCount": 0,
"riskLevel": "High",
"years": "2026"
},
{
"dateSpan": "08/05/2026 16:21:51",
"customerCount": 0,
"riskLevel": "Medium",
"years": "2026"
}
]
}

Response Fields​

FieldTypeDescription
dateSpanstringTime bucket label. The format depends on the period: a full timestamp for daily periods (last 7 days) and a numeric month or quarter index for monthly and quarterly periods
customerCountnumberNumber of customers in this risk level for this bucket
riskLevelstringDisplay name of the risk level
yearsstringYear of the bucket

Exception Chart​

Counts of exceptions over the selected period, split by entity type. See Chart Periods for supported {period} values.

GET {base_url}/ExtStats/GetExceptionChart/{period}

Response​

{
"version": null,
"statusCode": 200,
"messages": ["Processed successfully"],
"result": [
{ "dateSpan": "1", "individual": 0, "legalEntity": 0, "years": "2026" },
{ "dateSpan": "2", "individual": 0, "legalEntity": 0, "years": "2026" }
]
}

Response Fields​

FieldTypeDescription
dateSpanstringTime bucket label. The format depends on the period: a full timestamp for daily periods (last 7 days) and a numeric month or quarter index for monthly and quarterly periods
individualnumberException count for individual customers in this bucket
legalEntitynumberException count for legal entity customers in this bucket
yearsstringYear of the bucket

Sanction Screening Graph​

Counts of sanction screening results over the selected period, broken down by alert status. Each time bucket emits one row per alert status (Open, Closed, UnderReview).

GET {base_url}/ExtStats/GetSanctionScreeningGraph/{period}

Period​

This endpoint accepts a different period vocabulary from the other charts. Values are case-sensitive and must be sent exactly as written (note the TitleCase and plural Years):

PeriodDescription
TodayPoints for today
YesterdayPoints for yesterday
last 7 daysDaily points for the last seven days (the only lowercase value)
This MonthPoints for the current month
This QuarterPoints for the current quarter
This YearPoints for the current year
Last 12 MonthsMonthly points for the last twelve months
Previous YearsPoints for years before the current one

The period is part of the path and must be URL-encoded (for example, Last%2012%20Months). Sending an unsupported value returns an empty result array with HTTP 200 — there is no validation error, so use one of the values above exactly.

Response​

{
"version": null,
"statusCode": 200,
"messages": ["Processed successfully"],
"result": [
{ "dateSpan": "1", "alertType": "Open", "count": 40 },
{ "dateSpan": "1", "alertType": "Closed", "count": 58 },
{ "dateSpan": "1", "alertType": "UnderReview", "count": 12 },
{ "dateSpan": "2", "alertType": "Open", "count": 21 },
{ "dateSpan": "2", "alertType": "Closed", "count": 30 }
]
}

Response Fields​

FieldTypeDescription
dateSpanstringTime bucket label. The format depends on the period: a full timestamp for daily periods (last 7 days) and a numeric month or quarter index for monthly and quarterly periods
alertTypestringScreening alert status (Open, Closed, UnderReview)
countnumberNumber of screening results with this alert status in this bucket

PEP Chart​

Counts of politically exposed person matches over the selected period, split by entity type. See Chart Periods for supported {period} values.

GET {base_url}/ExtStats/GetPepChart/{period}

Response​

{
"version": null,
"statusCode": 200,
"messages": ["Processed successfully"],
"result": [
{ "dateSpan": "1", "individual": 27, "legalEntity": 1, "total": 28, "years": "2026" },
{ "dateSpan": "2", "individual": 9, "legalEntity": 0, "total": 9, "years": "2026" }
]
}

Response Fields​

FieldTypeDescription
dateSpanstringTime bucket label. The format depends on the period: a full timestamp for daily periods (last 7 days) and a numeric month or quarter index for monthly and quarterly periods
individualnumberPEP match count for individual customers in this bucket
legalEntitynumberPEP match count for legal entity customers in this bucket
totalnumberTotal PEP match count for this bucket
yearsstringYear of the bucket

Error Handling​

Status CodeDescriptionSolution
400Invalid request parametersCheck the path and query parameters
401Unauthorized accessCheck the authentication token
403Requested client id outside the allowed scopeRequest only client ids your API key is allowed to see
429Too many requestsImplement rate limiting and cache responses