API

Get feedback analytics

GET/api/crm/v2/feedback_analyticsv2
operationId: feedbackAnalytics.default

Returns summary tiles and a feedback chart for the specified period. Each point represents one hour in UTC; only non-empty points are returned. The interface automatically converts time to the user's timezone and aggregates hours into days. The default period is today. The period is limited to one year; longer periods are truncated from the latest dates. The share tile includes dynamics — the change relative to date_comparison_*. If this period is not specified, the default is the immediately preceding period of the same length. This default applies only to comparison and is not returned in the filters.

Authorization

api-token + language + role

Query parameters

date_fromstring

Example: 25/04/2024

date_tostring

Example: 26/04/2024

date_comparison_fromstring

Example: 25/03/2024

date_comparison_tostring

Example: 26/03/2024

chain_idinteger

Example: 1

branch_idinteger

Example: 1

Responses

OK

object
statusstringrequired

Values:successerror

Example: success

dataobject
filtersobject
date_fromobject (FilterDateFrom)
valuestringcan be null

Example: 2026-08-01 00:00:00

typestringrequired

Example: date

modestring (FilterMode)

How the interface handles the filter; a regular filter does not have mode.
force_shown — always displayed, cannot be hidden.
value_required — entry point to the section: always displayed, cannot have an empty value (until a value is selected, the list is empty; there is no "all" option), global reset does not clear it.

Values:force_shownvalue_required

Example: value_required

date_toobject (FilterDateTo)
valuestringcan be null

Example: 2026-08-31 23:59:59

typestringrequired

Example: date

modestring (FilterMode)

How the interface handles the filter; a regular filter does not have mode.
force_shown — always displayed, cannot be hidden.
value_required — entry point to the section: always displayed, cannot have an empty value (until a value is selected, the list is empty; there is no "all" option), global reset does not clear it.

Values:force_shownvalue_required

Example: value_required

date_rangeobject (FilterDateRange)

Predefined date filter ranges; the lower boundary is calculated in the user's timezone. value is the range corresponding to the current *_from and *_to; null means a custom range. default is the range the server uses when a request has no dates: it is also applied on the first section load and when resetting. The upper boundary of the range always matches the user's current day, so option does not include it: you do not need to send *_to for a predefined range, the server sets it automatically. Ranges longer than one year are trimmed from the most recent boundary.

valuestring (DateRange) can be null

Predefined date filter range. It does not have its own query parameter: the lower boundary is pre-calculated in option and is used as *_from. The upper boundary is neither returned in the response nor sent in the request—it is always set to the user's current day by the server.

Values:todaythree_daysweektwo_weeksmonthquarterhalf_yearyear

Example: today

defaultstring (DateRange) required

Predefined date filter range. It does not have its own query parameter: the lower boundary is pre-calculated in option and is used as *_from. The upper boundary is neither returned in the response nor sent in the request—it is always set to the user's current day by the server.

Values:todaythree_daysweektwo_weeksmonthquarterhalf_yearyear

Example: today

typestringrequired

Example: select

modestring (FilterMode)

How the interface handles the filter; a regular filter does not have mode.
force_shown — always displayed, cannot be hidden.
value_required — entry point to the section: always displayed, cannot have an empty value (until a value is selected, the list is empty; there is no "all" option), global reset does not clear it.

Values:force_shownvalue_required

Example: value_required

optionarray of objectrequired
valuestring (DateRange) required

Predefined date filter range. It does not have its own query parameter: the lower boundary is pre-calculated in option and is used as *_from. The upper boundary is neither returned in the response nor sent in the request—it is always set to the user's current day by the server.

Values:todaythree_daysweektwo_weeksmonthquarterhalf_yearyear

Example: today

date_fromstringrequired

Example: 25/08/2026

date_comparison_fromobject (FilterDateFrom)
valuestringcan be null

Example: 2026-08-01 00:00:00

typestringrequired

Example: date

modestring (FilterMode)

How the interface handles the filter; a regular filter does not have mode.
force_shown — always displayed, cannot be hidden.
value_required — entry point to the section: always displayed, cannot have an empty value (until a value is selected, the list is empty; there is no "all" option), global reset does not clear it.

Values:force_shownvalue_required

Example: value_required

date_comparison_toobject (FilterDateTo)
valuestringcan be null

Example: 2026-08-31 23:59:59

