Analytics API¶
The analytics API is served under /analytics/api/v1.
The interactive OpenAPI reference is available at /analytics/docs on the host where Analytics is deployed.
Most endpoints require authentication. Browser users normally authenticate through Spiff Arena and then call the API with session cookies. API clients can authenticate with either:
an
Authorization: Bearer <token>header plusSpiffWorkflow-Authentication-Identifier, ora
SpiffWorkflow-Api-Keyheader when API key access is configured.
Identifiers¶
Most endpoints include an identifier path value.
Identifiers refer to a process group or process model.
When a Spiff Arena identifier contains /, replace it with : in the API path.
For example:
Process group/model identifier: finance/invoice-review
API path identifier: finance:invoice-review
For group-level queries, append % to include descendants:
finance%
Use GET /analytics/api/v1/identifiers/list to discover available process groups and models.
Request Body¶
POST query endpoints accept the same JSON body shape:
{
"start": "2026-05-01T00:00:00Z",
"end": "2026-05-27T23:59:59Z",
"metadata": [
{
"name": "region",
"type": "text",
"value": "Northeast"
}
]
}
Fields:
start: beginning of the reporting window.end: end of the reporting window.metadata: optional filters against process metadata values.metadata[].name: metadata key.metadata[].type: one oftext,int, orfloat.metadata[].value: value to match.
Core Endpoints¶
Endpoint |
Method |
Use |
|---|---|---|
|
|
List process groups and process models available to analytics. |
|
|
Get active, completed, and errored counts and summary duration data. |
|
|
Get activity trends over time. |
|
|
Get process instance rows for the selected filters. |
|
|
Get task rows for the selected filters. |
|
|
Get milestone rows for the selected filters. |
|
|
Download a zip export containing |
Model Detail Endpoints¶
Use these endpoints when the identifier represents a single process model.
Endpoint |
Method |
Use |
|---|---|---|
|
|
Summarize task counts and durations for a model. |
|
|
Get model duration percentile data. |
|
|
Get milestone duration distribution data. |
|
|
Get duration distribution data for a specific BPMN task id. |
Error Endpoints¶
Endpoint |
Method |
Use |
|---|---|---|
|
|
Summarize errors by model. |
|
|
Get task-level error detail for a model. |
Static BPMN Files¶
The UI uses:
GET /analytics/api/v1/static/{file_path}
to retrieve BPMN files for diagram display. This endpoint is primarily for the analytics UI.
Example Request¶
curl "$SPIFFWORKS_BASE_URL/analytics/api/v1/overview/finance:invoice-review" \
-H "Authorization: Bearer $TOKEN" \
-H "SpiffWorkflow-Authentication-Identifier: default" \
-H "Content-Type: application/json" \
--data '{
"start": "2026-05-01T00:00:00Z",
"end": "2026-05-27T23:59:59Z",
"metadata": []
}'
For live schema details, response examples, and validation errors, use the interactive API reference at /analytics/docs on your Analytics host.
Selecting the analytical store¶
PostgreSQL is the deployment default. Operators can set ANALYTICS_DATA_BACKEND=clickhouse
for all analytical queries, or an authenticated diagnostic request can select a store with:
Spiff-Analytics-Data-Backend: postgres
Spiff-Analytics-Data-Backend: clickhouse
The equivalent query parameter is convenient for interactive API testing:
?data_backend=postgres
?data_backend=clickhouse
If a request supplies both selectors, they must name the same store. The status endpoint reports
the request’s data_backend, the deployment’s default_data_backend, and
available_data_backends. The Analytics UI provides a persistent Data source selector and
sends the header on every warehouse query and export.
Both stores implement the query and export endpoints listed above. Model identifier discovery,
authenticated static BPMN retrieval, authentication, frontend assets, and status responses retain
their existing implementations because they are not analytical warehouse queries. The
bin/check_dual_store_parity command sends one event set through normal ingestion and compares
every endpoint currently queried by the UI, plus both export files.