API Overview
Pull ReelPlus video performance into your own dashboards and reports. Try every endpoint right now in the public sandbox with the demo key.
Public sandbox, open to everyone. Every endpoint in this reference runs against a demo store at https://help.reelplus.app/api/v1. Get your own key at the Developer Console, or press Send on any endpoint page. Production access for your own store is available on Enterprise plans, on request.
The ReelPlus API answers one question for a store: which videos sell. Every event ReelPlus records on the storefront, from a widget load to an attributed order, is available per video and per widget, so video performance can sit next to Shopify sales and ad spend in the tools your team already uses.
What you can build
- One dashboard. A Looker Studio, Power BI or Google Sheets report with ReelPlus revenue next to Shopify orders and ad spend.
- A weekly digest. The 10 videos with the most revenue this week, posted to Slack or emailed to the content team every Monday.
- Agency reporting. One key per client store, one report across all of them.
Try it in 60 seconds
Get a key
Sign in with GitHub at the Developer Console and click Create key. The key is yours alone: 60 requests per minute and a usage page that shows every call you make.
In a hurry? The shared demo key works without an account and sees the same demo store: rp_653f0a33f2bbf185566e8e9a11651a4fd3cfc5fe10c1694eef4d54b830c2d2cf
Call the summary endpoint
# Replace the key with your own from the console; the shared demo key works too.
curl https://help.reelplus.app/api/v1/analytics/summary \
-H "Authorization: Bearer rp_653f0a33f2bbf185566e8e9a11651a4fd3cfc5fe10c1694eef4d54b830c2d2cf"The response is the whole funnel for the last 30 days (your numbers will differ):
{
"success": true,
"data": {
"impressions": 58700,
"views": 15066,
"clicks": 2046,
"add_to_cart": 478,
"orders": 145,
"revenue": 21563.2,
"ctr": 13.58,
"cvr": 0.96
},
"meta": {
"start_date": "2026-09-29T15:11:25.778Z",
"end_date": "2026-10-29T15:11:25.778Z"
}
}Go one level down
Ask for the 3 videos with the most revenue in the last 30 days:
curl "https://help.reelplus.app/api/v1/analytics/videos?sort_by=revenue&limit=3" \
-H "Authorization: Bearer rp_653f0a33f2bbf185566e8e9a11651a4fd3cfc5fe10c1694eef4d54b830c2d2cf"Every list endpoint takes start_date, end_date, page, limit, sort_by and sort_order. See Video Analytics.
Base URLs
| Environment | Base URL | Key |
|---|---|---|
| Sandbox (demo store) | https://help.reelplus.app/api/v1 | the demo key above |
| Production (your store) | enabled per store on Enterprise plans, on request | generated in Settings > API Access once enabled |
Endpoints
Authentication
Where keys come from and how to send them.
Analytics Summary
The whole funnel for the store in one call: impressions to revenue.
Video Analytics
The same funnel per video, with pagination and sorting.
Widget Analytics
The same funnel per widget, with type filtering.
Storefront API
How the player loads widgets and reports events. Reference only.
Errors & Rate Limits
Status codes, error codes, rate-limit headers and a retry strategy.
Authentication
Every request carries the key as a Bearer token:
Authorization: Bearer rp_your_api_key_hereA missing or malformed header returns 401; a key that does not exist or was revoked returns 403. Details in the Authentication guide.
Rate limits
60 requests per minute per key. Every authenticated response tells you where you stand:
| Header | Description |
|---|---|
X-RateLimit-Limit | Maximum requests per window (60) |
X-RateLimit-Remaining | Remaining requests in the current window |
X-RateLimit-Reset | Unix timestamp when the window resets |
Above the limit the API returns 429 with a Retry-After header. See Errors & Rate Limits.
Response envelope
Every response has the same shape, so one client handles all endpoints:
{
"success": true,
"data": { },
"meta": { "start_date": "2026-09-29T14:00:00.000Z", "end_date": "2026-10-29T14:00:00.000Z" },
"pagination": { "page": 1, "limit": 10, "total_count": 12, "total_pages": 2 }
}pagination is present on list endpoints only. Errors use { "success": false, "error": { "code", "message" } }.