typestringrequired

Example: date

modestring (FilterMode)

How the interface handles the filter; a regular filter does not have mode.
force_shown — always displayed, cannot be hidden.
value_required — entry point to the section: always displayed, cannot have an empty value (until a value is selected, the list is empty; there is no "all" option), global reset does not clear it.

Values:force_shownvalue_required

Example: value_required

date_comparison_rangeobject (FilterDateRangeOptional)

Predefined date filter ranges with no default value: default is always null.

valuestring (DateRange) can be null

Predefined date filter range. It does not have its own query parameter: the lower boundary is pre-calculated in option and is used as *_from. The upper boundary is neither returned in the response nor sent in the request—it is always set to the user's current day by the server.

Values:todaythree_daysweektwo_weeksmonthquarterhalf_yearyear

Example: today

defaultstring (DateRange) can be null

Predefined date filter range. It does not have its own query parameter: the lower boundary is pre-calculated in option and is used as *_from. The upper boundary is neither returned in the response nor sent in the request—it is always set to the user's current day by the server.

Values:todaythree_daysweektwo_weeksmonthquarterhalf_yearyear

Example: today

typestringrequired

Example: select

optionarray of objectrequired
valuestring (DateRange) required

Predefined date filter range. It does not have its own query parameter: the lower boundary is pre-calculated in option and is used as *_from. The upper boundary is neither returned in the response nor sent in the request—it is always set to the user's current day by the server.

Values:todaythree_daysweektwo_weeksmonthquarterhalf_yearyear

Example: today

date_fromstringrequired

Example: 25/08/2026

chain_idobject (FilterSelectInteger)
valueinteger

Example: 8920

typestringrequired

Example: select

optionarray of object
valueintegerrequired

Example: 8920

namestringrequired

Example: Green Basket | Kaliningrad

modestring (FilterMode)

How the interface handles the filter; a regular filter does not have mode.
force_shown — always displayed, cannot be hidden.
value_required — entry point to the section: always displayed, cannot have an empty value (until a value is selected, the list is empty; there is no "all" option), global reset does not clear it.

Values:force_shownvalue_required

Example: value_required

branch_idobject (FilterSelectInteger)
valueinteger

Example: 8920

typestringrequired

Example: select

optionarray of object
valueintegerrequired

Example: 8920

namestringrequired

Example: Green Basket | Kaliningrad

modestring (FilterMode)

How the interface handles the filter; a regular filter does not have mode.
force_shown — always displayed, cannot be hidden.
value_required — entry point to the section: always displayed, cannot have an empty value (until a value is selected, the list is empty; there is no "all" option), global reset does not clear it.

Values:force_shownvalue_required

Example: value_required

tilesobject
totalobject (FeedbackAnalyticsCountTile) required

Counter tile in the summary row: the number of reviews and their share for the period. percent is null if there are no reviews for the period. Change relative to the comparison period is intentionally not provided: the number of reviews depends on traffic, so its growth does not indicate quality.

valueintegerrequired

Example: 96

percentnumber · float

Example: 75

positiveobject (FeedbackAnalyticsCountTile) required

Counter tile in the summary row: the number of reviews and their share for the period. percent is null if there are no reviews for the period. Change relative to the comparison period is intentionally not provided: the number of reviews depends on traffic, so its growth does not indicate quality.

valueintegerrequired

Example: 96

percentnumber · float

Example: 75

negativeobject (FeedbackAnalyticsCountTile) required

Counter tile in the summary row: the number of reviews and their share for the period. percent is null if there are no reviews for the period. Change relative to the comparison period is intentionally not provided: the number of reviews depends on traffic, so its growth does not indicate quality.

valueintegerrequired

Example: 96

percentnumber · float

Example: 75

positive_shareobject (FeedbackAnalyticsShareTile) required

Share tile in the summary row. Unlike counters, it includes dynamics — the change in share relative to the comparison period, measured in percentage points; it is independent of traffic. percent and dynamics are null if there is nothing to calculate the share from: there are no reviews for the period or the comparison period.

valueintegerrequired

Example: 96

percentnumber · float

Example: 75

dynamicsnumber · float

Example: -0.2

pointsarray of object
datetimestringrequired

Start of the hourly interval in UTC

Example: 2026-09-08 10:00:00

positiveintegerrequired

Example: 3

negativeintegerrequired

Example: 1