본문으로 건너뛰기

플레이리스트

⚠️ 현재 상태(2026-04 기준) — 일부 SDK 메서드가 백엔드와 경로 정렬이 진행 중입니다.

SDK 메서드동작비고
cb.video.addToPlaylist(playlistId, videoId, position?)POST /v1/public/playlists/:playlist_id/items
cb.video.removeFromPlaylist(playlistId, itemId)DELETE /v1/public/playlists/:playlist_id/items/:item_id
cb.video.createPlaylist(channelId, data)❌ 404SDK 가 POST /channels/:channelId/playlists 호출, 백엔드는 POST /v1/public/playlists (body 에 channel_id 포함)
cb.video.getPlaylists(channelId)❌ 404SDK 가 GET /channels/:channelId/playlists 호출, 백엔드는 GET /v1/public/playlists (인증된 본인 목록) 또는 GET /v1/public/playlists/public
cb.video.getPlaylistItems(playlistId)❌ 404백엔드에 별도 items 조회 라우트 없음 — GET /v1/public/playlists/:playlist_id 응답에 items 가 포함됨

비디오 추가 / 제거 (동작 예제)

typescript
// 추가 (마지막 위치)
const item = await cb.video.addToPlaylist('playlist-id', 'video-id')

// 특정 위치에 삽입
await cb.video.addToPlaylist('playlist-id', 'video-id', 3)

// 제거 (item ID 기반)
await cb.video.removeFromPlaylist('playlist-id', item.id)

임시 우회: raw fetch 로 플레이리스트 생성/조회

typescript
// 생성 — body 에 channel_id 포함, 앱 멤버 JWT 필수
await fetch('https://api.connectbase.world/v1/public/playlists', {
  method: 'POST',
  headers: {
    'X-Public-Key': 'cb_pk_...',
    'Authorization': 'Bearer ' + appMemberToken,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    channel_id: 'channel-id',
    title: '내 플레이리스트',
    description: '설명',
    visibility: 'public',
  }),
})

// 단일 플레이리스트 조회 (items 포함)
const res = await fetch('https://api.connectbase.world/v1/public/playlists/playlist-id', {
  headers: { 'X-Public-Key': 'cb_pk_...' },
})
const playlist = await res.json()