Returns how many conversations in the selected range were treated as abandoned versus handled. A conversation counts as abandoned when it never received an operator or AI reply and was either closed unresolved or left open past the timeout threshold. The current timeout threshold is 24 hours. Authenticate with an organization API key sent in `X-API-Key` or as a Bearer token and carrying the exact `analytics:read` scope. API-key access also requires the Automation & API module (`automation_api`). Authorized dashboard sessions remain supported where the route already permits them. The request is isolated to the authenticated organization. Resource and site/project identifiers must belong to that organization; out-of-scope identifiers are not disclosed. 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. Retry behavior: This read-only operation is safe to retry.
/api/analytics/abandoned-rateOrganization 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
{
"data": {
"total": 120,
"abandoned": 9,
"abandonedRate": 8
}
}{
"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/abandoned-rate?format=json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer convor_sk_...'const response = await fetch("https://api.convor.io/api/analytics/abandoned-rate?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?
Export analytics data as CSV or JSON
Creates an organization analytics export for selected metric sections. JSON and CSV are produced synchronously with `200`; PDF is queued and returns `202` with a job identifier and polling URL. Authenticate with an organization API key sent in `X-API-Key` or as a Bearer token and carrying the exact `analytics:write` scope. API-key access also requires the Automation & API module (`automation_api`). Authorized dashboard sessions remain supported where the route already permits them. The request is isolated to the authenticated organization. Resource and site/project identifiers must belong to that organization; out-of-scope identifiers are not disclosed. `range` defaults to `30d`. A custom interval requires both `dateFrom` and `dateTo`; those boundaries override `range` and are applied to the export queries. CSV and PDF require analytics export plan access. A repeated PDF request creates another queue job, so retain the returned `jobId` and poll it instead of retrying after an ambiguous success. Retry behavior: This operation is not idempotent. After an ambiguous timeout, read the resource state before retrying to avoid duplicate work, messages, files, bookings, exports, or events.
Get AI metrics including handled count and handoff rate
Returns AI support performance for the selected date range. By default the route uses the last 30 days. The response combines AI message volume, AI-versus-human resolution counts, handoff and deflection rates, CSAT for closed AI conversations, and average first-response times for AI and human replies. Authenticate with an organization API key sent in `X-API-Key` or as a Bearer token and carrying the exact `analytics:read` scope. API-key access also requires the Automation & API module (`automation_api`). Authorized dashboard sessions remain supported where the route already permits them. The request is isolated to the authenticated organization. Resource and site/project identifiers must belong to that organization; out-of-scope identifiers are not disclosed. 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. Retry behavior: This read-only operation is safe to retry.