Мини-плеер и live-виджет
Мини-плеер и live-виджет поддерживаются в двух форматах:
- Web SDK (рекомендуемый и простой путь) — копипастой скрипта в HTML-шаблон.
- Public API (дополнительный путь) — для кастомного UI, диагностики и серверного мониторинга.
Рекомендуемый путь: Web SDK (простая интеграция, без API-кода)
Для большинства клиентов mini-player и live-виджет подключаются без ручной API-интеграции.
Достаточно вставить shopstory-pip в HTML-шаблон карточки товара (или в общий шаблон страниц, где нужен виджет):
<!-- Вставляем в конец тега <body> -->
<script
id="shopstory-pip"
type="application/javascript"
src="https://app.shopstory.live/sdk/shopstory-pip-sdk/shopstory-pip-sdk-v1.x.min.js"
crossorigin="anonymous"
charset="utf-8"
async
></script>
Что это даёт:
- скрипт подключает два виджета сразу: mini-player и live-виджет;
- mini-player появляется в карточке товара, если у товара есть стрим/запись;
- при наличии
startTimeв ответе API воспроизведение стартует с релевантного момента по товару; - live-виджет показывается только во время активного эфира;
- скрипт можно размещать на всех страницах, кроме корзины/checkout (рекомендация);
- один из виджетов можно отключить через менеджера/поддержку;
- скрипт загружается
async, без блокировки рендера страницы.
Когда нужен API-путь
API нужен не для базового SDK-сценария, а для:
- кастомной frontend-интеграции (без встроенных SDK-виджетов);
- технической проверки, почему виджет не появился;
- серверного мониторинга live/записей.
Ниже — API-эндпоинты для таких сценариев.
Если задача — быстро добавить mini-player в карточки товара и live-виджет на сайт, используйте только SDK-скрипт. API-путь нужен, когда вы сознательно строите свой интерфейс поверх ShopStory API.
Мини-плеер по товару — GET /v2/mini-player/stream

GET https://app.shopstory.live/v2/mini-player/stream?application=<appId>&productCode=<sku>
Параметры:
| Параметр | Обязательно | Описание |
|---|---|---|
application | ✅ | Идентификатор приложения |
productCode | Нет | SKU/артикул товара |
feedProductId | Нет | ID товара из фида (используйте либо productCode, либо feedProductId) |
feedProductGroupId | Нет | Группа товара из фида (опционально для уточнения) |
Примеры запросов:
GET /v2/mini-player/stream?application=technopark&productCode=184949
GET /v2/mini-player/stream?application=technopark&feedProductId=184949
Пример ответа:
{
"serverTime": "2026-02-24T12:49:20.844Z",
"status": 200,
"body": {
"streamId": "2246",
"streamStatus": "completed",
"productId": "3293529",
"playbackLink": "https://stream.mux.com/wm1JufCzaeEtsm19WqId00zmELkjyAc2kcGqIXwlcvv4.m3u8",
"feedProductId": "184949"
}
}
playbackLink используйте для открытия плеера, streamStatus показывает состояние найденного стрима (online или completed).
Поле startTime (если присутствует) задаёт смещение в секундах для старта VOD с нужного момента.
Реальные варианты ответа:
- HTTP
200+status: 200, когда стрим найден. - HTTP
400+status: 400, если не передан ниproductCode, ниfeedProductId. - HTTP
404+status: 404, если для товара нет подходящего стрима.
Любой live — GET /v2/mini-player/online
Получить любую актуальную live-трансляцию для виджета «Сейчас в эфире»:
GET https://app.shopstory.live/v2/mini-player/online?application=<appId>
Если live-стрим есть, в body.online приходит объект трансляции. Если live нет, API возвращает пустой body.
{
"serverTime": "2026-02-24T12:49:22.330Z",
"status": 200,
"body": {}
}
Быстрый статус — GET /v3/translation/quick-state
Используйте для дешёвого поллинга UI:
GET https://app.shopstory.live/v3/translation/quick-state?translationId=<streamId>
Ответ:
{
"status": 200,
"serverTime": "2026-02-24T12:49:22.846453876Z",
"body": {
"translationState": "completed",
"translationId": "2017",
"expires": "2026-02-24T15:49:37.846437022+03:00"
}
}
translationState может принимать значения: draft, confirmed, online, completed, ''.
Эндпоинт quick-state публичный, поэтому applicationId не требуется. Если вы участвуете в бете токенов, можно добавить заголовок Authorization: Bearer ... — клиент автоматически сопоставится.
Чек-лист проверки mini-player и live-виджета
- На странице товара подключён
shopstory-pipи отсутствуют блокирующие оверлеи. - SKU/ID в карточке товара совпадает с тем, что приходит в XML/YML фиде.
- Запрос
/v2/mini-player/streamпо этому SKU/ID возвращаетstatus: 200иbody.playbackLink. - Во время реального эфира
/v2/mini-player/onlineотдаётbody.online, и виджет появляется на странице. - Для мобильного сценария WebView события
add-productиopen-productобрабатываются нативным слоем.
Далее: