curl --request GET \
--url https://api.wirespeed.co/v1/directory/stats \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.wirespeed.co/v1/directory/stats"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.wirespeed.co/v1/directory/stats', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.wirespeed.co/v1/directory/stats",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.wirespeed.co/v1/directory/stats"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.wirespeed.co/v1/directory/stats")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.wirespeed.co/v1/directory/stats")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"totalCount": 123,
"containedCount": 123,
"enabledCount": 123,
"disabledCount": 123,
"smsEnrollmentEnrolledCount": 123,
"smsEnrollmentPendingCount": 123,
"smsEnrollmentMaxAttemptsCount": 123,
"smsEnrollmentOptedOutCount": 123,
"smsEnrollmentNotInvitedCount": 123,
"userTypes": [
{
"type": "VIP",
"count": 123
}
],
"userGroups": [
{
"groupId": "<string>",
"name": "<string>",
"color": "gray",
"count": 123
}
],
"integrations": [
{
"integrationId": "<string>",
"platform": "acronis",
"count": 123
}
]
}Get directory user statistics
curl --request GET \
--url https://api.wirespeed.co/v1/directory/stats \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.wirespeed.co/v1/directory/stats"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.wirespeed.co/v1/directory/stats', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.wirespeed.co/v1/directory/stats",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.wirespeed.co/v1/directory/stats"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.wirespeed.co/v1/directory/stats")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.wirespeed.co/v1/directory/stats")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"totalCount": 123,
"containedCount": 123,
"enabledCount": 123,
"disabledCount": 123,
"smsEnrollmentEnrolledCount": 123,
"smsEnrollmentPendingCount": 123,
"smsEnrollmentMaxAttemptsCount": 123,
"smsEnrollmentOptedOutCount": 123,
"smsEnrollmentNotInvitedCount": 123,
"userTypes": [
{
"type": "VIP",
"count": 123
}
],
"userGroups": [
{
"groupId": "<string>",
"name": "<string>",
"color": "gray",
"count": 123
}
],
"integrations": [
{
"integrationId": "<string>",
"platform": "acronis",
"count": 123
}
]
}Authorizations
Team API key sent as a Bearer token. Create a key in Wirespeed under Settings → Team. See https://docs.wirespeed.co/api-reference/authentication.
Query Parameters
Start date (inclusive, ISO8601 string)
End date (inclusive, ISO8601 string)
Service-provider only: narrow stats to this tenant id (must be in the caller's allowed team list). When omitted, stats include all teams in scope (same as directory search without teamId).
When true, stats count only canonical representative rows (canonical_id IS NULL)
When true together with dedupeCanonicalRoots, stats include only canonical roots that have at least one merged duplicate from another source
Response
User statistics including counts by type, status, and source
Total number of managed users
Number of contained users
Number of enabled users
Number of disabled users
Managed users enrolled in SMS (consent received), excluding NHI memberships
Managed users with a pending SMS invite (1-2 attempts), excluding NHI memberships
Managed users who reached the SMS invite attempt limit, excluding NHI memberships
Managed users who opted out of SMS enrollment, excluding NHI memberships
Managed users who have not been sent an SMS invite, excluding NHI memberships
User counts by group. Groups are non-exclusive; a user can appear in multiple types. "Other" counts users with none of the tracked groups.
Show child attributes
Show child attributes
Top groups by user count (up to 4), plus an "Other" catch-all for the remainder. Grouped by actual group ID so custom groups appear alongside system groups.
Show child attributes
Show child attributes
User counts by integration source
Show child attributes
Show child attributes

