Analytics overview
/v1/analytics/overviewThe figures on the dashboard's analytics page for the last days days,
counted in the organization's reporting timezone: totals, the same
totals for the period before, the funnel from seeing the assistant to
adding to cart, a daily series and breakdowns.
Freshness
The figures are read from daily rollups the server builds through the
day, not from raw events, so today's numbers trail by up to a few
minutes. coverage says how many of the days have been built; a day
not built yet appears in series with missing: true, which is not
the same as a day with no traffic.
Query parameters
1How many days, ending today.
Response
The timezone the days are counted in.
The number of days.
The first day, YYYY-MM-DD.
The last day, today, YYYY-MM-DD.
Totals for the range, grouped: audience, engagement, commerce, catalogue, health and integrity. A rate is null when what it divides by is zero.
The same totals for the equally long period just before, for comparison.
From seeing the assistant to Stylor adding to cart. rate is against the first step.
The event counted.
The step's name.
How many.
Count over the first step's count.
How strongly the step is verified; lower is stronger.
One entry per day, oldest first.
YYYY-MM-DD.
The day has not been built yet; its counts are not zeros.
Sessions.
Answers the assistant gave.
Searches.
Searches that found nothing.
Products Stylor added to cart.
Product clicks.
Top values for cartByArticleFamily, closedByReason, messagesByInput, requestsByRoute and searchesByDataset.
How much of the range has been built.
Days in the range.
Days built so far.
When a day in the range was last built.
Errors
20Every error is JSON with a single error string unless noted. Match on the status code; the message is for humans.
days must be one of 7, 30, 90.days is something else.
curl -X GET "https://stylor.ai/api/v1/analytics/overview" \
-H "Authorization: Bearer $STYLOR_API_KEY"{
"timezone": "America/Denver",
"range": 7,
"startDay": "2026-09-28",
"endDay": "2026-10-04",
"totals": {
"engagement": {
"widgetLoads": 18240,
"widgetOpens": 1312,
"openRate": 0.0719,
"messages": 2210
}
},
"previous": {
"engagement": {
"widgetLoads": 16980,
"widgetOpens": 1180,
"openRate": 0.0695,
"messages": 1984
}
},
"funnel": [
{
"key": "widget.loaded",
"label": "Saw the assistant",
"count": 18240,
"rate": 1,
"tier": 1
}
],
"series": [
{
"day": "2026-09-28",
"missing": false,
"sessions": 2410,
"turns": 301,
"searches": 512,
"emptySearches": 14,
"cartAdds": 22,
"productClicks": 188
}
],
"breakdowns": {
"searchesByDataset": []
},
"coverage": {
"daysExpected": 7,
"daysBuilt": 7,
"lastComputedAt": "2026-10-04T18:15:00.000Z"
}
}