Dashboard API
GET /api/v1/dashboard returns the figures behind the Command center: today’s monitored value, the 24-hour money flow, the four-week alert heatmap, rule performance, the latest transactions and current throughput. The web app calls it every 10 seconds. Use it to feed your own management dashboard or a wall screen.
Before you start
Section titled “Before you start”| Who can call it | A signed-in person with alerts.view (by default every compliance role; not the Administrator). API keys can’t call it |
| How to sign in with curl | As described in Rules API: before you start |
| Time zone | “Today” and the heatmap use your workspace’s time zone, returned in timezone |
| Money | Amounts are whole numbers of minor units (pesewas for GHS): 48200000 means GHS 482,000.00. Totals are in your base currency; the latest transactions keep their own currency |
curl -s -b ~/.sp-cookies "$SP/api/v1/dashboard"Response
Section titled “Response”{ "timezone": "Africa/Accra", "today": { "in_minor": 18450071, "out_minor": 29752500, "count": 222, "flagged_count": 11, "flagged_minor": 43144000, "vs_last_week_pct": 12.4 }, "flow_24h": [ { "hour": "2026-10-08T11:00:00Z", "in_minor": 120000, "out_minor": 98050 } ], "alert_heat_28d": [[0, 0, 1, 0, …], …], "rules_30d": [ { "id": "01a1…", "library_key": "B2", "name": "Cash-in split across agents", "hits": 12, "closed_alerts": 5, "confirmed_rate": 0.4 } ], "recent": [ { "id": "01a1…", "occurred_at": "2026-10-09T09:41:07Z", "customer": "Akosua Owusu", "counterparty": "Coastal Estates Ltd", "direction": "out", "channel": "bank_transfer", "amount_minor": 2650000, "currency": "GHS", "rules": ["A1"], "score": 70 } ], "tps_1m": 7.2}Figures are illustrative.
Fields
Section titled “Fields”Everything since midnight today in the workspace’s time zone.
| Field | Meaning |
|---|---|
in_minor, out_minor |
Total value of completed transactions received by, and sent by, your customers, in base-currency minor units. The Command center’s Value monitored today is their sum |
count |
How many completed transactions happened today |
flagged_count |
How many of today’s transactions at least one rule in its active slot recorded a hit on, whatever the rule’s action (including tag, score_only and allow). Shadow hits don’t count |
flagged_minor |
The total value of those flagged transactions |
vs_last_week_pct |
How today’s value so far (in plus out) compares with the same part of the day seven days ago, in percent: 12.4 means 12.4% higher, -8 means 8% lower. Left out when last week’s figure was zero |
flow_24h
Section titled “flow_24h”24 points, one per hour, oldest first and ending with the current hour. Each has hour (the start of the hour, as a timestamp), in_minor and out_minor (completed transactions, base currency). Hours with no activity are present with zeros. Display hour in the workspace’s timezone.
alert_heat_28d
Section titled “alert_heat_28d”Seven rows, Monday first, each with 24 numbers for hours 00 to 23 in the workspace’s time zone. Each number is how many alerts had their first hit in that weekday and hour during the last 28 days, whatever their status now.
rules_30d
Section titled “rules_30d”Up to eight running (enabled) rules, the most hits first, then by name.
| Field | Meaning |
|---|---|
id |
The rule’s id; open it at /rules/{id} in the app |
library_key |
The library code such as A1 or G4. Empty for custom rules |
name |
The rule’s name |
hits |
Hits in the last 30 days from the rule’s active slot (shadow hits excluded) |
closed_alerts |
Alerts this rule contributed to that were closed in the last 90 days |
confirmed_rate |
Of those closed alerts, the share not closed as false positive, from 0 to 1. Left out when closed_alerts is 0 |
recent
Section titled “recent”The 12 transactions SpeculaPro received most recently (from the last two days), newest first. Unlike the totals above, these include transactions in any status.
| Field | Meaning |
|---|---|
id, occurred_at |
The transaction and when it happened |
customer |
Your customer’s name, or their reference when no name is held. Left out if your role lacks entities.view |
counterparty |
The other party’s name or masked identifier. Left out if your role lacks entities.view |
direction |
in, out or internal |
channel |
For example momo, bank_transfer, card |
amount_minor, currency |
The amount in the transaction’s own currency |
rules |
Library keys (or rule keys, for custom rules) of every active-slot rule that fired on it. Empty means clear |
score |
The highest score among those hits, 0 when none fired |
tps_1m
Section titled “tps_1m”Transactions received per second, averaged over the last minute.
Errors
Section titled “Errors”| Status | When |
|---|---|
401 |
Not signed in, or called with an API key |
403 |
Your role lacks alerts.view, or your account setup (two-factor or a password change) isn’t finished |
5xx |
A server failure; quote the reference. See When the server fails |
Related
Section titled “Related”- Command center
- Alerts and cases API: summary, for the queue and case counts
- API overview