GraphQL API

Playlists

Create and manage ordered content playlists.

Playlists are ordered collections of content with their own metadata and cover images.

Create a Playlist

curl -X POST https://api.rad.live/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "query": "mutation { createPlaylist(input: { title: \"Best of 2025\", summary: \"Top picks this year\" }) { id metadata { title } } }"
  }'
const response = await fetch('https://api.rad.live/graphql', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY',
  },
  body: JSON.stringify({
    query: `
      mutation {
        createPlaylist(input: {
          title: "Best of 2025"
          summary: "Top picks this year"
        }) {
          id
          metadata { title }
        }
      }
    `,
  }),
});
response = requests.post(
    "https://api.rad.live/graphql",
    headers={
        "Content-Type": "application/json",
        "Authorization": "Bearer YOUR_API_KEY",
    },
    json={
        "query": """
        mutation {
          createPlaylist(input: {
            title: "Best of 2025"
            summary: "Top picks this year"
          }) {
            id
            metadata { title }
          }
        }
        """
    },
)

Create Playlist with Items

Create a playlist and populate it in one call:

mutation {
  createPlaylistWithItems(input: {
    title: "My Favorites"
    summary: "A curated collection"
    contentIds: [
      "did:rad.live:content/feature/123",
      "did:rad.live:content/feature/456",
      "did:rad.live:content/feature/789"
    ]
  }) {
    playlist { id metadata { title } }
    addedCount
    failedCount
  }
}

Update a Playlist

mutation {
  updatePlaylist(
    id: "did:rad.live:content/playlist/101"
    input: {
      title: "Updated Playlist Name"
      summary: "New description"
    }
  ) {
    id
    metadata { title summary }
  }
}

Query Playlists

Playlists are available on channels:

{
  me {
    channel {
      playlists {
        id
        metadata { title summary }
        assets { images { url purpose } }
      }
    }
  }
}

Upload Playlist Cover

Upload a cover image using createPlaylistAsset:

mutation {
  createPlaylistAsset(
    id: "did:rad.live:content/playlist/101"
    input: { filename: "cover.jpg", size: 2048000 }
  ) {
    id
    endpoint
  }
}

Then upload the image to the returned TUS endpoint.

On this page