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.