> Documentation index for AI agents: https://docs.pagerduty.com/llms.txt

# Get aggregated metrics for all users

`POST https://api.pagerduty.com/analytics/metrics/users/all`

Provides aggregated metrics across all users within their account. This endpoint provides summary statistics about user activity and performance.

<!-- theme: info -->
> **Note:** Data availability reflects [pipeline processing cycles](https://support.pagerduty.com/main/docs/insights#:~:text=Data%20Update%20Schedule) and is generally within 24 hours under normal conditions.

Scoped OAuth requires: `analytics.write`

## Authorization

- **api_key** (apiKey) — `Authorization` header. The API Key with format `Token token=<API_KEY>`

## Header parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `Accept` | string | yes | The `Accept` header is used as a versioning header. Default: `application/vnd.pagerduty+json;version=2`. |

## Request body (`application/json`)

Parameters and filters to apply to the dataset.

| Field | Type | Required | Description |
|---|---|---|---|
| `filters` | object |  |  |
| `filters.created_at_start` | string (date-time) |  | The start of the date range to search. |
| `filters.created_at_end` | string (date-time) |  | The end of the date range to search. |
| `filters.team_ids` | array of string |  | An array of team IDs. Only users belonging to these teams will be included in results. |
| `filters.user_ids` | array of string |  | An array of user IDs. Only these users will be included in results. |
| `filters.role_ids` | array of string |  | An array of role IDs. Only users with these roles will be included in results. |
| `time_zone` | string |  | The time zone to use for the results and grouping. Must be in tzdata format. See list of accepted values [here](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). |
| `order` | string |  | The order in which the results were sorted; asc for ascending, desc for descending. One of: `asc`, `desc`. Default: `desc`. |
| `order_by` | string |  | The column that was used for ordering the results. Default: `user_id`. |
| `aggregate_unit` | string \| null |  | The time unit to aggregate metrics by. If no value is provided, the metrics will be aggregated for the entire period. One of: `day`, `week`, `month`. |
| `limit` | integer |  | The maximum number of results to return per page. The default (and maximum allowed value) is 1000. Default: `1000`. |
| `starting_after` | string \| null |  | A cursor used for pagination. Starting after cursor provides the next set of results in forward pagination order. |
| `ending_before` | string \| null |  | A cursor used for pagination. Ending before cursor provides the previous set of results in reverse pagination order. |

Example: Example Request

```json
{
  "filters": {
    "created_at_start": "2024-08-07T00:00:00-07:00",
    "created_at_end": "2025-08-05T23:59:59-07:00"
  },
  "time_zone": "America/Chicago"
}
```

## Response 200

Returns user metrics aggregated across the account

### `application/json`

| Field | Type | Required | Description |
|---|---|---|---|
| `data` | array of object |  |  |
| `data[].total_downloaded_mobile_app_count` | integer |  | The number of users who have downloaded the mobile app. |
| `data[].total_downloaded_mobile_app_percentage` | number (float) |  | The percentage of users who have downloaded the mobile app. |
| `data[].total_on_escalation_policy_count` | integer |  | The number of users who are on at least one escalation policy. |
| `data[].total_on_escalation_policy_percentage` | number (float) |  | The percentage of users who are on at least one escalation policy. |
| `data[].total_signed_up_count` | integer |  | The number of users who have signed up (completed onboarding). |
| `data[].total_signed_up_percentage` | number (float) |  | The percentage of users who have signed up. |
| `data[].total_user_count` | integer |  | The total number of users in the account that match the filters. |
| `data[].total_with_notification_methods_count` | integer |  | The number of users who have at least one notification method configured. |
| `data[].total_with_notification_methods_percentage` | number (float) |  | The percentage of users who have at least one notification method configured. |
| `filters` | object |  |  |
| `filters.created_at_start` | string (date-time) |  | The start of the date range used for filtering. |
| `filters.created_at_end` | string (date-time) |  | The end of the date range used for filtering. |
| `filters.team_ids` | array of string |  | The team IDs used for filtering. |
| `time_zone` | string |  | The time zone used for the results. |

Example: Example Response

```json
{
  "data": [
    {
      "total_downloaded_mobile_app_count": 0,
      "total_downloaded_mobile_app_percentage": 0,
      "total_on_escalation_policy_count": 0,
      "total_on_escalation_policy_percentage": 0,
      "total_signed_up_count": 14,
      "total_signed_up_percentage": 70,
      "total_user_count": 20,
      "total_with_notification_methods_count": 5,
      "total_with_notification_methods_percentage": 25
    }
  ],
  "filters": {
    "created_at_start": "2024-08-07T07:00:00Z",
    "created_at_end": "2025-08-06T06:59:59Z"
  },
  "time_zone": "America/Chicago"
}
```

## Response 400

Caller provided invalid arguments. Please review the response for error details. Retrying with the same arguments will *not* work.

### `application/json`

| Field | Type | Required | Description |
|---|---|---|---|
| `error` | object |  |  |
| `error.code` | integer |  | Read-only. |
| `error.message` | string |  | Error message string. Read-only. |
| `error.errors` | array of string |  | Read-only. |

## Response 429

Too many requests have been made, the rate limit has been reached.

### `application/json`

| Field | Type | Required | Description |
|---|---|---|---|
| `error` | object |  |  |
| `error.code` | integer |  | Read-only. |
| `error.message` | string |  | Error message string. Read-only. |
| `error.errors` | array of string |  | Read-only. |

## Developer Agreement

Your access to and use of the PagerDuty Developer Services is governed by the [PagerDuty Developer Agreement](https://docs.pagerduty.com/developer/pagerduty-developer-agreement).
