Get the latest report
Overview
Fetch the most recent insight report for a location and period, in any state (pending, queued, processing, complete or failed). Check status before showing it.
You'll need the store_id. Optionally narrow it with review_site_id, year, month and theme.
Returns the report, or {"found": false} when there isn't one yet.
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/latest
Authentication
Partner or Account token
store_idmust be inside your own account tree. A Partner token can read 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 | The review site. Must exist and be linked to the location. Leave it out to match the combined report across all the location's review sites. |
year | integer | No | The report year, 2000 to 2100. Leave it out to match the previous calendar month's report (any month you send is then ignored). |
month | integer | No | The report month, 1 to 12. Used only with year; with year and no month, it matches the full-year report. |
theme | string | No | The report theme, at most 64 characters, e.g. home-services. Leave it out to match the most recent report for the period whatever its theme. |
force | boolean | No | Accepted but not used here. |
Request payload
{
"store_id": 3007,
"review_site_id": 44,
"year": 2026,
"month": 8,
"theme": "home-services"
}Response body
The payload is inside data.
| Field | Type | Description |
|---|---|---|
found | boolean | true when a report matches; false when there isn't one yet (then found is the only field). |
insight_report_id | integer | The report's id. Use it as report_id in Check report status. |
store_id | integer | The location. |
review_site_id | integer or null | The review site, or null for a combined report. |
publisher | string | The review site's source, e.g. maps.google.com, or all for a combined report. |
year | integer | The report year. |
month | integer or null | The report month, or null for a full-year report. |
theme | string | The report theme. |
status | string | pending, queued, processing, complete or failed. |
task_id | string or null | The report generator's task id. |
review_count | integer or null | How many reviews the report analysed. null until it's complete. |
result_summary | object or null | The report itself, once it's complete; see Check report status. null until then. |
failure_reason | string or null | Why the report failed, when it did. |
failure_details | string or null | More detail on the failure, when there is any. |
created_at | string or null | When the report was requested (ISO 8601). |
completed_at | string or null | When the report finished (ISO 8601). null while it's running. |
Response payload
{
"data": {
"insight_report_id": 284,
"store_id": 3007,
"review_site_id": 44,
"publisher": "maps.google.com",
"year": 2026,
"month": 8,
"theme": "home-services",
"status": "complete",
"task_id": "7cf307e7-ed49-4016-aeed-084f215bc211",
"review_count": 12,
"result_summary": {
"hero": {
"verdict": "Your Service Quality is the clear strength — customers repeatedly praise the location's accessibility and seamless connections across Sydney. Communication and Responsiveness lags behind that excellence (66.7% positive), so you should focus on making contact and information clearer and more consistent to avoid eroding the strong overall rating.",
"heroTitle": "Acme Coffee: Exceptional service, tighten communications",
"anchorQuote": "Awsome experience",
"closingLine": "Prioritise making information about access, connections and expected contact/response channels clearer across your customer touchpoints to lift your Communication and Responsiveness performance."
},
"meta": {
"mode": "single",
"version": "1.1",
"reportType": "home-services-insights"
},
"themes": [
{
"id": "service-quality",
"name": "Service Quality",
"loves": [
{
"text": "Customers praise your location for being very accessible and well connected to different parts of Sydney, including bus, train and Light Rail links.",
"keyword": "Accessibility & connections"
},
{
"text": "Customers describe the integration of new and older rail infrastructure as seamless and say the site works well as a central transport hub in the CBD.",
"keyword": "Transport hub"
}
],
"status": "STRONG",
"actions": [
{
"text": "Install clear wayfinding signage at all major entrances that highlights bus, train and Light Rail connections and walking routes to nearby attractions like Darling Harbour and Hyde Park."
},
{
"text": "Publish a simple access map and step-by-step walking directions on your website and on-site screens so customers immediately see how to navigate connections."
}
],
"mentions": 10,
"frictions": [],
"sentimentScore": 100,
"negativeMentions": 0,
"positiveMentions": 10
},
{
"id": "communication-and-responsiveness",
"name": "Communication and Responsiveness",
"loves": [
{
"text": "Customers appreciate that your location feels less crowded than other hubs, which they identify as a positive part of the experience.",
"keyword": "Lower crowding"
},
{
"text": "Customers value that the site is a short walk to major destinations such as Darling Harbour and Hyde Park.",
"keyword": "Proximity to attractions"
}
],
"status": "GOOD",
"actions": [
{
"text": "Define and publish a clear response protocol on your contact page and at customer touchpoints that states which channels you monitor and what customers can expect when they contact you."
},
{
"text": "Train front-line staff to use a short script for common enquiries and to log unanswered queries so you can measure and improve response consistency."
}
],
"mentions": 3,
"frictions": [],
"sentimentScore": 66.7,
"negativeMentions": 0,
"positiveMentions": 2
},
{
"id": "pricing-and-value",
"name": "Pricing and Value",
"loves": [],
"status": "NO_DATA",
"actions": [
{
"text": "Begin collecting targeted feedback about pricing and perceived value at checkout and via a short follow-up survey so you can build enough data to evaluate this KPI."
}
],
"mentions": 0,
"frictions": [],
"sentimentScore": 0,
"negativeMentions": 0,
"positiveMentions": 0
},
{
"id": "professionalism-and-staff-behavior",
"name": "Professionalism and Staff Behavior",
"loves": [],
"status": "NO_DATA",
"actions": [
{
"text": "Add an optional one-question staff professionalism rating to post-visit surveys to capture impressions of staff behaviour and create a baseline for this metric."
}
],
"mentions": 0,
"frictions": [],
"sentimentScore": 0,
"negativeMentions": 0,
"positiveMentions": 0
}
],
"summary": {
"positiveRate": 92.3,
"ratingStatus": "STRONG",
"totalReviews": 12,
"averageRating": 4.4,
"negativeReviews": 0,
"positiveReviews": 10
},
"appendix": {
"footnote": "Based on 12 Google Maps reviews from August 2026.",
"liveRating": 4.21,
"methodology": "We score your reviews against the service dimensions that matter most in your industry, so results stay comparable month to month. Findings, quotes, and actions come from what your customers actually wrote. Each score is the share of mentions that were positive. Where a dimension has too few mentions to score, we say so.",
"reportPeriod": "August 2026",
"reviewSource": "Google Maps",
"reviewsToDate": 681,
"analysisPeriod": "Aug 01, 2026 - Aug 31, 2026",
"extendedWindow": false,
"reviewsAnalysed": 12,
"reviewsReceived": 38,
"totalReviewsAnalyzed": 12,
"reviewsWithCommentsToDate": 305
},
"business": {
"name": "Acme Coffee",
"address": "1 George St, Sydney, New South Wales 2000, Australia",
"category": null,
"reportPeriod": {
"label": "August 2026"
},
"reviewSource": "Google Maps",
"analysisPeriod": {
"end": "2026-08-31",
"start": "2026-08-01",
"display": "Aug 01, 2026 - Aug 31, 2026"
}
},
"actionPlan": {
"monitoring": [
{
"title": "Protect Service Quality",
"cadence": "MONTHLY",
"description": "Continue to monitor customer comments about accessibility and transport connections so you maintain your high Service Quality performance."
},
{
"title": "Monitor Communication Score",
"cadence": "MONTHLY",
"description": "Track the percentage positive and response-related comments to measure the impact of any changes you make to contact protocols."
},
{
"title": "Pricing & Value data gap",
"cadence": "MONTHLY",
"description": "Not enough reviews mention pricing or value yet to draw a conclusion; collect targeted feedback to populate this metric."
},
{
"title": "Staff behaviour data gap",
"cadence": "MONTHLY",
"description": "Not enough reviews mention professionalism or staff behaviour yet to draw a conclusion; add a brief staff-rating question to capture this."
}
],
"priorities": []
}
},
"failure_reason": null,
"failure_details": null,
"created_at": "2026-09-28T14:47:44+00:00",
"completed_at": "2026-09-28T14:49:29+00:00",
"found": true
}
}Examples
Success payload
A report matches: see Response payload.
No report yet (offer Generate an insight report):
{
"data": {
"found": false
}
}Error payload
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 Review site not linked to the location
{
"message": "The selected review site is not linked to the given store.",
"errors": {
"review_site_id": [
"The selected review site is not linked to the given store."
]
}
}422 No review site reports can use
{
"message": "This store has no linked review sites with a configured publisher.",
"errors": {
"store_id": [
"This store has no linked review sites with a configured publisher."
]
}
}429 Too many requests
{
"message": "Too Many Attempts."
}| Status | Meaning |
|---|---|
200 | The latest matching report, or {"found": false}. |
401 | The token is missing, expired or invalid. |
422 | A field is missing or invalid, the location is outside your tree, review_site_id isn't linked to the location, or the location has no linked review site with a publisher (This store has no linked review sites with a configured publisher.). |
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/latest" \
--header 'Authorization: Bearer <bearer-token>' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"store_id": 3007, "review_site_id": 44, "year": 2026, "month": 8, "theme": "home-services"}'Updated 17 days ago
Did this page help you?
