---
title: Read Active Identity Counts by Date Range
description: Use the GET {{apiPath}}/v1/environments/{{envID}}/metrics/activeIdentityCounts request to return active identity counts over a specified time period. You need to specify a SCIM filtering expression (URL-encoded) that designates a start date. The end date is set automatically to the current date, and cannot be set manually in the request.
component: pingone-api
page_id: pingone-api:platform:active-identity-counts/read-active-identity-counts-by-date-range
canonical_url: https://developer.pingidentity.com/pingone-api/platform/active-identity-counts/read-active-identity-counts-by-date-range.html
section_ids:
  response-codes: Response codes
  headers: Headers
  example-request: Example Request
  example-response: Example Response
---

# Read Active Identity Counts by Date Range

##

```none
GET {{apiPath}}/v1/environments/{{envID}}/metrics/activeIdentityCounts?filter=startDate%20ge%20%222024-05-01T19:00:00Z%22&limit=10&order=-startDate
```

Use the `GET {{apiPath}}/v1/environments/{{envID}}/metrics/activeIdentityCounts` request to return active identity counts over a specified time period. You need to specify a SCIM filtering expression (URL-encoded) that designates a start date. The end date is set automatically to the current date, and cannot be set manually in the request.

|   |                                                                                                                                                                                |
| - | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|   | Currently, the active identity count does not return product-specific counts (such as, for PingOne SSO, MFA, or Protect), nor does it count active users when DaVinci is used. |

For more information about SCIM syntax and operators, paging, ordering, and limiting collections, refer to [Conventions](../../foundations/conventions.html).

> **Collapse: Query parameters**
>
> | Parameter | Description                                                                                                                                                                                                                                                               |
> | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
> | `filter`  | **Required.** The date and time active identity count data collection starts (ISO 8601 format). You must apply the SCIM filter `ge` (greater than or equal to) to this parameter. Refer to the preceding example. **Note:** Collection ends on the current date and time. |
> | `limit`   | Indicates the number of counts to be returned per page. This value can be 1-100, inclusive.                                                                                                                                                                               |
> | `order`   | Indicates the sort order of the returned counts. This can be: `startDate` (ascending) or `-startDate` (descending).                                                                                                                                                       |

### Response codes

| Code | Message                                                               |
| ---- | --------------------------------------------------------------------- |
| 200  | Successful operation.                                                 |
| 400  | The request could not be completed.                                   |
| 401  | You do not have access to this resource.                              |
| 403  | You do not have permissions or are not licensed to make this request. |
| 404  | The requested resource was not found.                                 |
| 500  | Internal server error.                                                |

### Headers

Authorization      Bearer {{accessToken}}

##

### Example Request

* cURL

* C#

* Go

* HTTP

* Java

* jQuery

* NodeJS

* Python

* PHP

* Ruby

* Swift

```shell
curl --location --globoff '{{apiPath}}/v1/environments/{{envID}}/metrics/activeIdentityCounts?filter=startDate%20ge%20%222024-05-01T19%3A00%3A00Z%22&limit=10&order=-startDate' \
--header 'Authorization: Bearer {{accessToken}}'
```

```csharp
var options = new RestClientOptions("{{apiPath}}/v1/environments/{{envID}}/metrics/activeIdentityCounts?filter=startDate%20ge%20%222024-05-01T19:00:00Z%22&limit=10&order=-startDate")
{
  MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("", Method.Get);
request.AddHeader("Authorization", "Bearer {{accessToken}}");
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);
```

```golang
package main

import (
  "fmt"
  "net/http"
  "io"
)

func main() {

  url := "{{apiPath}}/v1/environments/{{envID}}/metrics/activeIdentityCounts?filter=startDate%20ge%20%222024-05-01T19%3A00%3A00Z%22&limit=10&order=-startDate"
  method := "GET"

  client := &http.Client {
  }
  req, err := http.NewRequest(method, url, nil)

  if err != nil {
    fmt.Println(err)
    return
  }
  req.Header.Add("Authorization", "Bearer {{accessToken}}")

  res, err := client.Do(req)
  if err != nil {
    fmt.Println(err)
    return
  }
  defer res.Body.Close()

  body, err := io.ReadAll(res.Body)
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Println(string(body))
}
```

```http
GET /v1/environments/{{envID}}/metrics/activeIdentityCounts?filter=startDate%20ge%20%222024-05-01T19:00:00Z%22&limit=10&order=-startDate HTTP/1.1
Host: {{apiPath}}
Authorization: Bearer {{accessToken}}
```

```java
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("{{apiPath}}/v1/environments/{{envID}}/metrics/activeIdentityCounts?filter=startDate%20ge%20%222024-05-01T19:00:00Z%22&limit=10&order=-startDate")
  .method("GET", body)
  .addHeader("Authorization", "Bearer {{accessToken}}")
  .build();
Response response = client.newCall(request).execute();
```

