Deskhero Developer Hub
Back to deskhero.com
Stats

Team

Per group and per user: what each carried, how fast they answered, how often the promise was kept, plus the highlighted AI row.

GET /api/{tenant:minlength(2)}/v{version:apiVersion}/stats/team
Authorisation
Minimum role: USER

Request arguments

Name Type Source
group_idsInt32[]Query
timeframeENUM dashboard_kpi_timeframe
fromDateTime
toDateTime
compareBoolean
Request body example

Response

Status
200 (OK)
Type
DTO_stats_team
Wrapper
DTO_response_wrap
Other statuses
400 (BadRequest), 403 (Forbidden)
Response body example
DTO_stats_team
NameTypeReadOnlyDescription
groupsDTO_stats_team_group[]Groups
usersDTO_stats_team_user[]Users
ai_rowDTO_stats_team_userThe highlighted "Deskhero AI" row: auto-replies plus the chat-bot.
periodDTO_stats_periodPeriod
active_usersInt32Users who sent at least one reply in the window.
replies_sentDTO_stats_metricOutbound replies sent by people.
resolved_by_usersDTO_stats_metricTickets resolved in the window that are assigned to a person.
resolved_by_aiDTO_stats_metricTickets resolved in the window that never needed a person.
resolved_totalInt32Total resolved in the window, so the two figures above can be shown as shares.
sla_availableBooleanTrue when SLA columns should be rendered at all.
DTO_stats_team_group
NameTypeReadOnlyDescription
idInt32Id
nameStringName
createdInt32Created
resolvedInt32Resolved
average_first_reply_secDouble (nullable)Average first reply sec
first_reply_sla_pctDouble (nullable)First reply sla pct
resolution_sla_pctDouble (nullable)Resolution sla pct
auto_answered_pctDouble (nullable)Share of the group's tickets that were auto-answered, as a percentage.
DTO_stats_team_user
NameTypeReadOnlyDescription
idInt320 on the AI row.
nameStringName
resolvedInt32Tickets resolved in the window that are assigned to this user RIGHT NOW - Deskhero does not record who resolved a ticket, so reassignment moves the credit. The card's footnote says so.
replies_sentInt32Outbound replies the user sent in the window.
average_first_reply_secDouble (nullable)Average first reply sec
first_reply_sla_pctDouble (nullable)First reply sla pct
first_reply_sla_measuredInt32Measured first-reply clocks behind first_reply_sla_pct, so a thin sample is visible.
is_aiBooleanTrue for the highlighted AI row.
DTO_stats_period
NameTypeReadOnlyDescription
fromDateTimeFirst day of the window, workspace-local.
toDateTimeLast day of the window, workspace-local.
previous_fromDateTime (nullable)First day of the comparison window. Null when not comparing.
previous_toDateTime (nullable)Last day of the comparison window. Null when not comparing.
time_zoneStringIANA id of the zone every bucket and boundary was cut in.
granularityString"hour", "day" or "month" - the width of one point in every series below.
timeframeENUM dashboard_kpi_timeframeWhich preset produced this window (CUSTOM when from/to were supplied).
compareBooleanTrue when the previous-period figures are populated.
DTO_stats_metric
NameTypeReadOnlyDescription
currentDouble (nullable)Current
previousDouble (nullable)The same figure over the previous window. Null when not comparing, or when there is no history.
ENUM dashboard_kpi_timeframe
ValueNameDescription
0UNKNOWNUNKNOWN
1TODAYTODAY
2YESTERDAYYESTERDAY
3THIS_WEEKTHIS_WEEK
4LAST_4_WEEKSLAST_4_WEEKS
5LAST_12_WEEKSLAST_12_WEEKS
6ALL_TIMEALL_TIME
7CUSTOMStats only: the caller supplies from and to instead. Resolving this without dates is an error, so the shared GetTimeFrame() extension deliberately refuses it.
8LAST_12_MONTHSLAST_12_MONTHS

Generated Aug 4, 2026 18:37