curl --request GET \
--url https://api.onlyx.ai/v1/stats/overview \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.onlyx.ai/v1/stats/overview"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.onlyx.ai/v1/stats/overview', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"aiShare": 0.944,
"conversations": {
"active": 1204,
"answered": 1122
},
"creators": [
{
"ai": 8790,
"answered": 1122,
"creatorId": "cre_8f2c1a9b0d7e4c3f2a1b",
"medianReplySeconds": 94,
"messagesIn": 8420,
"messagesOut": 9315,
"name": "Mia Rose",
"team": 525,
"unread": 37
}
],
"daily": [
{
"date": "2026-09-26",
"messagesIn": 1320,
"messagesOut": 1488,
"newFans": 41
}
],
"days": 7,
"end": "2026-09-26",
"fans": {
"new": 263,
"total": 28410,
"unknownStart": 40
},
"generatedAt": "2026-09-26T13:52:40.000Z",
"hourly": [
{
"hour": 21,
"messagesIn": 702,
"messagesOut": 760
}
],
"inbox": {
"handoffs": 9,
"unread": 37
},
"messages": {
"ai": 8790,
"in": 8420,
"out": 9315,
"team": 525
},
"replyTime": {
"medianSeconds": 94,
"p90Seconds": 402,
"repliedTo": 6230,
"slowReplies": 611
},
"start": "2026-09-20",
"timezone": "Europe/London"
}Get the overview report
Returns the dashboard’s activity report for a window: active and answered conversations, messages in and out, how many the AI and your team wrote, reply times, new fans, the inbox right now, and daily, hourly and per-creator breakdowns. It is expensive, so it is never computed while you wait: if a copy is cached (at most about five minutes old — see generatedAt) you get 200 with the report; if not, you get 202 with {"status": "warming", "retryAfterSeconds": N} and a Retry-After header while OnlyX prepares it in the background — ask again after that many seconds. One report is prepared at a time per workspace, so asking more often does not make it faster. Limited to 20 requests per minute per credential across all /stats endpoints.
Scope: requires stats:read.
Rate limits: 20 requests to /stats endpoints per 60 seconds per credential — on top of the general limit of 120 requests per 60 seconds per credential.
curl --request GET \
--url https://api.onlyx.ai/v1/stats/overview \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.onlyx.ai/v1/stats/overview"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.onlyx.ai/v1/stats/overview', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"aiShare": 0.944,
"conversations": {
"active": 1204,
"answered": 1122
},
"creators": [
{
"ai": 8790,
"answered": 1122,
"creatorId": "cre_8f2c1a9b0d7e4c3f2a1b",
"medianReplySeconds": 94,
"messagesIn": 8420,
"messagesOut": 9315,
"name": "Mia Rose",
"team": 525,
"unread": 37
}
],
"daily": [
{
"date": "2026-09-26",
"messagesIn": 1320,
"messagesOut": 1488,
"newFans": 41
}
],
"days": 7,
"end": "2026-09-26",
"fans": {
"new": 263,
"total": 28410,
"unknownStart": 40
},
"generatedAt": "2026-09-26T13:52:40.000Z",
"hourly": [
{
"hour": 21,
"messagesIn": 702,
"messagesOut": 760
}
],
"inbox": {
"handoffs": 9,
"unread": 37
},
"messages": {
"ai": 8790,
"in": 8420,
"out": 9315,
"team": 525
},
"replyTime": {
"medianSeconds": 94,
"p90Seconds": 402,
"repliedTo": 6230,
"slowReplies": 611
},
"start": "2026-09-20",
"timezone": "Europe/London"
}Authorizations
An API key (onx_sk_…) created in OnlyX under Settings → API & MCP, or an OAuth access token (onx_at_…) issued to a connected app. Send it as Authorization: Bearer <credential>. API keys may also be sent as X-API-Key: <key>.
Query Parameters
Only this creator (cre_…). Without it, every creator the credential can see. A creator the credential cannot see is 404 CREATOR_NOT_FOUND, never an empty report.
1 - 64The last N calendar days including today (workspace time zone), 1 to 366. Ignored when start or end is sent.
1 <= x <= 366First day of the window (YYYY-MM-DD, workspace time zone), included.
Last day of the window (YYYY-MM-DD), included. The window never extends past today and keeps at most its latest 366 days.
Response
The cached activity report for the window.
The dashboard's activity report for a window, served from cache. New fields may be added.
Share of delivered messages the AI wrote, 0 to 1. null when nothing was sent.
Show child attributes
Show child attributes
Per creator.
Show child attributes
Show child attributes
One entry per day of the window, oldest first.
Show child attributes
Show child attributes
Days in the window.
Last day of the window, included.
Show child attributes
Show child attributes
When this cached report was computed (UTC). It may be up to about five minutes old.
Messages by hour of day over the whole window.
Show child attributes
Show child attributes
The inbox right now (not windowed).
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
First day of the window, included.