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
Authorizationheader.
Base URL
| Environment | URL |
|---|---|
| Production | https://production-api.shoutaboutus.com |
| Development | https://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_idfails validation with 422.
Rate limit
- No rate limit.
Query parameters
| Field | Type | Required | Description |
|---|---|---|---|
unique_id | string | Required | Must be an existing widget. |
feed_data | integer | Optional | 0 or 1. 1 returns the paginated review feed + avg_rating. |
limit | integer | Optional | Feed page size, 10–100 (values below 10 are raised to 10); when omitted, defaults to the widget's numberOfReviews setting. |
How it works
-
- Config only (
feed_dataomitted/0):{ "data": { "widget": {. }, "status": "success", "data": null } }.
- Config only (
-
- Feed (
feed_data=1): a paginatedResponseFeedcollection — top-leveldatais the review array, withwidget,status,avg_rating, pluslinks/metafrom pagination.
- Feed (
- 400 widget add-on is inactive.
- 422 widget not found / unknown
unique_id.
Response
200 OK (config only) · 200
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
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
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
| Status | Meaning |
|---|---|
400 | The widget's add-on is inactive |
401 | The bearer token is missing, expired or invalid |
422 | The request failed validation — the response names the fields |
500 | Unexpected 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'Updated 10 days ago
Did this page help you?
