Get one review

Overview

Get a single review by its id, with its response, the location and site it belongs to, flag status, connection state, and what kinds of response are currently allowed.

Use this when you already know the review id, for example to load a review's detail before responding to it.

You'll need the review_id.

Returns the review. Same shape as one entry from Get reviews for a location, with a few extra fields for the response editor.

Prerequisites

  • A bearer token. See Authentication.
  • The review's id (review_id), for example the id from Get reviews for a location.

Base URL

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

Endpoint

GET /api/v1/response/get/review

Authentication

Partner or Account token

  • The review must be on a location inside your own account tree. A Partner token reaches every review under the partner; an Account token only its own account's reviews.
  • A review outside your tree is rejected with 422. A review in your tree on a location that isn't active or pending, or that your user isn't assigned to, gets 403.

Rate limit

This endpoint has no rate limit.

Request parameters

ParameterInTypeRequiredDescription
review_idqueryintegerYesThe review. Must exist and be inside your account tree.

Request body

None.

Request payload

None.

Response body

The review is in data; checkUnamePass, standalone_type and standalone_popup_message are next to it.

FieldTypeDescription
dataobjectThe review, in the same shape as an entry from Get reviews for a location.
data.idintegerThe review's id (review_id).
data.source_platformstringThe site the review came from, e.g. google.
data.reviewobjectThe review.
data.review.idintegerThe review's id.
data.review.reviewerstringThe reviewer's name as shown on the site.
data.review.ratingnumberThe star rating, e.g. 4.
data.review.messagestringThe review text. "" when the review is a rating only.
data.review.review_datestring or nullWhen the review was posted (ISO 8601), or null if unknown.
data.reviewsiteobjectThe review site.
data.reviewsite.idintegerThe review site's id (review_site_id).
data.reviewsite.namestringThe review site's name, e.g. Google.
data.reviewsite.linkstringThe site's home page.
data.reviewsite.review_site_logostringURL of the site's logo.
data.reviewsite.review_site_colorstringThe site's brand colour, e.g. #4285F4.
data.reviewsite.auth_typestring or nullHow the site connects: oauth, cookie, credential, default, restapi, or null. See List supported review sites.
data.reviewsite.scraping_enabledbooleanWhether reviews can be collected from this site.
data.reviewsite.posting_enabledbooleanWhether responses can be posted to this site.
data.storeobjectThe location.
data.store.idintegerThe location's id (store_id).
data.store.namestringThe location's name, followed by - and your client_location_id (or its storeId label) when it has one.
data.store.slugstringThe location's URL slug.
data.store.addressstringThe location's address: street, city and state.
data.store_reviewsiteobjectThe connection between the location and the site.
data.store_reviewsite.idinteger or nullThe connection's id (store_review_site_id).
data.store_reviewsite.urlstring or nullThe site's review URL for the location.
data.store_reviewsite.landing_page_urlstring or nullThe landing page URL used in review requests.
data.store_reviewsite.connection_statusstring or nullThe stored connection state, e.g. connected or Disconnected, or null.
data.store_reviewsite.is_connectedbooleanWhether the site is connected for this location.
data.flagarray of objectsStatus chips for the response and any removal flag, in display order. Empty when there is nothing to show.
data.flag[].flagstringThe chip label, e.g. complete or Flagged — Pending Review.
data.flag[].titlestringWhat the chip means, in plain language.
data.flag[].statusColorstringsuccess, warning or error.
data.flag[].iconstringIcon name for the chip.
data.flag[].linksarray of objectsOnly on some chips: where to fix the problem.
data.flag[].links[].namestringLink label, e.g. Edit Review Site.
data.flag[].links[].urlstringLink URL in the Shout About Us web app.
data.planstringThe plan name recorded with the latest update to the response, or "".
data.review_flagobject or nullThe removal flag on this review, or null.
data.review_flag.review_idintegerThe review's id.
data.review_flag.reasonstringWhy the review was flagged.
data.review_flag.flag_statusstringpending, submitted_to_platform, approved_removed or denied.
data.review_flag.flag_datestringWhen it was flagged (ISO 8601).
data.review_flag.flag_reason_detailstring or nullThe extra detail given when flagging, or null.
data.review_flag.reason_identifierstring or nullThe flag reason category, e.g. Low quality information.
data.is_flaggablebooleanWhether you can flag this review for removal now.
data.flag_statusstringnone when not flagged, otherwise pending, submitted_to_platform, approved_removed or denied.
data.flag_detailsobject or nullThe flag, or null when not flagged.
data.flag_details.reasonstringWhy the review was flagged.
data.flag_details.reason_identifierstring or nullThe flag reason category.
data.flag_details.flag_reason_detailstring or nullThe extra detail given when flagging.
data.flag_details.flag_datestring or nullWhen it was flagged (ISO 8601).
data.response_capabilitiesobjectWhether a response can be sent now.
data.response_capabilities.manualbooleanWhether you can write and send a response.
data.response_capabilities.aibooleanWhether you can send an AI-drafted response.
data.response_capabilities.reasonstring or nullWhy not, when either is false, e.g. no_store_plan, dormant_tier, pre_response_cutoff, past_response_window_expired, past_response_quota_reached or past_response_unavailable. Otherwise null.
data.responseobject or nullThe response to the review, or null when there is none.
data.response.idintegerThe response's id.
data.response.statusstringWhere the response is: e.g. complete (posted), pending (in the posting queue), or why it wasn't posted, e.g. login_error. The flag chip explains it.
data.response.public_contentsstring or nullThe response text posted on the site.
data.response.private_contentsstring or nullThe private part of the response, or null.
data.response.response_datestring or nullWhen the response was made, or null.
data.response.deletedobject or nullSet when the response was removed from the site, otherwise null.
data.response.deleted.delete_onstringWhen it was removed.
data.response.deleted.statusstringThe removal status.
checkUnamePassinteger1 when there's no saved login or connection for this site on the location, so a response can't be posted yet; otherwise 0.
standalone_typestring or nullAlways null on this endpoint.
standalone_popup_messagestringAlways "" on this endpoint.

