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