# AIOZ Stream — Playlists

SDK package: @aiozstream/nodejs-client

## Setup

```typescript
import StreamClient from '@aiozstream/nodejs-client'

const client = new StreamClient({
  publicKey: process.env.AIOZ_PUBLIC_KEY,
  secretKey: process.env.AIOZ_SECRET_KEY
})
```

---

## Create Playlist

POST https://api.aiozstream.network/api/playlists/create

```typescript
const result = await client.playlist.createPlaylist({
  name: 'My Playlist',
  tags: ['series', 'tech'],
  metadata: [{ key: 'season', value: '1' }]
})
const playlistId = result.data.playlist.id
```

---

## List Playlists

POST https://api.aiozstream.network/api/playlists

```typescript
const result = await client.playlist.getPlaylists({
  offset: 0,
  limit: 25,
  sortBy: 'created_at',
  orderBy: 'desc',
  search: 'keyword'
})
// result.data.playlists, result.data.total
```

---

## Get Playlist by ID

GET https://api.aiozstream.network/api/playlists/{id}

```typescript
const result = await client.playlist.getPlaylistById(playlistId)
// result.data.playlist: { id, name, item_count, video_items, duration, size }
```

---

## Get Playlist Public Info

GET https://api.aiozstream.network/api/playlists/{id}/player.json

```typescript
const result = await client.playlist.getPlaylistPublicInfo(playlistId)
```

---

## Update Playlist

PATCH https://api.aiozstream.network/api/playlists/{id}

```typescript
await client.playlist.updatePlaylist(playlistId, {
  name: 'Updated Name',
  tags: ['updated'],
  metadata: [{ key: 'key', value: 'value' }]
})
```

---

## Delete Playlist

DELETE https://api.aiozstream.network/api/playlists/{id}

```typescript
await client.playlist.deletePlaylistById(playlistId)
```

---

## Add Video to Playlist

POST https://api.aiozstream.network/api/playlists/{id}/items

```typescript
await client.playlist.addVideoToPlaylist(playlistId, { videoId: 'video_id' })
```

---

## Remove Video from Playlist

DELETE https://api.aiozstream.network/api/playlists/{id}/items/{item_id}

```typescript
await client.playlist.removeVideoFromPlaylist(playlistId, 'item_id')
```

---

## Move Video in Playlist

PUT https://api.aiozstream.network/api/playlists/{id}/items

```typescript
await client.playlist.moveVideoInPlaylist(playlistId, {
  itemId: 'item_id',
  position: 2
})
```

---

## Delete Playlist Thumbnail

DELETE https://api.aiozstream.network/api/playlists/{id}/thumbnail

```typescript
await client.playlist.deletePlaylistThumbnail(playlistId)
```
