Analytics
Runs, failures, time saved, connector health and backend traffic for the apps you can open. 2 routes, from the API’s own OpenAPI document.
2 routes. Every path starts at https://cloud-api.qaldy.com. Sign-in, tokens, errors and limits are on the overview.
Routes#
| Method | Path | What it does |
|---|---|---|
| GET | /v1/workspaces/{ws}/analytics | Runs, failures, time saved, connector health and backend traffic (apps you can view) |
| GET | /v1/workspaces/{ws}/incidents | Failures grouped into incidents: first bad run, blast radius, cause (apps you can view) |
Reference#
GET /v1/workspaces/{ws}/analytics#
Runs, failures, time saved, connector health and backend traffic (apps you can view).
- Authentication: the console’s session cookie.
- Token: a personal access token or an MCP sign-in with the
readscope. - Who: member, filtered to
can_viewapps like the runs list (an app you cannot open is not counted or named;appIdfor it is 404app_not_found); backend requests are workspace-wide, so admins only and never withappId. Tokens:read
| Parameter | In | Type | Required | Notes |
|---|---|---|---|---|
ws | path | string | yes | 1 to 128 characters |
range | query | "7d" · "30d" · "90d" | default "30d" | |
appId | query | string | 1 to 128 characters |
Response 200
| Field | Type | Required | Notes |
|---|---|---|---|
range | "7d" · "30d" · "90d" | yes | |
days | integer | yes | at least 1 |
appId | string or null | yes | |
timezone | string | yes | |
generatedAt | string (date-time) | yes | |
from | string (date) | yes | |
to | string (date) | yes | |
truncated | boolean | yes | |
totals | object | yes | |
totals.runs | integer | yes | at least 0 |
totals.succeeded | integer | yes | at least 0 |
totals.failed | integer | yes | at least 0 |
totals.blocked | integer | yes | at least 0 |
totals.waiting | integer | yes | at least 0 |
totals.hoursSaved | number | yes | at least 0 |
tiles | object | yes | |
tiles.runsToday | object | yes | |
tiles.failureRate | object | yes | |
tiles.hoursSaved | object | yes | |
tiles.medianMs | object | yes | |
tiles.p95Ms | object | yes | |
daily | object[] | yes | |
daily[].day | string (date) | yes | |
daily[].succeeded | integer | yes | at least 0 |
daily[].failed | integer | yes | at least 0 |
daily[].blocked | integer | yes | at least 0 |
daily[].waiting | integer | yes | at least 0 |
daily[].hoursSaved | number | yes | at least 0 |
daily[].requests | integer | yes | at least 0 |
byApp | object[] | yes |
…and 14 more fields. The full schema is in openapi.json.
Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).
GET /v1/workspaces/{ws}/incidents#
Failures grouped into incidents: first bad run, blast radius, cause (apps you can view).
- Authentication: the console’s session cookie.
- Token: a personal access token or an MCP sign-in with the
readscope. - Who: member (filtered to
can_view); tokens: yes, read scope
| Parameter | In | Type | Required | Notes |
|---|---|---|---|---|
ws | path | string | yes | 1 to 128 characters |
range | query | "7d" · "30d" · "90d" | default "7d" | |
appId | query | string | 1 to 128 characters | |
locale | query | "en" · "ru" · "kk" |
Response 200
| Field | Type | Required | Notes |
|---|---|---|---|
range | "7d" · "30d" · "90d" | yes | |
generatedAt | string (date-time) | yes | |
incidents | object[] | yes | |
incidents[].id | string | yes | at least 1 characters |
incidents[].status | "open" · "recovered" | yes | |
incidents[].failureClass | "egress_denied" · "secret_missing" · "auth_rejected" · "quota" · "ai_budget" · "ai_setup" · "timeout" · "connector_rate_limited" · … | yes | |
incidents[].confidence | "high" · "medium" · "low" | yes | |
incidents[].subject | object | yes | |
incidents[].title | string | yes | at least 1 characters |
incidents[].cause | string | yes | at least 1 characters |
incidents[].next | string | yes | at least 1 characters |
incidents[].firstRun | object | yes | |
incidents[].lastFailureAt | string (date-time) | yes | |
incidents[].recoveredAt | string (date-time) or null | yes | |
incidents[].failedRuns | integer | yes | at least 1 |
incidents[].runsInSpan | integer | yes | at least 1 |
incidents[].apps | object[] | yes | |
incidents[].automations | object[] | yes | |
truncated | boolean | yes |
Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).