Returns average CSAT ratings grouped by first-response-time buckets for rated conversations in the selected range.
/api/analytics/csat-by-frtReturns average CSAT ratings grouped by first-response-time buckets for rated conversations in the selected range. Buckets cover fast replies, slower replies, and an unanswered bucket for conversations that never received an operator or AI response. When a bucket has no survey responses, avgRating is null and count is 0. The range preset defaults to 30d. To use a custom range, supply both start and end as ISO 8601 datetimes with offsets; supplying only one boundary is rejected. Explicit boundaries override the preset. Date buckets and comparisons are evaluated as absolute instants and aggregated in UTC. Empty periods return the route's documented zero or empty collection shape rather than data from another organization. Where the route exposes format=csv, CSV is a downloadable text/csv response and may require a plan with analytics export access; JSON remains the default.
pages.docs.apiRequirements.bearerApiKey pages.docs.apiRequirements.or pages.docs.apiRequirements.apiKeyHeader.analytics:readautomation_api)Range. Allowed values: 7d, 30d, 90d. Supplied in the query.
Start accepted when performing this operation. Supplied in the query.
End accepted when performing this operation. Supplied in the query.
Format. Allowed values: json, csv. Supplied in the query.
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
{
"buckets": [
{
"bucket": "<1m",
"avgRating": 2.9,
"count": 14
},
{
"bucket": "1-5m",
"avgRating": 2.7,
"count": 26
},
{
"bucket": "5-15m",
"avgRating": 2.4,
"count": 18
},
{
"bucket": "15-60m",
"avgRating": 2.1,
"count": 9
},
{
"bucket": ">60m",
"avgRating": 1.8,
"count": 3
},
{
"bucket": "unanswered",
"avgRating": null,
"count": 0
}
]
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}curl --request GET \
'https://api.convor.io/api/analytics/csat-by-frt?format=json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer convor_sk_...'const response = await fetch("https://api.convor.io/api/analytics/csat-by-frt?format=json", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": "Bearer convor_sk_..."
},
});
const contentType = response.headers.get("content-type") ?? "";
const data = response.status === 204
? null
: contentType.includes("json")
? await response.json()
: contentType.startsWith("text/")
? await response.text()
: await response.blob();
if (!response.ok) {
const message = typeof data === "object" && data !== null
&& "error" in data && typeof data.error === "object"
&& data.error !== null && "message" in data.error
? String(data.error.message)
: "Convor API request failed (" + response.status + ")";
throw new Error(message);
}
console.log(data);Was this page helpful?
Get analytics overview with key metrics
Returns the top-level analytics overview for the selected range, including total conversations, active conversations, average response time, and CSAT score with change indicators.
Get average first-response-time and SLA-breach rate
Calculates the time from the first visitor message to the first operator reply for conversations in the selected range.