Get widget by unique id (embed data)

Overview

Get an embeddable review widget by its unique_id, and — when feed_data=1 — the paginated review feed the widget renders. Resolves the widget and verifies the owning store/account has an active widget add-on. It then either returns the widget config alone or a ResponseFeed collection of reviews with the average rating. The review-site filter and review count come from the widget's saved options.

Prerequisites

  • A bearer token in the Authorization header.

Base URL

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

Endpoint

GET /api/v1/widget

Authentication

  • Requires a bearer token in the Authorization: Bearer <bearer-token> header.

  • Bearer — any valid token (no role or ownership gate is applied). A token is required even though the widget renders on public pages. 400 if the widget's add-on is inactive; an unknown unique_id fails validation with 422.

Rate limit

  • No rate limit.

Query parameters

FieldTypeRequiredDescription
unique_idstringRequiredMust be an existing widget.
feed_dataintegerOptional0 or 1. 1 returns the paginated review feed + avg_rating.
limitintegerOptionalFeed page size, 10–100 (values below 10 are raised to 10); when omitted, defaults to the widget's numberOfReviews setting.

How it works

    1. Config only (feed_data omitted/0): { "data": { "widget": {. }, "status": "success", "data": null } }.
    1. Feed (feed_data=1): a paginated ResponseFeed collection — top-level data is the review array, with widget, status, avg_rating, plus links/meta from pagination.
  • 400 widget add-on is inactive.
  • 422 widget not found / unknown unique_id.

Response

200 OK (config only) · 200

{
  "data": {
    "widget": {
      "id": 5,
      "company_id": 456,
      "store_id": 26,
      "widget_text": null,
      "widget_type": "feed",
      "widget_type_id": 1,
      "widget_title": "My Reviews",
      "sub_type": null,
      "unique_id": "abc123",
      "widget_options": {
        "numberOfReviews": 5,
        "reviewSiteValue": {
          "value": 100,
          "label": "hipages"
        }
      },
      "created_at": "2026-06-15T10:30:00.000000Z",
      "updated_at": "2026-06-15T10:30:00.000000Z"
    },
    "status": "success",
    "data": null
  }
}

200 OK (feed) · 200

{
  "data": [
    {
      "id": 1546,
      "source_platform": "hipages",
      "review": {
        "id": 1546,
        "reviewer": "Jane D.",
        "rating": 5,
        "message": "Fantastic service!",
        "review_date": "2026-06-14 12:00:00"
      },
      "reviewsite": {
        "id": 100,
        "name": "hipages",
        "link": "https://hipages.com.au",
        "review_site_logo": "https://s3.amazonaws.com/bucket/logos/hipages.png",
        "review_site_color": "#0f68fa",
        "auth_type": "credentials",
        "scraping_enabled": true,
        "posting_enabled": false
      },
      "store": {
        "id": 26,
        "name": "Demo Store",
        "slug": "demo-store",
        "address": "123 Main St"
      },
      "store_reviewsite": {
        "id": 91,
        "url": "https://hipages.com.au/business/demo",
        "landing_page_url": null,
        "connection_status": "connected",
        "is_connected": true
      },
      "flag": "",
      "plan": "Gold",
      "review_flag": null,
      "is_flaggable": false,
      "flag_status": "none",
      "flag_details": null
    }
  ],
  "widget": {
    "id": 5,
    "company_id": 456,
    "store_id": 26,
    "widget_text": null,
    "widget_type": "feed",
    "widget_type_id": 1,
    "widget_title": "My Reviews",
    "sub_type": null,
    "unique_id": "abc123",
    "widget_options": {
      "numberOfReviews": 5,
      "reviewSiteValue": {
        "value": 100,
        "label": "hipages"
      }
    },
    "created_at": "2026-06-15T10:30:00.000000Z",
    "updated_at": "2026-06-15T10:30:00.000000Z"
  },
  "status": "success",
  "avg_rating": 4.5,
  "links": {
    "first": "?page=1",
    "last": "?page=1",
    "prev": null,
    "next": null
  },
  "meta": {
    "current_page": 1,
    "from": 1,
    "last_page": 1,
    "per_page": 5,
    "to": 1,
    "total": 1
  }
}

400 Bad Request · 400

{
  "message": "You do not have any active widget add-ons. Please add an add-on to your location in order to access the widget features.",
  "status": "error",
  "errors": []
}

Errors

StatusMeaning
400The widget's add-on is inactive
401The bearer token is missing, expired or invalid
422The request failed validation — the response names the fields
500Unexpected server error

Example request

curl --request GET \
  --url "https://production-api.shoutaboutus.com/api/v1/widget?unique_id=abc123&feed_data=0" \
  --header 'Authorization: Bearer <bearer-token>' \
  --header 'Accept: application/json'

Did this page help you?