Response report — KPIs
Overview
Returns period-over-period KPI cards (review counts, ratings, response rate, average response time, awaiting-response, sentiment split) for the account-scoped response report.
Prerequisites
- A bearer token. Callable with Partner and Account tokens.
Base URL
| Environment | URL |
|---|---|
| Production | https://production-api.shoutaboutus.com |
| Development | https://development-api.shoutaboutus.com |
Endpoint
POST /api/v1/reports/response/kpis
Authentication
-
Requires a bearer token in the
Authorization: Bearer <bearer-token>header. -
Who can call it: Partner and Account tokens.
-
Mounted under the account-side
reports/responsegroup. -
Scope precedence:
store_id(orclient_location_id, then store), then single store; elseaccount_id(orclient_account_id, then account); else the auth user's own tree. -
An account user normally passes only
store_id; a partner-context caller can passaccount_id/client_account_idto scope to a child account. -
All id params are guarded by an ownership check.
Rate limit
- No rate limit.
Request body
- Body:
| Field | Type | Required | Description |
|---|---|---|---|
range_start | string | yes | Y-m-d H:i:s |
range_end | string | yes | Y-m-d H:i:s |
store_id | integer | no | belongs to auth company |
account_id | integer | no | a company under the auth company |
client_account_id | string | no | external account id; resolved to account_id |
client_location_id | string | no | external location id; resolved to store_id |
{
"range_start": "2024-01-01 00:00:00",
"range_end": "2024-12-31 23:59:59",
"store_id": 1
}Response
data.reviews_current(int) /reviews_previous(int)data.avg_rating(float) /avg_rating_previous(float)data.response_rate_pct(float) /response_rate_pct_previous(float)data.avg_response_time_in_days(string) — e.g."1.2 Days"data.awaiting_response(int)data.reviews_sentiments(object) —negativeReviews,negativeReviews_percent,positiveReviews,positiveReviews_percent,neutralReviews,neutralReviews_percent
200 Success — KPI swap (2026-06) · 200
200{
"data": {
"reviews_current": 13,
"reviews_previous": 1,
"avg_rating": 4.2,
"avg_rating_previous": 2.2,
"response_rate_pct": 84.62,
"response_rate_pct_previous": 100.0,
"avg_response_time_in_days": "1.2 Days",
"awaiting_response": 2,
"reviews_sentiments": {
"negativeReviews": 1,
"negativeReviews_percent": 7.69,
"positiveReviews": 10,
"positiveReviews_percent": 76.92,
"neutralReviews": 2,
"neutralReviews_percent": 15.39
}
}
}Errors
| Status | Meaning |
|---|---|
401 | The bearer token is missing, expired or invalid |
422 | The request failed validation — the response names the fields |
500 | Unexpected server error |
Example request
curl --request POST \
--url "https://production-api.shoutaboutus.com/api/v1/reports/response/kpis" \
--header 'Authorization: Bearer <bearer-token>' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"range_start": "2024-01-01 00:00:00", "range_end": "2024-12-31 23:59:59", "store_id": 1}'Updated 9 days ago
