Base URL: http://localhost:4000/api
Returns composite organization health score.
Response: { "score": 72, "teamCount": 4 }
Health check endpoint.
Response: { "status": "ok" }
Returns all 5 current KPI values for a team.
Response:
[
{
"kpiType": "cycle_time",
"value": 3.5,
"unit": "days",
"healthLevel": "strong",
"breakdown": { "ideation": 0.7, "coding": 1.3, "review": 0.7, "deploy": 0.8 }
}
]Returns detailed KPI data for a specific metric.
Returns timeseries data for charting. Range: 30d, 60d, 90d.
Query params: range (default: 90d), team (optional slug)
Response:
[
{ "periodEnd": "2024-01-31", "value": 3.5, "healthLevel": "strong" }
]Returns cross-team KPI comparison.
Query params: teams (comma-separated slugs), kpi (all or specific type)
Returns auto-generated insights. Optional severity filter.
Dismisses an insight.
Returns shift direction and velocity for all KPIs.
Response:
[
{ "kpiType": "cycle_time", "shiftPercent": -8.5, "direction": "improving", "velocity": "accelerating" }
]Returns threshold configuration for all KPIs.
Updates threshold values.
Body:
{
"cycle_time": { "elite_max": 3, "strong_max": 7, "moderate_max": 14 }
}Triggers data collection. Requires X-API-Key header.
Returns queue status. Requires X-API-Key header.
Returns all teams.
Creates a team. Body: { "name": "...", "slug": "...", "metadata": {} }
Updates a team.
Deletes a team.
Write endpoints and collection endpoints require an X-API-Key header. The key is validated against a SHA-256 hash stored in the API_KEY_HASH environment variable.
| Endpoint Type | Limit |
|---|---|
| Read (GET) | 100/min per IP |
| Write (POST/PUT/DELETE) | 20/min per IP |
| Collection | 5/min per API key |