Skip to content

Dashboards API

Dashboards let you group multiple files together for combined Excel exports — merge all your monthly statements into a single spreadsheet. All endpoints require Clerk JWT authentication.

Dashboards track whether their combined outputs are current:

new → (add/remove files) → outdated → (reprocess) → up_to_date
  • new — Dashboard created, no files added yet
  • outdated — Files were added or removed; combined outputs are stale
  • up_to_date — Reprocess completed; combined Excel is current

POST /dashboards/

Request body:

{
"name": "Q1 2026 Statements",
"description": "All bank statements from January to March 2026"
}
FieldTypeRequired
namestringYes
descriptionstringNo

Response (200):

{
"id": 15,
"name": "Q1 2026 Statements",
"description": "All bank statements from January to March 2026",
"user_id": 42,
"status": "new",
"created_at": "2026-05-09T11:00:00Z",
"updated_at": "2026-05-09T11:00:00Z"
}

GET /dashboards/

Query parameters:

ParamTypeDefault
skipinteger0
limitinteger20 (max 100)
Terminal window
curl -H "Authorization: Bearer TOKEN" \
"https://api.excellent-banking.com/dashboards/?limit=10"

Response (200): Array of DashboardResponse objects.


GET /dashboards/{dashboard_id}

Terminal window
curl -H "Authorization: Bearer TOKEN" \
https://api.excellent-banking.com/dashboards/15

PATCH /dashboards/{dashboard_id}

Request body (both optional):

{
"name": "Q1 Financials",
"description": "Updated description"
}

DELETE /dashboards/{dashboard_id}

Deletes the dashboard but does not delete the associated files — they remain in your Files list. Combined output files in MinIO are also removed.

Terminal window
curl -X DELETE -H "Authorization: Bearer TOKEN" \
https://api.excellent-banking.com/dashboards/15

Response (200):

{
"message": "Dashboard deleted successfully"
}

POST /dashboards/{dashboard_id}/files

Add one or more files to a dashboard. Marks the dashboard as outdated — you’ll need to reprocess to rebuild the combined Excel.

Request body:

{
"file_ids": [128, 129, 130]
}

All files must belong to the authenticated user. Duplicate additions are silently ignored.

Response (200):

{
"message": "Added 3 files to dashboard"
}

DELETE /dashboards/{dashboard_id}/files

Request body:

{
"file_ids": [129]
}

Marks the dashboard outdated.


GET /dashboards/{dashboard_id}/files

Returns the full FileResponse objects for all files currently assigned to the dashboard.

Terminal window
curl -H "Authorization: Bearer TOKEN" \
https://api.excellent-banking.com/dashboards/15/files

POST /dashboards/{dashboard_id}/reprocess

Triggers a background task that merges all dashboard files into combined outputs (JSON, SQLite, Excel). Old combined files in MinIO are deleted before the rebuild starts. Sets dashboard status to up_to_date.

Terminal window
curl -X POST -H "Authorization: Bearer TOKEN" \
https://api.excellent-banking.com/dashboards/15/reprocess

Response (200):

{
"message": "Dashboard build started",
"task_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901"
}

If the dashboard has no files, the response is:

{
"message": "Dashboard is empty, no files to combine"
}

GET /dashboards/{dashboard_id}/download-excel

Returns a pre-signed GET URL for the combined Excel file. You must have reprocessed first.

Query parameters:

ParamTypeDefaultDescription
modestringmergedmerged (single sheet) or separate (one sheet per file)
Terminal window
curl -H "Authorization: Bearer TOKEN" \
"https://api.excellent-banking.com/dashboards/15/download-excel?mode=merged"

Response (200):

{
"download_url": "https://minio.example.com/excel/dashboard_id=15/combined_merged.xlsx?X-Amz-..."
}

Errors:

StatusWhen
404Dashboard not found or Excel not built yet — reprocess first