Workflow Performance Report
Per-workflow-definition performance — instance counts, completion, error rate, average duration, escalation rate, and SLA compliance.
/apidev/v1/reports/workflow/workflow-performanceOverview
Aggregates execution metrics for each workflow definition over a date range — total instances, completed instances, error instances, average completion duration, escalation rate, and SLA compliance. Use it to compare how different workflows perform side by side and to spot definitions with high error or escalation rates. Both active and archived (completed, cancelled, error) instances are included.
Results are paginated and can be ordered by any of the metric columns. Filter by one or more workflow definitions, or by instance status, to narrow the comparison.
The sla_compliance_percent field reflects real values only when SLA tracking is enabled for your company. When SLA is not configured, this field defaults to 100 for every workflow (no breaches recorded). Contact your account team to enable per-step SLA tracking.
Request
Request Headers
Every request to a protected endpoint requires these headers:
| Header | Required | Description |
|---|---|---|
Authorization | Yes | Bearer token obtained from the Login endpoint. Format: Bearer <token> |
X-API-Key | Yes | Company integration key provided during onboarding. Format: gtk_xxx... |
tenant | Yes | Your assigned tenant domain (default: geotareas.com) — always send your assigned tenant |
Content-Type | Conditional | application/json — required for POST and PUT requests |
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
startdate | string | Yes | — | ISO 8601 start date-time (e.g. 2026-03-01T00:00:00). |
enddate | string | Yes | — | ISO 8601 end date-time. Max range 92 days from startdate. |
definition_ids | string | No | — | Comma-separated workflow definition IDs to filter by. Max 100. |
statuses | string | No | — | Comma-separated instance statuses to include (e.g. RUNNING,COMPLETED,ERROR). Max 20. |
sort_by | string | No | totalInstances | Column to sort by. One of: totalInstances, completedInstances, errorInstances, avgDurationSeconds, escalationRate, slaCompliancePercent, workflowName. |
sort_dir | string | No | desc | Sort direction: asc or desc. |
limit | integer | No | 25 | Number of records per page (1–100). |
offset | integer | No | 0 | Number of records to skip for pagination. |
sort_by is validated per reportThis report accepts exactly these values:
totalInstances · completedInstances · errorInstances · avgDurationSeconds · escalationRate · slaCompliancePercent · workflowName
Anything else returns 400 VALIDATION_ERROR, and the message names the accepted values. Until 2026-08-16 an unrecognised sort_by was silently ignored and the report came back in its default order, so a mis-typed column looked like it had worked.
Code Examples
- cURL
- JavaScript
- Python
curl -s -H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT" \
"https://$TENANT/apidev/v1/reports/workflow/workflow-performance?startdate=2026-03-01T00:00:00&enddate=2026-03-31T23:59:59&limit=25"
const res = await fetch(
`https://${TENANT}/apidev/v1/reports/workflow/workflow-performance?startdate=2026-03-01T00:00:00&enddate=2026-03-31T23:59:59&limit=25`,
{
headers: {
'Authorization': `Bearer ${TOKEN}`,
'X-API-Key': APIKEY,
'tenant': TENANT,
},
}
);
const data = await res.json();
import requests
response = requests.get(
f"https://{TENANT}/apidev/v1/reports/workflow/workflow-performance",
headers={"Authorization": f"Bearer {TOKEN}", "X-API-Key": APIKEY, "tenant": TENANT},
params={"startdate": "2026-03-01T00:00:00", "enddate": "2026-03-31T23:59:59", "limit": 25},
)
data = response.json()
Response
Response Fields
Each item in data represents one workflow definition.
| Field | Type | Description |
|---|---|---|
wfdefid | string | Workflow definition ID. |
workflowName | string | Workflow definition name. |
totalInstances | number | Total instances started in the period. |
completedInstances | number | Instances that finished successfully. |
errorInstances | number | Instances that ended in error. |
avgDurationSeconds | number | Average completion duration (seconds) of completed instances. |
escalationRate | number | Percentage of tasks that were escalated. |
slaCompliancePercent | number | SLA compliance percentage (defaults to 100 when SLA is not configured). |
Example Response
{
"success": true,
"data": [
{
"wfdefid": "8421003344556677",
"workflowName": "Incident Resolution",
"totalInstances": 184,
"completedInstances": 171,
"errorInstances": 3,
"avgDurationSeconds": 4820.5,
"escalationRate": 12.5,
"slaCompliancePercent": 92.31
}
],
"meta": {
"total": 1,
"limit": 25,
"offset": 0
}
}
Errors
| Code | HTTP | Description |
|---|---|---|
VALIDATION_ERROR | 400 | Invalid params: missing dates, invalid enum values, out-of-range pagination. |
INVALID_DATE_RANGE | 400 | Date range invalid or greater than 92 days. |
UNAUTHORIZED | 401 | Missing, invalid, or expired tenant / Authorization / X-API-Key |
FORBIDDEN | 403 | User lacks required permission. |
RATE_LIMITED | 429 | Exceeded 10 req/min. |
INTERNAL_ERROR | 500 | Unexpected server error. |