Review-response stats
Overview
Get review and response totals for the authenticated partner. Totals are split across three time windows: the last 30 days, the previous 30 days, and everything before that. Each call also returns a KPI summary — response rate %, average response time, and the awaiting-response count.
Prerequisites
- A partner bearer token. The API authenticates with OAuth 2.0 Bearer tokens (RS256-signed JWTs). Obtain one via
POST /loginor the SSO flow, then send it asAuthorization: Bearer <bearer-token>— see Authentication for the full token lifecycle. - Partner scope. The token must belong to a partner-admin user (
bundle_id = 1); account or location tokens are rejected. Results are limited to that partner's active/pending stores, and narrowed toassignBrandsif the user hasassign_brandset.
Base URL
| Environment | URL |
|---|---|
| Production | https://production-api.shoutaboutus.com |
| Development | https://development-api.shoutaboutus.com |
Endpoint
GET /api/v1/partner/stats/review-response
Authentication
-
Requires a bearer token in the
Authorization: Bearer <bearer-token>header. -
Who can call it: Partner tokens.
-
Mounted under the
partner/statsgroup. -
Scope is the partner, restricted to active/pending stores. If the user has
assign_brandset, counts are further narrowed to the company'sassignBrands. -
Review/response date buckets use
review_dateandresponse_createdrespectively.
Rate limit
- No rate limit.
Request
- No path, query, or body params (reads the authenticated user only).
Response
review_stats.last_30_days(int) — reviews dated within the last 30 days.review_stats.previous_30_days_count(int) — reviews dated in the 30–60 days ago window.review_stats.before_30_days(int) — reviews dated more than 60 days ago.response_stats.last_30_days(int) — responses created within the last 30 days.response_stats.previous_30_days_count(int) — responses created in the 30–60 days ago window.response_stats.before_30_days(int) — responses created more than 60 days ago.kpi_summary.response_rate_pct(number) —response_stats.last_30_days / review_stats.last_30_days * 100, rounded to 2dp (0 if no reviews). In the example: 310 / 324 * 100 = 95.68%.kpi_summary.response_rate_pct_previous(number) — same ratio for the previous 30-day window. In the example: 285 / 298 * 100 = 95.64%.kpi_summary.avg_response_time(number) — average response time in days (avg minutes / 1440, 2dp; 0 if none).kpi_summary.awaiting_response(int) — the awaiting-response count: reviews still awaiting a response within the last-30-days window.
200 Success · 200
200{
"data": {
"review_stats": {
"last_30_days": 324,
"previous_30_days_count": 298,
"before_30_days": 1820
},
"response_stats": {
"last_30_days": 310,
"previous_30_days_count": 285,
"before_30_days": 1750
},
"kpi_summary": {
"response_rate_pct": 95.68,
"response_rate_pct_previous": 95.64,
"avg_response_time": 1.42,
"awaiting_response": 22
}
}
}Errors
| Status | Meaning |
|---|---|
401 | The bearer token is missing, expired or invalid |
500 | Unexpected server error |
Example request
curl --request GET \
--url "https://production-api.shoutaboutus.com/api/v1/partner/stats/review-response" \
--header 'Authorization: Bearer <bearer-token>' \
--header 'Accept: application/json'Updated 11 days ago
Did this page help you?
