curl --request GET \
--url https://{your-subdomain}.neetodesk.com/api/external/v2/reports/agents \
--header 'X-Api-Key: <x-api-key>'import requests
url = "https://{your-subdomain}.neetodesk.com/api/external/v2/reports/agents"
headers = {"X-Api-Key": "<x-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Api-Key': '<x-api-key>'}};
fetch('https://{your-subdomain}.neetodesk.com/api/external/v2/reports/agents', 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://{your-subdomain}.neetodesk.com/api/external/v2/reports/agents",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Api-Key: <x-api-key>"
],
]);
$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://{your-subdomain}.neetodesk.com/api/external/v2/reports/agents"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Api-Key", "<x-api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://{your-subdomain}.neetodesk.com/api/external/v2/reports/agents")
.header("X-Api-Key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{your-subdomain}.neetodesk.com/api/external/v2/reports/agents")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Api-Key"] = '<x-api-key>'
response = http.request(request)
puts response.read_body{
"members": [
{
"id": "aaaabbbb-cccc-dddd-eeee-ffff00001111",
"name": "Oliver Smith",
"first_response_time": {
"present": 123,
"previous": 123,
"change_percentage": 123
},
"resolution_time": {
"present": 123,
"previous": 123,
"change_percentage": 123
},
"assigned": {
"present": 123,
"previous": 123,
"change_percentage": 123
},
"closed": {
"present": 123,
"previous": 123,
"change_percentage": 123
}
}
],
"summary": {},
"total_count": 5
}Get agent performance report
This API retrieves performance metrics for all agents, including average response times, resolution times, and ticket counts with comparisons to the previous period.
curl --request GET \
--url https://{your-subdomain}.neetodesk.com/api/external/v2/reports/agents \
--header 'X-Api-Key: <x-api-key>'import requests
url = "https://{your-subdomain}.neetodesk.com/api/external/v2/reports/agents"
headers = {"X-Api-Key": "<x-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Api-Key': '<x-api-key>'}};
fetch('https://{your-subdomain}.neetodesk.com/api/external/v2/reports/agents', 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://{your-subdomain}.neetodesk.com/api/external/v2/reports/agents",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Api-Key: <x-api-key>"
],
]);
$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://{your-subdomain}.neetodesk.com/api/external/v2/reports/agents"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Api-Key", "<x-api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://{your-subdomain}.neetodesk.com/api/external/v2/reports/agents")
.header("X-Api-Key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{your-subdomain}.neetodesk.com/api/external/v2/reports/agents")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Api-Key"] = '<x-api-key>'
response = http.request(request)
puts response.read_body{
"members": [
{
"id": "aaaabbbb-cccc-dddd-eeee-ffff00001111",
"name": "Oliver Smith",
"first_response_time": {
"present": 123,
"previous": 123,
"change_percentage": 123
},
"resolution_time": {
"present": 123,
"previous": 123,
"change_percentage": 123
},
"assigned": {
"present": 123,
"previous": 123,
"change_percentage": 123
},
"closed": {
"present": 123,
"previous": 123,
"change_percentage": 123
}
}
],
"summary": {},
"total_count": 5
}{your-subdomain} with your workspace’s subdomain. Learn how to find your subdomain in Workspace subdomain.
Headers
Use the X-Api-Key header to provide your workspace API key. Refer to Authentication for more information.
Query Parameters
Retrieve paginated results by specifying the desired page number. If this parameter is absent, all results will be returned.
Time range for the report. Use custom with start_date and end_date for custom date ranges.
last_7_days, last_30_days, last_24_hours, this_week, last_week, this_month, last_month, this_quarter, last_quarter, this_year, last_year, all_time, custom Start date for custom date range (YYYY-MM-DD format). Required when range_type is custom.
"2025-10-01"
End date for custom date range (YYYY-MM-DD format). Required when range_type is custom.
"2025-10-31"
Response
OK - Request succeeded
Hide child attributes
Hide child attributes
"aaaabbbb-cccc-dddd-eeee-ffff00001111"
"Oliver Smith"
Aggregated summary metrics for all agents, containing first_response_time, resolution_time, assigned, and closed objects, each with present, previous, and change_percentage values.
5