Zenduty Analytics API
These endpoints provide incident analytics for your account. All analytics endpoints accept POST requests with optional filter parameters and return metrics such as incident counts, MTTA, and MTTR.
These endpoints provide incident analytics for your account. All analytics endpoints accept POST requests with optional filter parameters and return metrics such as incident counts, MTTA, and MTTR.
openapi: 3.0.0
info:
version: 1.1.0
title: Zenduty Account Custom Role Analytics API
termsOfService: https://zenduty.com
contact:
email: vishwa@zenduty.com
license:
name: Apache 2.0
x-logo:
url: data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9Ii05OC4zIDE3My43IDIwNi4zIDUzLjIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgLTk4LjMgMTczLjcgMjA2LjMgNTMuMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6IzBGMTcyQTt9DQoJLnN0MXtmaWxsOiNGRDlBMDA7fQ0KPC9zdHlsZT4NCjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0tMjksMjEwLjJoNi4zYzIuNywwLDQuOSwyLjIsNC45LDQuOWgtMTguMWMwLTUuMyw0LjEtOS40LDcuOS0xMy4xbDMuOC0zLjdoLTcuMWMtMi41LDAtNC42LTIuMS00LjYtNC42aDE4DQoJYzAsNS4zLTQuMSw5LjQtNy44LDEzLjJMLTI5LDIxMC4yeiIvPg0KPHBhdGggY2xhc3M9InN0MCIgZD0iTTMuNywyMDUuOGgtMTUuNWMwLjEsMS41LDAuNiwyLjcsMS42LDMuNmMwLjksMC45LDIuMSwxLjIsMy41LDEuMmMyLDAsMy40LTAuOSw0LjMtMi41aDUuOA0KCWMtMC42LDItMS44LDMuNi0zLjUsNC45Yy0xLjgsMS4yLTMuOSwyLTYuNCwyYy0yLDAtMy45LTAuNS01LjUtMS40Yy0xLjYtMC45LTIuOS0yLjEtMy44LTMuN2MtMC45LTEuNi0xLjQtMy40LTEuNC01LjcNCgljMC0yLjEsMC41LTQuMSwxLjQtNS43YzAuOS0xLjYsMi4xLTIuOCwzLjgtMy43YzEuNi0wLjksMy40LTEuNCw1LjUtMS40YzIsMCwzLjgsMC40LDUuNCwxLjJjMS42LDAuOSwyLjgsMi4xLDMuNywzLjYNCgljMC45LDEuNiwxLjMsMy4zLDEuMyw1LjRDMy44LDIwNC42LDMuOCwyMDUuMiwzLjcsMjA1Ljh6IE0tMS43LDIwMi4yYzAtMS40LTAuNS0yLjUtMS41LTMuMmMtMS0wLjktMi4xLTEuMi0zLjUtMS4yDQoJYy0xLjQsMC0yLjQsMC40LTMuNCwxLjJjLTAuOSwwLjctMS41LDEuOC0xLjYsMy4zaDEwLjFWMjAyLjJ6Ii8+DQo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjcuOSwxOTguNGMwLjktMS42LDItMi45LDMuNS0zLjhjMS41LTAuOSwzLjEtMS40LDQuOS0xLjRjMS40LDAsMi42LDAuMywzLjksMC45YzEuMywwLjYsMi4zLDEuNCwzLDIuNHYtMTYuNw0KCWg1LjR2MzVoLTUuNHYtMy4xYy0wLjYsMS0xLjYsMS45LTIuOCwyLjVjLTEuMywwLjYtMi42LDEtNC4yLDFjLTEuOCwwLTMuNC0wLjUtNC45LTEuNGMtMS41LTAuOS0yLjYtMi4zLTMuNS0zLjkNCgljLTAuOS0xLjYtMS4zLTMuNS0xLjMtNS44QzI2LjYsMjAyLDI3LDIwMCwyNy45LDE5OC40eiBNNDIuNSwyMDAuOWMtMC41LTAuOS0xLjMtMS42LTItMi4xYy0wLjktMC41LTEuOC0wLjgtMi44LTAuOA0KCWMtMSwwLTEuOSwwLjMtMi44LDAuOGMtMC45LDAuNS0xLjUsMS4xLTIsMi4xYy0wLjUsMC45LTAuOCwyLTAuOCwzLjNjMCwxLjMsMC4zLDIuNCwwLjgsMy40YzAuNSwxLDEuMywxLjYsMiwyLjENCgljMC45LDAuNSwxLjgsMC44LDIuOCwwLjhjMSwwLDEuOS0wLjMsMi44LTAuOGMwLjktMC41LDEuNS0xLjMsMi0yLjFjMC41LTAuOSwwLjgtMiwwLjgtMy40UzQzLDIwMS44LDQyLjUsMjAwLjl6Ii8+DQo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjUuNCwyMDQuM3YxMC42aC01di0xMC42YzAtMi0wLjUtMy41LTEuNS00LjVjLTEtMS4xLTIuMS0xLjYtMy41LTEuNnMtMi41LDAuNS0zLjUsMS42DQoJYy0wLjksMS0xLjQsMi42LTEuNCw0LjV2MTAuNkg1LjV2LTEwLjZjMC0yLjEsMC41LTQsMS4zLTUuN2MwLjktMS42LDItMi45LDMuNS0zLjhzMy4xLTEuNCw1LTEuNHMzLjUsMC41LDUsMS40DQoJYzEuNSwwLjksMi42LDIuMSwzLjUsMy44QzI0LjksMjAwLjMsMjUuNCwyMDIuMiwyNS40LDIwNC4zeiIvPg0KPHBhdGggY2xhc3M9InN0MCIgZD0iTTUxLjMsMjA0LjF2LTEwLjRoNXYxMC40YzAsMiwwLjUsMy41LDEuNSw0LjVjMSwxLjEsMi4xLDEuNiwzLjUsMS42YzEuNCwwLDIuNS0wLjUsMy41LTEuNg0KCWMwLjktMSwxLjQtMi42LDEuNC00LjV2LTEwLjRoNC45djEwLjRjMCwyLjEtMC41LDQtMS4zLDUuN2MtMC45LDEuNi0yLDIuOS0zLjUsMy44Yy0xLjUsMC45LTMuMSwxLjQtNSwxLjRzLTMuNS0wLjUtNS0xLjQNCgljLTEuNS0wLjktMi42LTIuMS0zLjUtMy44QzUxLjcsMjA4LjEsNTEuMywyMDYuMiw1MS4zLDIwNC4xeiIvPg0KPHBhdGggY2xhc3M9InN0MCIgZD0iTTgwLjcsMTk4djEwLjJjMCwwLjgsMC4xLDEuMywwLjUsMS41YzAuNCwwLjQsMC45LDAuNSwxLjgsMC41aDIuNXY0LjVoLTMuNGMtNC41LDAtNi44LTIuMS02LjgtNi41VjE5OGgtNS4xDQoJdi00LjRoNS4xdi04LjdoNS40djguN2g0LjhsMi42LDQuNEg4MC43eiIvPg0KPHBhdGggY2xhc3M9InN0MCIgZD0iTTEwNy40LDE5My42bC04LjcsMjAuNmwtNSwxMS44aC01LjdsNS4xLTExLjhsLTguNC0yMC42aDZsNS40LDE0LjdsNS41LTE0LjdIMTA3LjR6Ii8+DQo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNLTY2LjksMTg5LjJjLTEuOSwwLTQuNy0yLjEtNC43LTQuOHYtMy42YzAtMi43LDAuOC00LjgsNC43LTQuOGMzLjksMCw0LjcsMi4xLDQuNyw0Ljh2My42DQoJQy02Mi4yLDE4Ny4xLTY1LDE4OS4yLTY2LjksMTg5LjJ6Ii8+DQo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNLTM3LjcsMjIzaC0yMS41bDMuOC0xMS40bDAuNy0xLjhjNC4yLDEuNywxMy4xLDcuMiwxNy43LDExLjZDLTM2LjQsMjIyLjEtMzYuOCwyMjMtMzcuNywyMjN6Ii8+DQo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNLTU3LjMsMTkyLjlsLTE1LjksMTAuNGMtNC4yLTIuNS05LjItNS45LTEyLjItOC44Yy0wLjYtMC42LTAuMi0xLjUsMC43LTEuNUgtNTcuM3oiLz4NCjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0tNDguNiwxOTQuM2wtNiwxNS42bC0wLjcsMS44bC0zLjgsMTEuNEgtOTZjLTAuOCwwLTEuMy0wLjktMC44LTEuNWMwLjktMS4yLDEuOC0yLjMsMi43LTMuMw0KCWMyLjEtMi4yLDQuNC00LjEsNi45LTUuOGwwLjEtMC4xYzAuOC0wLjYsMS42LTEuMSwyLjQtMS42bDExLjQtNy40bDE1LjktMTAuNGg3LjdDLTQ4LjgsMTkyLjktNDguNCwxOTMuNi00OC42LDE5NC4zeiIvPg0KPC9zdmc+DQo=
description: "# Introduction\n\nZenduty is a cutting edge platform for incident management. With high level automation, Zenduty enables faster and better incident resolution keeping developers first.\n\n\n Javascript Libraries: https://github.com/Zenduty/zenduty-js\n\n Ruby Libraries: https://github.com/Zenduty/zenduty-ruby\n\n Python Libraries: https://github.com/Zenduty/zenduty-python-sdk\n\n Postman Collection for Zenduty API: https://github.com/Zenduty/zenduty-api-postman.git\n\n Account-level roles and permissions: https://docs.zenduty.com/docs/users#account-level-roles-and-permissions\n\n Team-level roles and permissions: https://docs.zenduty.com/docs/users#team-level-roles-and-permissions\n"
servers:
- url: https://www.zenduty.com
security:
- bearerAuth: []
tags:
- name: Analytics
description: These endpoints provide incident analytics for your account. All analytics endpoints accept POST requests with optional filter parameters and return metrics such as incident counts, MTTA, and MTTR.
paths:
/api/v2/account/analytics/incident_stats/:
post:
tags:
- Analytics
summary: Get Incident Stats
description: Returns incident counts for the account and the requesting user.
requestBody:
description: Optional filter parameters
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsRequestBody'
example:
from_date: '2025-09-24'
to_date: '2025-12-23'
team_ids: []
service_ids: []
user_ids: []
priority_ids: []
sla_ids: []
escalation_policy_ids: []
tag_ids: []
urgency: ''
child_incident: include
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/IncidentStatsResponse'
example:
total_incidents: 150
total_triggered_incidents: 20
total_acknowledged_incidents: 30
total_resolved_incidents: 100
user_total_incidents: 40
user_triggered_incidents: 5
user_acknowledged_incidents: 10
user_resolved_incidents: 25
'403':
description: Forbidden
content:
application/json:
example:
detail: You do not have permission to perform this action.
/api/v2/account/analytics/team_analytics/:
post:
tags:
- Analytics
summary: Get Team Analytics
description: Returns incident metrics for each team.
requestBody:
description: Optional filter parameters
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsRequestBody'
example:
from_date: '2025-09-24'
to_date: '2025-12-23'
team_ids: []
service_ids: []
user_ids: []
priority_ids: []
sla_ids: []
escalation_policy_ids: []
tag_ids: []
urgency: ''
child_incident: include
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/TeamAnalyticsResponse'
example:
all_teams:
total_incidents: 500
total_acknowledged: 400
total_resolved: 300
mtta_seconds: 120.5
mttr_seconds: 3600
team_records:
- team:
name: Platform Team
unique_id: abc-def-123
total_incidents: 100
total_acknowledged: 80
total_resolved: 60
mtta_seconds: 90.2
mttr_seconds: 2400
'403':
description: Forbidden
content:
application/json:
example:
detail: You do not have permission to perform this action.
/api/v2/account/analytics/service_analytics/:
post:
tags:
- Analytics
summary: Get Service Analytics
description: Returns incident metrics for each service.
requestBody:
description: Optional filter parameters
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsRequestBody'
example:
from_date: '2025-09-24'
to_date: '2025-12-23'
team_ids: []
service_ids: []
user_ids: []
priority_ids: []
sla_ids: []
escalation_policy_ids: []
tag_ids: []
urgency: ''
child_incident: include
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceAnalyticsResponse'
example:
all_services:
total_incidents: 500
total_acknowledged: 400
total_resolved: 300
mtta_seconds: 120.5
mttr_seconds: 3600
service_records:
- team:
name: Platform Team
unique_id: abc-def-123
service:
name: API Gateway
unique_id: xyz-789
total_incidents: 100
total_acknowledged: 80
total_resolved: 60
mtta_seconds: 90.2
mttr_seconds: 2400
'403':
description: Forbidden
content:
application/json:
example:
detail: You do not have permission to perform this action.
/api/v2/account/analytics/user_analytics/:
post:
tags:
- Analytics
summary: Get User Analytics
description: Returns incident metrics for each user.
requestBody:
description: Optional filter parameters
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsRequestBody'
example:
from_date: '2025-09-24'
to_date: '2025-12-23'
team_ids: []
service_ids: []
user_ids: []
priority_ids: []
sla_ids: []
escalation_policy_ids: []
tag_ids: []
urgency: ''
child_incident: include
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/UserAnalyticsResponse'
example:
all_users:
total_incidents: 500
total_acknowledged: 400
total_resolved: 300
mtta_seconds: 120.5
mttr_seconds: 3600
user_records:
- user:
full_name: Jane Doe
username: jane.doe
total_incidents: 100
total_acknowledged: 80
total_resolved: 60
mtta_seconds: 90.2
mttr_seconds: 2400
'403':
description: Forbidden
content:
application/json:
example:
detail: You do not have permission to perform this action.
components:
schemas:
AnalyticsServiceInfo:
type: object
properties:
name:
type: string
description: Service name.
unique_id:
type: string
format: uuid
description: Service unique identifier.
AnalyticsMetrics:
type: object
description: Common analytics metrics.
properties:
total_incidents:
type: integer
description: Total incidents.
total_acknowledged:
type: integer
description: Incidents with status > 1 (acknowledged or resolved).
total_resolved:
type: integer
description: Incidents with status = 3.
mtta_seconds:
type: number
format: float
description: Weighted average Mean Time to Acknowledge in seconds.
mttr_seconds:
type: number
format: float
description: Weighted average Mean Time to Resolve in seconds.
UserAnalyticsResponse:
type: object
properties:
all_users:
$ref: '#/components/schemas/AnalyticsMetrics'
user_records:
type: array
items:
$ref: '#/components/schemas/UserAnalyticsRecord'
TeamAnalyticsRecord:
type: object
properties:
team:
$ref: '#/components/schemas/AnalyticsTeamInfo'
total_incidents:
type: integer
total_acknowledged:
type: integer
total_resolved:
type: integer
mtta_seconds:
type: number
format: float
mttr_seconds:
type: number
format: float
AnalyticsUserInfo:
type: object
properties:
full_name:
type: string
description: User's full name (first + last name).
username:
type: string
description: Username.
ServiceAnalyticsRecord:
type: object
properties:
team:
$ref: '#/components/schemas/AnalyticsTeamInfo'
service:
$ref: '#/components/schemas/AnalyticsServiceInfo'
total_incidents:
type: integer
total_acknowledged:
type: integer
total_resolved:
type: integer
mtta_seconds:
type: number
format: float
mttr_seconds:
type: number
format: float
TeamAnalyticsResponse:
type: object
properties:
all_teams:
$ref: '#/components/schemas/AnalyticsMetrics'
team_records:
type: array
items:
$ref: '#/components/schemas/TeamAnalyticsRecord'
IncidentStatsResponse:
type: object
description: Aggregate incident counts for the account and for the requesting user.
properties:
total_incidents:
type: integer
description: Total incidents matching filters.
total_triggered_incidents:
type: integer
description: Incidents with status = triggered (1).
total_acknowledged_incidents:
type: integer
description: Incidents with status = acknowledged (2).
total_resolved_incidents:
type: integer
description: Incidents with status = resolved (3).
user_total_incidents:
type: integer
description: Incidents assigned to the requesting user.
user_triggered_incidents:
type: integer
description: User's incidents with status = triggered.
user_acknowledged_incidents:
type: integer
description: User's incidents with status = acknowledged.
user_resolved_incidents:
type: integer
description: User's incidents with status = resolved.
UserAnalyticsRecord:
type: object
properties:
user:
$ref: '#/components/schemas/AnalyticsUserInfo'
total_incidents:
type: integer
total_acknowledged:
type: integer
total_resolved:
type: integer
mtta_seconds:
type: number
format: float
mttr_seconds:
type: number
format: float
ServiceAnalyticsResponse:
type: object
properties:
all_services:
$ref: '#/components/schemas/AnalyticsMetrics'
service_records:
type: array
items:
$ref: '#/components/schemas/ServiceAnalyticsRecord'
AnalyticsTeamInfo:
type: object
properties:
name:
type: string
description: Team name.
unique_id:
type: string
format: uuid
description: Team unique identifier.
AnalyticsRequestBody:
type: object
description: Common request body for all analytics endpoints. All fields are optional.
properties:
from_date:
type: string
format: date
description: Start date in YYYY-MM-DD format
example: '2025-09-24'
to_date:
type: string
format: date
description: End date in YYYY-MM-DD format
example: '2025-12-23'
team_ids:
type: array
items:
type: string
format: uuid
description: List of team unique_id UUIDs. Empty array means all accessible teams.
service_ids:
type: array
items:
type: string
format: uuid
description: List of service unique_id UUIDs.
user_ids:
type: array
items:
type: string
description: List of usernames. Use "Unassigned" to filter unassigned incidents.
priority_ids:
type: array
items:
type: string
format: uuid
description: List of team priority unique_id UUIDs.
sla_ids:
type: array
items:
type: string
format: uuid
description: List of SLA unique_id UUIDs.
escalation_policy_ids:
type: array
items:
type: string
format: uuid
description: List of escalation policy unique_id UUIDs.
tag_ids:
type: array
items:
type: string
format: uuid
description: List of team tag unique_id UUIDs.
urgency:
description: 0 for low, 1 for high.
example: '1'
child_incident:
type: string
description: Set to "exclude" to exclude merged child incidents. Any other value has no effect.
example: include
tta:
type: number
description: Time-to-acknowledge threshold in seconds. Requires tta_comparator.
tta_comparator:
type: string
enum:
- gt
- lt
description: Required if tta is set.
ttr:
type: number
description: Time-to-resolve threshold in seconds. Requires ttr_comparator. Must be >= tta if both are set.
ttr_comparator:
type: string
enum:
- gt
- lt
description: Required if ttr is set.
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: Token <api_key>