Instant
← All posts

Chime Reporting API

Instant Support

Overview

The Chime reporting API exposes the same metrics that power the built-in dashboards over plain HTTPS, so partners and customers can stream reporting data into Power BI, a data warehouse, or any homegrown analytics tool without having to open a browser and click Export CSV by hand.

This post walks through generating an API key, the available report routes, the supported query string parameters, and a few copy-paste-ready code samples.

Why per-user API keys?

Each key is a GUID scoped to a single Chime user account rather than a single tenant-wide secret. That trade-off buys three things:

  • ACL inheritance. Reports respect the same access control list as the underlying user, so the API returns only the queues that user is allowed to see.
  • Audit trail. Every API call is attributable to a person, which makes basic audit logging possible.
  • Targeted revocation.When someone leaves the team or rotates credentials, you regenerate one key — you don’t have to roll a global secret across every integration.

Creating an API key for a user

Open Admin › People, locate the user you want to expose the API to, and click the API key generator next to their profile. A new GUID is minted and bound to that user:

Chime admin People view with the API key generator opened on a user
Generating a new API key for an existing Chime user.

Re-clicking the generate button invalidates the previous GUID after a confirmation prompt — useful if a key has leaked or you simply want to rotate on a cadence:

Confirmation dialog warning that the existing API key will be invalidated
Regenerating a key invalidates the previous one immediately.

Viewing granted keys

All issued keys are listed under Admin › Settings › API Keys, alongside the user each one is bound to. That view is the right place to start when you’re auditing who has integration access:

Admin Settings tab showing the table of issued API keys
The API Keys table in Admin › Settings.

Report URLs

Every report is reachable at its own route under /Chime/Report/. The route names mirror the report names you see in the dashboard:

  • /Chime/Report/GetAvailableGlobalReports— tenant-wide reports
  • /Chime/Report/GetQueueBasicReports— per-queue basic reports
  • /Chime/Report/GetQueueAgentReports— agent efficiency reports
  • /Chime/Report/GetQueuePerformanceReports— queue performance
  • /Chime/Report/GetQueueTextAnalyticsReports — text analytics
  • /Chime/Report/GetQueueBotReports— bot performance
List of available report URL routes under /Chime/Report/
The full set of available report routes.

On build 3.1.578 and newer there is also a session-detail endpoint that returns a single chat by ID:

/Chime/Session/SessionDetails/{SessionID}

Query string parameters

All routes share the same set of optional query parameters for filtering the response window and the output format:

  • start— ISO-8601 timestamp for the start of the window
  • stop— ISO-8601 timestamp for the end of the window
  • csv — set to true to receive a CSV body instead of JSON
  • queueId— required on any per-queue report
  • zone— IANA timezone for the returned values (defaults to UTC)
Reference table of supported query string parameters
The shared query string contract.

Authorization header

The API key is sent as a bearer token in the Authorization header on every request:

Authorization: Bearer <your-api-key-guid>
Authorization header reference showing the Bearer token format
Bearer-token format used by every endpoint.

Code samples

The three snippets below all fetch the same report — an inbound-versus-answered CSV for queueId=1for the month of November — just from different runtimes.

cURL

curl --location --request GET \
  'https://example.com/Chime/Report/InboundVsAnsweredChats?queueId=1&start=2020-11-01T04:00:00.000Z&stop=2020-12-01T04:59:59.999Z&csv=true' \
  --header 'Authorization: Bearer b5c38d85-a042-4cef-8418-eb06752e346b'

jQuery

var settings = {
  url: "https://example.com/Chime/Report/InboundVsAnsweredChats?queueId=1&start=2020-11-01T04:00:00.000Z&stop=2020-12-01T04:59:59.999Z&csv=true",
  method: "GET",
  headers: {
    Authorization: "Bearer b5c38d85-a042-4cef-8418-eb06752e346b",
  },
};

$.ajax(settings).done(function (response) {
  console.log(response);
});

Node.js

const request = require("request");

const options = {
  method: "GET",
  url: "https://example.com/Chime/Report/InboundVsAnsweredChats?queueId=1&start=2020-11-01T04:00:00.000Z&stop=2020-12-01T04:59:59.999Z&csv=true",
  headers: {
    Authorization: "Bearer b5c38d85-a042-4cef-8418-eb06752e346b",
  },
};

request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});

Next steps

If you want to plug the API into a real BI tool, the companion post on accessing Chime reports with Power BI walks through wiring this same endpoint into a Power BI desktop workbook with a dynamic date range.

Tags

  • Chime
  • Reporting
  • API
  • Integration