curl --request POST \
--url https://api.livechatinc.com/v3.7/reports/chats/ranking \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"filters": {
"from": "2026-06-08T00:00:00-00:00",
"to": "2026-06-15T23:59:59-00:00"
}
}
'import requests
url = "https://api.livechatinc.com/v3.7/reports/chats/ranking"
payload = { "filters": {
"from": "2026-06-08T00:00:00-00:00",
"to": "2026-06-15T23:59:59-00:00"
} }
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({filters: {from: '2026-06-08T00:00:00-00:00', to: '2026-06-15T23:59:59-00:00'}})
};
fetch('https://api.livechatinc.com/v3.7/reports/chats/ranking', 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.livechatinc.com/v3.7/reports/chats/ranking",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'filters' => [
'from' => '2026-06-08T00:00:00-00:00',
'to' => '2026-06-15T23:59:59-00:00'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.livechatinc.com/v3.7/reports/chats/ranking"
payload := strings.NewReader("{\n \"filters\": {\n \"from\": \"2026-06-08T00:00:00-00:00\",\n \"to\": \"2026-06-15T23:59:59-00:00\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.livechatinc.com/v3.7/reports/chats/ranking")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"filters\": {\n \"from\": \"2026-06-08T00:00:00-00:00\",\n \"to\": \"2026-06-15T23:59:59-00:00\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.livechatinc.com/v3.7/reports/chats/ranking")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"filters\": {\n \"from\": \"2026-06-08T00:00:00-00:00\",\n \"to\": \"2026-06-15T23:59:59-00:00\"\n }\n}"
response = http.request(request)
puts response.read_body{
"name": "ranking-report",
"records": {
"smith@example.com": {
"total": 2,
"good": 0,
"bad": 2,
"score": 0.11473482425785904
},
"agent@example.com": {
"total": 19,
"good": 13,
"bad": 6,
"score": 0.42326713031463276
}
}
}Ranking
Returns the ratio of good to bad ratings for each operator.
The distribution parameter has no effect on the response of this method.
curl --request POST \
--url https://api.livechatinc.com/v3.7/reports/chats/ranking \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"filters": {
"from": "2026-06-08T00:00:00-00:00",
"to": "2026-06-15T23:59:59-00:00"
}
}
'import requests
url = "https://api.livechatinc.com/v3.7/reports/chats/ranking"
payload = { "filters": {
"from": "2026-06-08T00:00:00-00:00",
"to": "2026-06-15T23:59:59-00:00"
} }
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({filters: {from: '2026-06-08T00:00:00-00:00', to: '2026-06-15T23:59:59-00:00'}})
};
fetch('https://api.livechatinc.com/v3.7/reports/chats/ranking', 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.livechatinc.com/v3.7/reports/chats/ranking",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'filters' => [
'from' => '2026-06-08T00:00:00-00:00',
'to' => '2026-06-15T23:59:59-00:00'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.livechatinc.com/v3.7/reports/chats/ranking"
payload := strings.NewReader("{\n \"filters\": {\n \"from\": \"2026-06-08T00:00:00-00:00\",\n \"to\": \"2026-06-15T23:59:59-00:00\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.livechatinc.com/v3.7/reports/chats/ranking")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"filters\": {\n \"from\": \"2026-06-08T00:00:00-00:00\",\n \"to\": \"2026-06-15T23:59:59-00:00\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.livechatinc.com/v3.7/reports/chats/ranking")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"filters\": {\n \"from\": \"2026-06-08T00:00:00-00:00\",\n \"to\": \"2026-06-15T23:59:59-00:00\"\n }\n}"
response = http.request(request)
puts response.read_body{
"name": "ranking-report",
"records": {
"smith@example.com": {
"total": 2,
"good": 0,
"bad": 2,
"score": 0.11473482425785904
},
"agent@example.com": {
"total": 19,
"good": 13,
"bad": 6,
"score": 0.42326713031463276
}
}
}reports_readAuthorizations
Use your account ID as the username and your personal access token (PAT) as the password, or pass a Base64-encoded value directly in the Authorization header. For more information, see the personal access tokens guide.
Body
The time distribution of results.
hour, day, day-hours, month, year The IANA Time Zone identifier (for example, America/Phoenix). By default, the timezone is taken from the request. If not provided, it's taken from the agent's timezone. When the agent's timezone cannot be determined, filters.from is used to derive it.
Filters for chats reports. If none provided, the report spans the last seven days. If filters are provided, they must contain exactly one pair of time-based filters (from/to, greetings.from/to, or surveys.from/to).
Show child attributes
Show child attributes
Response
OK.
Contains agent objects keyed by agent identifier.
Show child attributes
Show child attributes
Was this page helpful?