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

Base URL

EnvironmentURL
Productionhttps://production-api.shoutaboutus.com
Developmenthttps://development-api.shoutaboutus.com

Endpoint

POST /api/v1/account/insight-report/list

Authentication

Partner or Account token

  • store_id must 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

FieldTypeRequiredDescription
store_idintegerYesThe location. Must exist and be inside your account tree.
review_site_idintegerNoOnly reports for this review site. Must exist.
publisherstringNoOnly reports for this source, e.g. maps.google.com, or all for reports across all sites. At most 64 characters; exact match.
statusstringNoOnly reports with this status: pending, queued, processing, complete or failed. At most 32 characters; exact match.
yearintegerNoOnly reports for this year, 2000 to 2100.
monthintegerNoOnly reports for this month, 1 to 12. Full-year reports have no month, so a month filter leaves them out.
per_pageintegerNoReports per page, 10 to 100 (values below 10 are raised to 10; above 100 returns 422). Defaults to 50.
pageintegerNoThe page, from 1. Defaults to 1.

Request payload

{
  "store_id": 3007,
  "status": "complete",
  "year": 2026
}

Response body

The payload is inside data.

FieldTypeDescription
reportsarrayThe reports, newest first. An empty array [] when none match.
reports[].insight_report_idintegerThe report's id. Open it with Check report status.
reports[].store_idintegerThe location.
reports[].store_namestringThe location's name, with its client_location_id (or storeid) when it has one.
reports[].review_site_idinteger or nullThe review site the report covers; null for a report across all sites.
reports[].publisherstringThe source the report covers, e.g. maps.google.com, or all.
reports[].yearintegerThe report's year.
reports[].monthinteger or nullThe report's month, 1 to 12; null for a full-year report.
reports[].month_namestring or nullThe month's short name, e.g. Aug.
reports[].themestringThe report's theme, e.g. home-services.
reports[].statusstringpending, queued, processing, complete or failed.
reports[].task_idstring or nullThe generation task's id; null when the report never started generating.
reports[].review_countinteger or nullHow many reviews the report covered; null until it's complete.
reports[].created_atstringWhen the report was requested (ISO 8601).
reports[].completed_atstring or nullWhen it finished (ISO 8601).
meta.current_pageintegerThe page returned.
meta.last_pageintegerThe last page.
meta.per_pageintegerReports per page.
meta.totalintegerReports 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."
}
StatusMeaning
200The location's reports, or [] when none match.
401The token is missing, expired or invalid.
422store_id is missing, doesn't exist or is outside your tree, or a filter is invalid.
429More than 60 requests in a minute from this user.
500Unexpected 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}'

Did this page help you?