Skip to content

API Reference

All endpoints are served by the Rawdash standalone server (started via serve() from @rawdash/server). The examples below use the default base path /.

Authentication

Rawdash does not apply authentication by default. Place an authenticating reverse proxy in front of the Rawdash server if you need to restrict access.

For Rawdash Cloud, pass your API key as a Bearer token:

Authorization: Bearer <api-key>

Health

GET /health

Returns the current sync state for the server.

Response

{
"status": "idle",
"lastSyncAt": "2025-04-25T10:00:00.000Z",
"lastError": null
}
FieldTypeDescription
status"idle" | "syncing" | "error"Current sync lifecycle status
lastSyncAtISO 8601 string | nullTimestamp of the last successful sync
lastErrorstring | nullLast sync error message, if any

Widgets

GET /dashboards/:dashboardId/widgets

Fetch all widget data for a dashboard.

Path parameters

ParameterDescription
dashboardIdDashboard ID as defined in defineConfig({ dashboards })

Response

Returns a JSON array of widget entries:

[
{
"id": "open_prs",
"widgetId": "open_prs",
"connectorId": "github",
"data": { "value": 12 },
"cachedAt": "2025-04-25T10:00:00.000Z"
}
]
FieldTypeDescription
id / widgetIdstringWidget key from your dashboard config
connectorIdstringID of the connector that sourced this widget
dataobjectComputed metric result
cachedAtISO 8601 string | nullTimestamp of the sync that produced this data

Sync

POST /sync

Trigger an immediate full sync across all configured connectors.

Response

{ "triggered": true }

Returns triggered: false if a sync is already in progress.


GET /dashboards/:dashboardId/widgets/:widgetId

Fetch data for a single widget.

Response (200)

Returns a single widget entry object (same shape as an array item above).

Response (404)

{ "error": "Widget not found" }