> 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/media-item.md).

# Media Item

The LiSA Player communicates key events related to the current media item by dispatching various messages:

* **Creator Join** — Notifies when a creator enters a live stream.
* **Creator Leave** — Notifies when a creator exists a live stream.
* [**Emoji**](/developers/guides/player-communication/message-api-reference/media-item/media-item-emoji.md) — Captures user reactions through emoji interactions.
* [**Impression**](/developers/guides/player-communication/message-api-reference/media-item/media-item-impression.md) — Indicates when a media item has been viewed.

This message is sent by the LiSA Player to the host app / environment.

### Properties

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

<table><thead><tr><th width="220" valign="top">Name</th><th width="175" 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 <a href="/pages/TzMvWg0wtnzBMpFfvyoN#media-item-type"><code>MediaItemType</code></a> 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">The <code>messageType</code> property specifies the distinct type of message.</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="/pages/rMD8D7mCXjBlgew5J7ms#media-progress"><code>MediaProgress</code></a> for detailed information.</td></tr></tbody></table>

***

### Type Definition

```typescript
interface MediaItemMessage extends Omit<
  Message,
  'messageType' | 'sender'
> {

  mediaItemId: string;
  mediaItemType: MediaItemType;
  messageType:
    | 'lsc:media:creator:join'
    | 'lsc:media:creator:leave'
    | 'lsc:media:emoji'
    | 'lsc:media:impression';
  progress: MediaProgress;
  sender: 'LiSA';
}
```

### Type Definitions

#### Media Item Type

The `MediaItemType` property is an enum that defines the type of media item. It helps differentiate between live content, recorded replays, and short-form media.

* `live` – A real-time live stream with an undefined duration (`durationInMs = -1`).
* `replay` – A recorded playback of a previous live stream with a fixed duration.
* `story` – A short-form media item, typically with a defined duration and limited availability.

<pre class="language-typescript"><code class="lang-typescript"><strong>type MediaItemType = 'live' | 'replay' | 'story';
</strong></code></pre>
