Returns a ranked leaderboard of operators in the current organization. Use `period` to limit the reporting window, `sortBy` to choose the metric used for ranking, and `limit` to cap the number of rows. Defaults are `period=30d`, `sortBy=handled`, and `limit=25`. Use `period=all` to include all historical conversations instead of a rolling window.
/api/operators/leaderboardOrganization API key supplied as Authorization: Bearer convor_sk_....
In: header
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
{
"period": "30d",
"sortBy": "handled",
"data": [
{
"rank": 1,
"operatorId": "550e8400-e29b-41d4-a716-446655440000",
"userId": "550e8400-e29b-41d4-a716-446655440001",
"displayName": "Alex Johnson",
"userEmail": "[email protected]",
"userName": "Alex Johnson",
"userImage": null,
"handled": 48,
"conversationsHandled": 48,
"closed": 36,
"resolutionRate": 0.75,
"avgResponseTime": "2m 14s",
"avgResponseSeconds": 134,
"csatScore": 4.6,
"activeConversations": 5
}
]
}{
"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/operators/leaderboard' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer convor_sk_...'const response = await fetch("https://api.convor.io/api/operators/leaderboard", {
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 operator statistics
Returns performance statistics for one operator in the current organization. An optional period query can limit the calculation to recent conversations such as 7d, 30d, or 90d.
Invite an operator to the organization
Invites a user into the current organization as an operator, admin, or viewer. Admin access is required. If the email already belongs to a user, a new membership is created; otherwise a new user, membership, and operator record are created. Access requires an active organization administrator session or an organization API key with the `operators:write` scope. API-key calls also require the automation API module. Data is isolated to the authenticated organization; identifiers from another organization or site are not disclosed.