Перейти к основному содержимому

Мини-плеер и live-виджет

Мини-плеер и live-виджет поддерживаются в двух форматах:

  1. Web SDK (рекомендуемый и простой путь) — копипастой скрипта в HTML-шаблон.
  2. 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-виджета

  1. На странице товара подключён shopstory-pip и отсутствуют блокирующие оверлеи.
  2. SKU/ID в карточке товара совпадает с тем, что приходит в XML/YML фиде.
  3. Запрос /v2/mini-player/stream по этому SKU/ID возвращает status: 200 и body.playbackLink.
  4. Во время реального эфира /v2/mini-player/online отдаёт body.online, и виджет появляется на странице.
  5. Для мобильного сценария WebView события add-product и open-product обрабатываются нативным слоем.

Далее: