List past insight reports
Overview
Get the insight reports already generated for a location.
Use this to show a location's report history, or to find a report's insight_report_id.
You'll need the store_id.
Returns the reports, newest first. Each row leaves out the report itself; open one with Check report status. This call only reads stored reports: it never starts a new one and doesn't count against your plan.
Prerequisites
- A bearer token. See Authentication.
- The location's id (
store_id).
Base URL
| Environment | URL |
|---|---|
| Production | https://production-api.shoutaboutus.com |
| Development | https://development-api.shoutaboutus.com |
Endpoint
POST /api/v1/account/insight-report/list
Authentication
Partner or Account token
store_idmust be inside your own account tree. A Partner token can list reports for any location under the partner; an Account token only for its own locations.- A location outside your tree is rejected with
422.
Rate limit
60 requests per minute, counted per user (the token’s user). See Rate limits.
Request parameters
None.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
store_id | integer | Yes | The location. Must exist and be inside your account tree. |
review_site_id | integer | No | Only reports for this review site. Must exist. |
publisher | string | No | Only reports for this source, e.g. maps.google.com, or all for reports across all sites. At most 64 characters; exact match. |
status | string | No | Only reports with this status: pending, queued, processing, complete or failed. At most 32 characters; exact match. |
year | integer | No | Only reports for this year, 2000 to 2100. |
month | integer | No | Only reports for this month, 1 to 12. Full-year reports have no month, so a month filter leaves them out. |
per_page | integer | No | Reports per page, 10 to 100 (values below 10 are raised to 10; above 100 returns 422). Defaults to 50. |
page | integer | No | The page, from 1. Defaults to 1. |
Request payload
{
"store_id": 3007,
"status": "complete",
"year": 2026
}Response body
The payload is inside data.
| Field | Type | Description |
|---|---|---|
reports | array | The reports, newest first. An empty array [] when none match. |
reports[].insight_report_id | integer | The report's id. Open it with Check report status. |
reports[].store_id | integer | The location. |
reports[].store_name | string | The location's name, with its client_location_id (or storeid) when it has one. |
reports[].review_site_id | integer or null | The review site the report covers; null for a report across all sites. |
reports[].publisher | string | The source the report covers, e.g. maps.google.com, or all. |
reports[].year | integer | The report's year. |
reports[].month | integer or null | The report's month, 1 to 12; null for a full-year report. |
reports[].month_name | string or null | The month's short name, e.g. Aug. |
reports[].theme | string | The report's theme, e.g. home-services. |
reports[].status | string | pending, queued, processing, complete or failed. |
reports[].task_id | string or null | The generation task's id; null when the report never started generating. |
reports[].review_count | integer or null | How many reviews the report covered; null until it's complete. |
reports[].created_at | string | When the report was requested (ISO 8601). |
reports[].completed_at | string or null | When it finished (ISO 8601). |
meta.current_page | integer | The page returned. |
meta.last_page | integer | The last page. |
meta.per_page | integer | Reports per page. |
meta.total | integer | Reports matching the filters. |
Response payload
{
"data": {
"reports": [
{
"insight_report_id": 285,
"store_id": 3007,
"store_name": "Acme Coffee - docs-test-loc-001",
"review_site_id": null,
"publisher": "all",
"year": 2026,
"month": 8,
"month_name": "Aug",
"theme": "business-services",
"status": "failed",
"task_id": null,
"review_count": null,
"created_at": "2026-09-28T14:47:47+00:00",
"completed_at": "2026-09-28T14:47:47+00:00"
},
{
"insight_report_id": 284,
"store_id": 3007,
"store_name": "Acme Coffee - docs-test-loc-001",
"review_site_id": 44,
"publisher": "maps.google.com",
"year": 2026,
"month": 8,
"month_name": "Aug",
"theme": "home-services",
"status": "complete",
"task_id": "7cf307e7-ed49-4016-aeed-084f215bc211",
"review_count": 12,
"created_at": "2026-09-28T14:47:44+00:00",
"completed_at": "2026-09-28T14:49:29+00:00"
}
],
"meta": {
"current_page": 1,
"last_page": 1,
"per_page": 50,
"total": 2
}
}
}Examples
Success payload
All the location's reports: see Response payload.
No reports match the filters:
{
"data": {
"reports": [],
"meta": {
"current_page": 1,
"last_page": 1,
"per_page": 50,
"total": 0
}
}
}Error payload
422 Missing store_id
{
"message": "The store id field is required.",
"errors": {
"store_id": [
"The store id field is required."
]
}
}422 Location outside your tree
{
"message": "The selected store id does not belong to your company hierarchy.",
"errors": {
"store_id": [
"The selected store id does not belong to your company hierarchy."
]
}
}422 per_page above 100
{
"message": "The per page field must not be greater than 100.",
"errors": {
"per_page": [
"The per page field must not be greater than 100."
]
}
}429 Too many requests
{
"message": "Too Many Attempts."
}| Status | Meaning |
|---|---|
200 | The location's reports, or [] when none match. |
401 | The token is missing, expired or invalid. |
422 | store_id is missing, doesn't exist or is outside your tree, or a filter is invalid. |
429 | More than 60 requests in a minute from this user. |
500 | Unexpected server error. |
Example request
curl --request POST \
--url "https://production-api.shoutaboutus.com/api/v1/account/insight-report/list" \
--header 'Authorization: Bearer <bearer-token>' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"store_id": 3007, "status": "complete", "year": 2026}'Updated about 1 hour ago
Did this page help you?
