https://app.evoriqa.com/api/v1/reseller/clients/{workspaceId}/analyticsGet a client's analytics
Returns a client workspace's full analytics bundle — the same numbers the agency's ROI report page and weekly digest show, and the same shape as `GET /analytics/summary`. A workspace that is not a client of the organization returns 403; a malformed `workspaceId` returns 404. Reseller endpoints additionally require the key to live on the organization owner's own (primary) workspace — any other workspace returns 403.
Requires scope reseller:read
Access is gated — enable it before your first call
The API is off by default. A request succeeds only when all three switches are on: the platform master switch (off by default), your organisation’s API toggle, and your plan or client entitlement. Any one off returns 403 API access is not enabled for this workspace.
Parameters
| Name | In | Type | Required | Default | Description |
|---|---|---|---|---|---|
| workspaceId | path | string uuid | Required | — | The client workspace's id. |
| range | query | string one of today · last_7d · last_30d · this_month · last_month · last_90d · last_year | Optional | this_month | Preset window. An unrecognised value silently falls back to this_month rather than failing. |
| tz | query | string | Optional | UTC | IANA timezone for bucketing. |
Request
curl "https://app.evoriqa.com/api/v1/reseller/clients/{workspaceId}/analytics" \
-H "x-api-key: $EVORIQA_API_KEY"const res = await fetch("https://app.evoriqa.com/api/v1/reseller/clients/{workspaceId}/analytics", {
headers: {
Authorization: `Bearer ${process.env.EVORIQA_API_KEY}`,
},
});
const responseBody = await res.json();import os
import requests
res = requests.get(
"https://app.evoriqa.com/api/v1/reseller/clients/{workspaceId}/analytics",
headers={"Authorization": f"Bearer {os.environ['EVORIQA_API_KEY']}"},
)
body = res.json()Response
{
"success": true,
"data": {
"conversations": 412,
"publicConversations": 398,
"testConversations": 14,
"messages": 2160,
"aiReplies": 1015,
"leads": 57,
"unanswered": 12,
"creditsUsed": 1830,
"avgLatencyMs": 1420,
"messagesOverTime": [
{
"label": "2026-08-01",
"count": 96
}
],
"topQuestions": [
{
"content": "How do refunds work?",
"count": 14
}
],
"outcomes": {
"total": 398,
"resolved": 310,
"resolutionRate": 0.78,
"aiResolved": 262,
"deflectionRate": 0.66,
"handoffs": 71,
"handoffRate": 0.18,
"csatAvg": 4.6,
"csatCount": 88,
"csatPositiveRate": 0.93
},
"csatComments": [
{
"id": "7c9b0a52-2f38-4b6d-a0e1-9f3b7d4c2a61",
"rating": 5,
"comment": "Answered instantly, great.",
"createdAt": "2026-08-08T16:40:00.000Z"
}
]
}
}