openapi: 3.2.0 info: title: Webex Cloud Calling Calling Metrics API version: 1.0.0 description: The Webex Cloud Calling APIs enable comprehensive management of cloud-based calling services, including user provisioning, device assignment, call routing, feature configuration, and number management. tags: - name: Calling Metrics description: Webex Calling call and media-quality metrics. paths: /v1/analytics/callQualityStats: get: summary: Webex Calling Call Quality Stats operationId: getCallQualityStats description: 'Returns aggregated Webex Calling call and media-quality statistics for the authenticated organization. A call or media session is classified as good quality when all available audio and video quality measurements meet their defined thresholds. Missing individual quality measurements do not cause the call or session to be classified as poor quality. You can query data for a time range of up to seven days within the previous 3 weeks. For older historical data, use the Webex Calling Media Quality dashboard or reports. For more information on Media Quality KPI definitions, click here. This operation requires a Pro Pack for Control Hub license. The access token must include the analytics:read_all scope and represent either a full administrator or read-only administrator. The organization is derived from the access token. The base URL for these APIs is **analytics.webexapis.com**, which does not work with the **Try It** feature.' tags: - Calling Metrics parameters: - name: from in: query required: false description: Inclusive UTC start time in yyyy-MM-ddTHH:mm:ssZ format. If omitted while to is provided, it is seven days before the effective to time. If both times are omitted, it is seven days before the current time. example: '2026-08-10T12:00:00Z' schema: type: string format: date-time minLength: 20 maxLength: 20 pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$ - name: to in: query required: false description: Exclusive UTC end time in yyyy-MM-ddTHH:mm:ssZ format. A value later than the current time is clamped to the current time. If omitted while from is provided, it is the earlier of seven days after from and the current time. If both times are omitted, it is the current time. example: '2026-08-16T12:00:00Z' schema: type: string format: date-time minLength: 20 maxLength: 20 pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$ - name: location in: query required: false description: Exact Webex Calling location name. Omit it or provide an empty value to include all locations. example: Headquarters schema: type: string minLength: 1 maxLength: 255 responses: '200': description: OK content: application/json: schema: type: object description: Webex Calling call-quality statistics. example: startTime: '2026-08-10T12:00:00Z' endTime: '2026-08-16T12:00:00Z' location: Headquarters metrics: totalCalls: 12500 totalCallsWithMedia: 12000 totalGoodQualityCallsWithMedia: 11400 totalMediaSessions: 24000 totalGoodMediaSessions: 22800 avgCallLegAudioJitter: 18.4 avgCallLegAudioLatency: 132.7 avgCallLegAudioPacketLoss: 0.8 required: - startTime - endTime - metrics properties: startTime: type: string format: date-time example: '2026-08-10T12:00:00Z' description: Start of the queried interval. endTime: type: string format: date-time example: '2026-08-16T12:00:00Z' description: End of the queried interval. location: type: - string - 'null' example: Headquarters description: Selected location, or null when all locations are included. metrics: type: object description: Call and media-quality statistics. example: totalCalls: 12500 totalCallsWithMedia: 12000 totalGoodQualityCallsWithMedia: 11400 totalMediaSessions: 24000 totalGoodMediaSessions: 22800 avgCallLegAudioJitter: 18.4 avgCallLegAudioLatency: 132.7 avgCallLegAudioPacketLoss: 0.8 required: - totalCalls - totalCallsWithMedia - totalGoodQualityCallsWithMedia - totalMediaSessions - totalGoodMediaSessions - avgCallLegAudioJitter - avgCallLegAudioLatency - avgCallLegAudioPacketLoss properties: totalCalls: type: integer format: int64 minimum: 0 example: 12500 description: Total calls. totalCallsWithMedia: type: integer format: int64 minimum: 0 example: 12000 description: Total calls with media. totalGoodQualityCallsWithMedia: type: integer format: int64 minimum: 0 example: 11400 description: Total good-quality calls with media. totalMediaSessions: type: integer format: int64 minimum: 0 example: 24000 description: Total media sessions. totalGoodMediaSessions: type: integer format: int64 minimum: 0 example: 22800 description: Total good-quality media sessions. avgCallLegAudioJitter: type: - number - 'null' format: double example: 18.4 description: Average call-leg audio jitter in milliseconds. avgCallLegAudioLatency: type: - number - 'null' format: double example: 132.7 description: Average call-leg audio latency in milliseconds. avgCallLegAudioPacketLoss: type: - number - 'null' format: double example: 0.8 description: Average call-leg audio packet loss percentage. example: startTime: '2026-08-10T12:00:00Z' endTime: '2026-08-16T12:00:00Z' location: Headquarters metrics: totalCalls: 12500 totalCallsWithMedia: 12000 totalGoodQualityCallsWithMedia: 11400 totalMediaSessions: 24000 totalGoodMediaSessions: 22800 avgCallLegAudioJitter: 18.4 avgCallLegAudioLatency: 132.7 avgCallLegAudioPacketLoss: 0.8 '400': description: 'Bad Request: The request was invalid or cannot be otherwise served. An accompanying error message will explain further.' '401': description: 'Unauthorized: Authentication credentials were missing or incorrect.' '403': description: 'Forbidden: The request is understood, but it has been refused or access is not allowed.' '404': description: 'Not Found: The URI requested is invalid or the resource requested, such as a user, does not exist. Also returned when the requested format is not supported by the requested method.' '405': description: 'Method Not Allowed: The request was made to a resource using an HTTP request method that is not supported.' '409': description: 'Conflict: The request could not be processed because it conflicts with some established rule of the system. For example, a person may not be added to a room more than once.' '410': description: 'Gone: The requested resource is no longer available.' '415': description: 'Unsupported Media Type: The request was made to a resource without specifying a media type or used a media type that is not supported.' '423': description: 'Locked: The requested resource is temporarily unavailable. A Retry-After header may be present that specifies how many seconds you need to wait before attempting the request again.' '428': description: 'Precondition Required: File(s) cannot be scanned for malware and need to be force downloaded.' '429': description: 'Too Many Requests: Too many requests have been sent in a given amount of time and the request has been rate limited. A Retry-After header should be present that specifies how many seconds you need to wait before a successful request can be made.' '500': description: 'Internal Server Error: Something went wrong on the server. If the issue persists, feel free to contact the [Webex Developer Support team](/explore/support).' '502': description: 'Bad Gateway: The server received an invalid response from an upstream server while processing the request. Try again later.' '503': description: 'Service Unavailable: Server is overloaded with requests. Try again later.' '504': description: 'Gateway Timeout: An upstream server failed to respond on time. If your query uses max parameter, please try to reduce it.' components: securitySchemes: bearer-key: type: http description: e.g. Bearer YOUR_AUTHORIZATION_TOKEN scheme: bearer bearerFormat: JWT oauth2: flows: authorizationCode: authorizationUrl: / scopes: {} tokenUrl: / type: oauth2 bearerAuth: type: http description: e.g. Bearer YOUR_AUTHORIZATION_TOKEN scheme: bearer bearerFormat: JWT