> For the complete documentation index, see [llms.txt](https://docs.hello-lisa.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.hello-lisa.com/developers/guides/player-communication/message-api-reference/products/products-request-hydration.md).

# Products — Request Hydration

The LiSA Player sends a **Request Hydration** message when it needs current price and availability for the products of the media item it is about to show.

A show is authored ahead of time. By the time a visitor watches it — especially a replay — a product may have gone on sale, changed price or sold out. The player cannot know any of that: only the host app can see the merchant's live catalogue. This message asks for it.

{% hint style="info" %}
The player sends this as soon as a media item loads, which is usually before any product is on screen. Answer it whenever you can; the player holds the result until it has something to render.
{% endhint %}

Reply with a [Products — Hydrate](/developers/guides/player-communication/message-api-reference/products/products-hydrate.md) message.

### Properties

Along with all standard [Message properties](/developers/guides/player-communication/message-api-reference.md#properties), a **Request Hydration** message includes the following additional properties:

<table><thead><tr><th width="243" valign="top">Name</th><th width="192" valign="top">Type</th><th valign="top">Description</th></tr></thead><tbody><tr><td valign="top"><code>mediaItemId</code></td><td valign="top"><pre><code>String
</code></pre><p>Required.</p></td><td valign="top">The <code>mediaItemId</code> property uniquely identifies the Media Item from which this message originates.</td></tr><tr><td valign="top"><code>mediaItemType</code></td><td valign="top"><pre><code>MediaItemType
</code></pre><p>Required.</p></td><td valign="top">The <code>mediaItemType</code> property specifies the type of Media Item from which this message originates.<br><br>Refer to <code>MediaItemType</code> for detailed information.</td></tr><tr><td valign="top"><code>messageType</code></td><td valign="top"><pre><code>Literal
</code></pre><p>Required.</p></td><td valign="top"><code>lsc:products:request-hydration</code></td></tr><tr><td valign="top"><code>productReferences</code></td><td valign="top"><pre><code>Array&#x3C;String>
</code></pre><p>Required.</p></td><td valign="top">The merchant product references the player wants refreshed, as supplied to LiSA when the products were created.<br><br>Never empty. The player omits references it has already asked about in this session, so the array may be shorter than the media item's full product list.</td></tr><tr><td valign="top"><code>progress</code></td><td valign="top"><pre><code>MediaProgress
</code></pre><p>Required.</p></td><td valign="top">The <code>progress</code> property is an object that holds additional metadata related to the media playback progress of the current media item.<br><br>Please refer to <a href="/developers/guides/player-communication/message-api-reference/media.md#media-progress"><code>MediaProgress</code></a> for detailed information.</td></tr></tbody></table>

{% hint style="warning" %}
This is a control message rather than an analytics event. It carries no legacy LiSA Player V1 properties, and LiSA Player V1 never sends it.
{% endhint %}

***

### Type Definition

```typescript
interface ProductsRequestHydrationMessage extends Omit<Message, 'messageType' | 'sender'> {
  mediaItemId: string;
  mediaItemType: MediaItemType;
  messageType: 'lsc:products:request-hydration';
  productReferences: Array<string>;
  progress: MediaProgress;
}
```

### Example

```json
{
  "messageType": "lsc:products:request-hydration",
  "sender": "LiSA",
  "messageId": "c9d0e1f2-a3b4-4c5d-9e6f-8091a2b3c4d5",
  "mediaItemId": "9f333331-45cb-4289-8bcd-9023c1871111",
  "mediaItemType": "replay",
  "productReferences": ["SKU-1234", "SKU-5678"]
}
```
