See flag history

Overview

Get the history of flags across your reviews: what was flagged, when, why, and what happened.

Use this for reporting, or to see how often flags are accepted by each site.

Results can be filtered by location, flag status and review site.

Returns the flags, newest first, a page at a time.

Prerequisites

  • A bearer token. See Authentication.
  • Optional: a location's id (store_id) to see one location only.

Base URL

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

Endpoint

GET /api/v1/reviews/flag/history

Authentication

Partner or Account token

  • You see flags on the locations your token can reach. A Partner token reaches every location under the partner; an Account token its own locations.
  • A store_id outside that set returns 403 You do not have access to this store..
  • When your token can't reach any location, the response is {"data": {"data": [], "total": 0}}.

Rate limit

60 requests per minute, counted per user (the token’s user). See Rate limits.

Request parameters

ParameterInTypeRequiredDescription
store_idqueryintegerNoOnly this location's flags. Must be a location your token can reach.
flag_statusquerystringNopending, denied, approved_removed or submitted_to_platform. Any other value returns 400 Invalid flag_status value..
review_sitequerystringNoOnly flags on reviews from the review site with this name, e.g. Google.
pagequeryintegerNoThe page. Defaults to 1.
limitqueryintegerNoFlags per page, 10 to 100 (values below 10 are raised to 10; above 100 returns 422). Defaults to 20.

Request body

None.

Request payload

None.

Response body

The payload is inside data, as a page of results.

FieldTypeDescription
dataarrayThe flags on this page, newest first.
data[].idintegerThe flag's id.
data[].review_idintegerThe review.
data[].reason_identifierstringThe reason's short name.
data[].reasonstringThe site's full description of the reason.
data[].flag_reason_detailstring or nullThe explanation sent with the flag.
data[].user_idinteger or nullThe user recorded as the flagger.
data[].flag_statusstringpending, denied, approved_removed or submitted_to_platform.
data[].flag_datestringWhen the review was flagged (ISO 8601).
data[].json_dataobject or nullExtra details sent with an Indeed flag; null for other sites.
data[].deleted_atstring or nullWhen the flag was removed, if it was.
data[].created_atstringWhen the flag was created (ISO 8601).
data[].updated_atstringWhen the flag last changed (ISO 8601).
data[].reviewobjectThe review: id, store_id, review_site_id, reviewer, rate, message, review_date, plus reviewsite (id, name) and store (id, name, storeid, company_id).
current_pageintegerThis page.
last_pageintegerThe last page.
per_pageintegerFlags per page.
totalintegerFlags matching the filters.
from, tointeger or nullThe positions of the first and last flag on this page.
first_page_url, last_page_url, next_page_url, prev_page_url, pathstring or nullPage links. They don't carry your filters.
linksarrayPage links for a pager: url, label, page, active.

Response payload

{
  "data": {
    "current_page": 1,
    "data": [
      {
        "id": 43,
        "review_id": 279309,
        "reason_identifier": "Low quality information",
        "reason": "Review is off-topic, contains ads, or is gibberish or repetitive",
        "flag_reason_detail": "This reviewer was never a customer and the claims are fabricated.",
        "user_id": 3011,
        "flag_status": "pending",
        "flag_date": "2026-09-28T14:48:21.000000Z",
        "json_data": null,
        "deleted_at": null,
        "created_at": "2026-09-28T14:48:21.000000Z",
        "updated_at": "2026-09-28T14:48:21.000000Z",
        "review": {
          "id": 279309,
          "store_id": 3007,
          "review_site_id": 44,
          "reviewer": "Jane Smith",
          "rate": 4,
          "message": "",
          "review_date": "2026-09-27T00:22:21.000000Z",
          "reviewsite": {
            "id": 44,
            "name": "Google"
          },
          "store": {
            "id": 3007,
            "name": "Acme Coffee",
            "storeid": "Sydney",
            "company_id": 5995
          }
        }
      }
    ],
    "first_page_url": "https://production-api.shoutaboutus.com/api/v1/reviews/flag/history?page=1",
    "from": 1,
    "last_page": 1,
    "last_page_url": "https://production-api.shoutaboutus.com/api/v1/reviews/flag/history?page=1",
    "links": [
      {
        "url": null,
        "label": "« Previous",
        "page": null,
        "active": false
      },
      {
        "url": "https://production-api.shoutaboutus.com/api/v1/reviews/flag/history?page=1",
        "label": "1",
        "page": 1,
        "active": true
      },
      {
        "url": null,
        "label": "Next »",
        "page": null,
        "active": false
      }
    ],
    "next_page_url": null,
    "path": "https://production-api.shoutaboutus.com/api/v1/reviews/flag/history",
    "per_page": 20,
    "prev_page_url": null,
    "to": 1,
    "total": 1
  }
}

Examples

Success payload

See Response payload.

Error payload

400 Invalid flag_status

{
  "message": "Invalid flag_status value.",
  "status": "error",
  "errors": []
}

403 Location outside your scope

{
  "message": "You do not have access to this store.",
  "status": "error",
  "errors": []
}

422 limit above 100

{
  "message": "The limit field must not be greater than 100.",
  "errors": {
    "limit": [
      "The limit field must not be greater than 100."
    ]
  }
}

429 Too many requests

{
  "message": "Too Many Attempts."
}
StatusMeaning
200A page of flags.
400flag_status isn't one of the allowed values.
401The token is missing, expired or invalid.
403store_id isn't a location your token can reach.
422limit is above 100.
429More than 60 requests in a minute from this user.
500Unexpected server error.

Example request

curl --request GET \
  --url "https://production-api.shoutaboutus.com/api/v1/reviews/flag/history?store_id=3007&flag_status=pending&page=1&limit=20" \
  --header 'Authorization: Bearer <bearer-token>' \
  --header 'Accept: application/json'

Did this page help you?