```javascript
var settings = {
  "url": "{{apiPath}}/v1/environments/{{envID}}/metrics/activeIdentityCounts?filter=startDate%20ge%20%222024-05-01T19:00:00Z%22&limit=10&order=-startDate",
  "method": "GET",
  "timeout": 0,
  "headers": {
    "Authorization": "Bearer {{accessToken}}"
  },
};

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

```javascript
var request = require('request');
var options = {
  'method': 'GET',
  'url': '{{apiPath}}/v1/environments/{{envID}}/metrics/activeIdentityCounts?filter=startDate%20ge%20%222024-05-01T19:00:00Z%22&limit=10&order=-startDate',
  'headers': {
    'Authorization': 'Bearer {{accessToken}}'
  }
};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});
```

```python
import requests

url = "{{apiPath}}/v1/environments/{{envID}}/metrics/activeIdentityCounts?filter=startDate%20ge%20%222024-05-01T19:00:00Z%22&limit=10&order=-startDate"

payload = {}
headers = {
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
```

```php
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('{{apiPath}}/v1/environments/{{envID}}/metrics/activeIdentityCounts?filter=startDate%20ge%20%222024-05-01T19:00:00Z%22&limit=10&order=-startDate');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setHeader(array(
  'Authorization' => 'Bearer {{accessToken}}'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
```

```ruby
require "uri"
require "net/http"

url = URI("{{apiPath}}/v1/environments/{{envID}}/metrics/activeIdentityCounts?filter=startDate%20ge%20%222024-05-01T19:00:00Z%22&limit=10&order=-startDate")

http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer {{accessToken}}"

response = http.request(request)
puts response.read_body
```

```swift
var request = URLRequest(url: URL(string: "{{apiPath}}/v1/environments/{{envID}}/metrics/activeIdentityCounts?filter=startDate%20ge%20%222024-05-01T19%3A00%3A00Z%22&limit=10&order=-startDate")!,timeoutInterval: Double.infinity)
request.addValue("Bearer {{accessToken}}", forHTTPHeaderField: "Authorization")

request.httpMethod = "GET"

let task = URLSession.shared.dataTask(with: request) { data, response, error in
  guard let data = data else {
    print(String(describing: error))
    return
  }
  print(String(data: data, encoding: .utf8)!)
}

task.resume()
```

### Example Response

200 OK

```json
{
    "_links": {
        "next": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/metrics/activeIdentityCounts?cursor=ewogICJpbml0aWFsU3RhcnREYXRlIiA6ICIyMDI0LTA1LTAxVDAwOjAwOjAwWiIsCiAgInBhZ2VTdGFydERhdGUiIDogIjIwMjUtMDQtMThUMDA6MDA6MDBaIiwKICAic2FtcGxlUGVyaW9kIiA6ICJEQVkiLAogICJpbml0aWFsTGltaXQiIDogMTAsCiAgImxpbWl0IiA6IDEwLAogICJkZXNjZW5kaW5nIiA6IHRydWUKfQ%3D%3D"
        },
        "self": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/metrics/activeIdentityCounts?filter=startDate%20ge%20%222024-05-01T19%3A00%3A00Z%22&limit=10&order=-startDate"
        }
    },
    "_embedded": {
        "activeIdentityCounts": [
            {
                "_links": {
                    "environment": {
                        "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
                    }
                },
                "value": 0,
                "startDate": "2025-05-07T00:00:00Z",
                "endDate": "2025-05-07T23:59:59.999Z"
            },
            {
                "_links": {
                    "environment": {
                        "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
                    }
                },
                "value": 0,
                "startDate": "2025-05-06T00:00:00Z",
                "endDate": "2025-05-06T23:59:59.999Z"
            },
            {
                "_links": {
                    "environment": {
                        "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
                    }
                },
                "value": 0,
                "startDate": "2025-05-05T00:00:00Z",
                "endDate": "2025-05-05T23:59:59.999Z"
            },
            {
                "_links": {
                    "environment": {
                        "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
                    }
                },
                "value": 0,
                "startDate": "2025-05-04T00:00:00Z",
                "endDate": "2025-05-04T23:59:59.999Z"
            },
            {
                "_links": {
                    "environment": {
                        "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
                    }
                },
                "value": 0,
                "startDate": "2025-05-03T00:00:00Z",
                "endDate": "2025-05-03T23:59:59.999Z"
            },
            {
                "_links": {
                    "environment": {
                        "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
                    }
                },
                "value": 0,
                "startDate": "2025-05-02T00:00:00Z",
                "endDate": "2025-05-02T23:59:59.999Z"
            },
            {
                "_links": {
                    "environment": {
                        "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
                    }
                },
                "value": 0,
                "startDate": "2025-05-01T00:00:00Z",
                "endDate": "2025-05-01T23:59:59.999Z"
            },
            {
                "_links": {
                    "environment": {
                        "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
                    }
                },
                "value": 0,
                "startDate": "2025-04-30T00:00:00Z",
                "endDate": "2025-04-30T23:59:59.999Z"
            },
            {
                "_links": {
                    "environment": {
                        "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
                    }
                },
                "value": 0,
                "startDate": "2025-04-29T00:00:00Z",
                "endDate": "2025-04-29T23:59:59.999Z"
            },
            {
                "_links": {
                    "environment": {
                        "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
                    }
                },
                "value": 0,
                "startDate": "2025-04-28T00:00:00Z",
                "endDate": "2025-04-28T23:59:59.999Z"
            }
        ]
    },
    "count": 372,
    "size": 10
}
```
