List Review Sites by Invite Hash (PUBLIC)

Overview

PUBLIC endpoint hit by recipients of the review-site invite email. It lists a store's review sites identified solely by the invite hash, returning the same row shape as the authenticated list endpoint plus the store name/id.

Prerequisites

  • None — this endpoint is public. Access is granted entirely by the {hash} path param.
  • The hash of the record you are targeting.

Base URL

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

Endpoint

POST /api/v1/store-review-site/list/{hash}

Authentication

  • None — no authentication (public group).
  • Access is granted entirely by the {hash} path param — a Hashids-encoded string that must decode to [store_id, 15] with a positive store_id.
  • The store_id comes from the hash, so a recipient can only ever see their own store's review sites.
  • No role — there is no authenticated user.

Rate limit

  • 30 requests/min.

Path parameters

ParameterTypeRequiredDescription
hashstringRequiredMust match [a-zA-Z0-9]+.

Request body

  • Body (optional):
FieldTypeRequiredDescription
has_landing_pageinteger (0/1)no1 filters to rows with a non-empty landing_page_url.
{
  "has_landing_page": 1
}

Response

200 OK - review site list · 200

{
  "data": [
    {
      "id": 5,
      "url": "https://maps.google.com/maps?cid=6987565896915883812",
      "landing_page_url": "https://search.google.com/local/writereview?placeid=ChIJ3xX5m7MI3IARJBdOWinS-GA",
      "created_at": "2026-06-12T11:54:11.000000Z",
      "url_status": "enable",
      "connectionStatus": "Disconnected",
      "is_connected": 0,
      "lock_color": "gray",
      "sendto_scrapper": "N",
      "reviews_status": "offline",
      "posting_status": "offline",
      "has_url": true,
      "display_as_connected": false,
      "error_code": "E-002",
      "error_title": "Posting paused",
      "error_reason": "Google connection has expired. Please reconnect this location.",
      "fix_sheet": "oauth_reconnect",
      "last_scraped_at": null,
      "connect_page_url": "https://production.shoutaboutus.com/connect-review-sites/xxxxx/edit-site/xxx/Google/xxx/",
      "review_site": {
        "id": 44,
        "name": "Google",
        "link": "http://maps.google.com",
        "review_site_icon": "https://d2ny6zb7otrnhl.cloudfront.net/assets/backend/images/logos/google_ic.png",
        "review_site_color": "#4285F4",
        "self_form_enabled": "N",
        "auth_type": "oauth",
        "scraping_enabled": true,
        "posting_enabled": true,
        "keywords": [
          "[reviewSite_44]"
        ],
        "publisher": null
      }
    }
  ],
  "store_name": "Demo Brew - Alameda County",
  "store_id": 2
}

400 Bad Request - invalid hash · 400

{
  "message": "Invalid or expired token.",
  "errors": []
}

404 Not Found - store not found · 404

{
  "message": "Store not found",
  "errors": []
}

Errors

StatusMeaning
400Bad Request - invalid hash
404Not Found - store not found
500Unexpected server error

Example request

curl --request POST \
  --url "https://production-api.shoutaboutus.com/api/v1/store-review-site/list/<hash>" \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"has_landing_page": 1}'

Did this page help you?