API ReferenceStorefront API
Storefront API
App Proxy endpoints for widget rendering, data fetching, and analytics tracking on your live store.
For storefront use only. These endpoints are authenticated via Shopify's HMAC verification (no API key needed). They are called automatically by the ReelPlus widget loader. For programmatic data access, use the Analytics API.
Query Parameters
location*string
Current page type on the storefront.
Value in
"home" | "product" | "collection" | "page" | "other"product_id?string
Shopify Product GID (for product pages).
product_handle?string
Product handle (alternative to product_id).
collection_id?string
Shopify Collection GID.
widget_id?string
Load a specific widget by ID (snippet mode).
widget_ids?string
Comma-separated widget IDs for batch loading.
v?string
Version string for cache validation.
Response Body
application/json
curl -X GET "https://production.reelplus.app/apps/reelplus_sub/contextual-widgets?location=home"{
"location": "string",
"context": {
"productId": "string",
"collectionId": "string",
"pageHandle": "string"
},
"version": "string",
"timestamp": "2019-08-24T14:15:22Z",
"removeBranding": true,
"widgets": [
{
"id": "string",
"type": "carousel",
"title": "string",
"status": "string",
"priority": 0,
"viewStyle": "string",
"clickBehavior": "string",
"modalLayout": "string",
"videos": [
{
"id": "string",
"title": "string",
"thumbnail": "string",
"videoUrl": "string",
"miniVersionUrl": "string",
"duration": 0,
"order": 0,
"viewCount": "string",
"products": [
{
"id": "string",
"title": "string",
"handle": "string",
"image": "string",
"url": "string"
}
],
"hasProducts": true
}
]
}
]
}Query Parameters
id*string
Widget ID.
location?string
Page type for display rule check.
Response Body
application/json
curl -X GET "https://production.reelplus.app/apps/reelplus_sub/widget-by-id?id=string"{
"success": true,
"widget": {
"id": "string",
"type": "carousel",
"title": "string",
"status": "string",
"priority": 0,
"viewStyle": "string",
"clickBehavior": "string",
"modalLayout": "string",
"videos": [
{
"id": "string",
"title": "string",
"thumbnail": "string",
"videoUrl": "string",
"miniVersionUrl": "string",
"duration": 0,
"order": 0,
"viewCount": "string",
"products": [
{
"id": "string",
"title": "string",
"handle": "string",
"image": "string",
"url": "string"
}
],
"hasProducts": true
}
]
}
}Empty
Empty
Empty
Query Parameters
type*string
Widget type to filter.
Value in
"carousel" | "story" | "productpage"Response Body
application/json
curl -X GET "https://production.reelplus.app/apps/reelplus_sub/widgets-list?type=carousel"{
"success": true,
"widgets": [
{
"id": "string",
"title": "string",
"type": "string",
"status": "string",
"sourceType": "string",
"videoCount": 0,
"createdAt": "2019-08-24T14:15:22Z"
}
],
"count": 0
}Request Body
application/json
eventType*string
Value in
"impression" | "view" | "click" | "add_to_cart" | "checkout_completed"sessionId?string
customerId?string
videoId?string
widgetId?string
attributionType?string
Value in
"direct" | "influenced"timestamp?string
Format
date-timeResponse Body
application/json
curl -X POST "https://production.reelplus.app/apps/reelplus_sub/analytics" \ -H "Content-Type: application/json" \ -d '{ "eventType": "impression" }'{
"success": true,
"message": "string",
"timestamp": "2019-08-24T14:15:22Z"
}