Response payload

{
  "data": {
    "id": 265997,
    "source_platform": "google",
    "review": {
      "id": 265997,
      "reviewer": "Jane Smith",
      "rating": 4,
      "message": "Busy, but clean.",
      "review_date": "2026-09-23T10:09:39.000000Z"
    },
    "reviewsite": {
      "id": 44,
      "name": "Google",
      "link": "http://maps.google.com",
      "review_site_logo": "https://d2ny6zb7otrnhl.cloudfront.net/static/images/img-google.png",
      "review_site_color": "#4285F4",
      "auth_type": "oauth",
      "scraping_enabled": true,
      "posting_enabled": true
    },
    "store": {
      "id": 3007,
      "name": "Acme Coffee - Sydney",
      "slug": "acme-coffee",
      "address": "1 George St, Sydney, NSW"
    },
    "store_reviewsite": {
      "id": 8784,
      "url": "https://www.google.com/maps/place/Wynyard/@-33.8648805,151.2065622,1523m/data=!3m1!1e3!4m6!3m5!1s0x6b12ae40e6fcf9eb:0x45845f7ff56e0d1!8m2!3d-33.86594!4d151.2061!16s%2Fg%2F1262gn7v0?entry=ttu&g_ep=EgoyMDI2MDkyMC4wIKXMDSoASAFQAw%3D%3D",
      "landing_page_url": "https://www.google.com/maps/place/Wynyard/@-33.8648805,151.2065622,1523m/data=!3m1!1e3!4m6!3m5!1s0x6b12ae40e6fcf9eb:0x45845f7ff56e0d1!8m2!3d-33.86594!4d151.2061!16s%2Fg%2F1262gn7v0?entry=ttu&g_ep=EgoyMDI2MDkyMC4wIKXMDSoASAFQAw%3D%3D",
      "connection_status": "Disconnected",
      "is_connected": false
    },
    "flag": [],
    "plan": "",
    "review_flag": null,
    "is_flaggable": true,
    "flag_status": "none",
    "flag_details": null,
    "response_capabilities": {
      "manual": true,
      "ai": true,
      "reason": null
    },
    "response": null
  },
  "checkUnamePass": 1,
  "standalone_type": null,
  "standalone_popup_message": ""
}

Examples

Success payload

See Response payload.

Error payload

403 Location not available to you

{
  "message": "Forbidden",
  "status": "error",
  "errors": "Access denied"
}

422 Missing review_id

{
  "message": "The review id field is required.",
  "errors": {
    "review_id": [
      "The review id field is required."
    ]
  }
}

422 Review outside your tree

{
  "message": "The selected review id does not belong to your company hierarchy.",
  "errors": {
    "review_id": [
      "The selected review id does not belong to your company hierarchy."
    ]
  }
}
StatusMeaning
200The review.
401The token is missing, expired or invalid.
403The review's location is in your tree but isn't active or pending, or isn't assigned to your user (Access denied).
422review_id is missing, not an integer, doesn't exist, or is outside your tree.
500Unexpected server error.

Example request

curl --request GET \
  --url "https://production-api.shoutaboutus.com/api/v1/response/get/review?review_id=265997" \
  --header 'Authorization: Bearer <bearer-token>' \
  --header 'Accept: application/json'

Did this page help you?