API Reference

Playlists

API reference for Playlist endpoints — list, search, and retrieve curated quote collections.

Playlists are curated collections of quotes. They can be community-created or officially curated by the Quote Gallery team. Use these endpoints to browse, search, and fetch the quotes inside a playlist.

List Playlists

GET /api/v1/playlists
ParameterTypeDefaultDescription
searchstringCase-insensitive partial name match
categoriesstringComma-separated category slugs. Matches any (OR logic)
limitnumber20Results per page (max 100)
offsetnumber0Pagination offset
curl -H "X-API-Key: your_api_key_here" \
  "https://quotegallery.nl/api/v1/playlists?search=motivational&limit=5"
{
  "data": [
    {
      "id": "playlist123",
      "name": "Motivational Mornings",
      "description": "Start your day with inspiration",
      "iconUrl": "https://...",
      "bannerUrl": "https://...",
      "categories": ["inspirational", "success"],
      "likeCount": 89,
      "quoteCount": 25,
      "creatorName": "quotefan",
      "isCurated": false
    }
  ],
  "pagination": { "total": 12, "limit": 5, "offset": 0, "hasMore": true }
}
FieldTypeDescription
data[].idstringUnique playlist identifier
data[].namestringDisplay name
data[].descriptionstringTheme or purpose
data[].iconUrlstring | nullIcon image URL
data[].bannerUrlstring | nullBanner image URL
data[].categoriesstring[]Category slugs
data[].likeCountnumberNumber of likes
data[].quoteCountnumberNumber of quotes
data[].creatorNamestringCreator's display name
data[].isCuratedbooleanOfficially curated by Quote Gallery

Get Playlist by ID

Returns a single playlist. Pass include_quotes=true to embed the quotes in the response.

GET /api/v1/playlists/:id
ParameterTypeDefaultDescription
include_quotesbooleanfalseEmbed the playlist's quotes in the response
languagestringPreferred language for quote texts (applies when include_quotes=true)
curl -H "X-API-Key: your_api_key_here" \
  "https://quotegallery.nl/api/v1/playlists/playlist123?include_quotes=true&language=en"
{
  "data": {
    "id": "playlist123",
    "name": "Motivational Mornings",
    "description": "Start your day with inspiration",
    "iconUrl": "https://...",
    "bannerUrl": "https://...",
    "categories": ["inspirational", "success"],
    "likeCount": 89,
    "quoteCount": 25,
    "creatorName": "quotefan",
    "isCurated": false,
    "quotes": [
      {
        "id": "abc123",
        "text": "The only way to do great work is to love what you do.",
        "language": "en",
        "categories": ["wisdom"],
        "likeCount": 42,
        "author": { "id": "xyz789", "name": "Steve Jobs" }
      }
    ]
  }
}

The quotes field is only present when include_quotes=true. Each quote includes id, text, language, categories, likeCount, and author.

StatusDescription
404Playlist ID not found or not publicly visible
401Missing or invalid API key

Examples

Playlist slideshow

Fetch a playlist with quotes and cycle through them:

async function createSlideshow(apiKey, playlistId) {
  const response = await fetch(
    `https://quotegallery.nl/api/v1/playlists/${playlistId}?include_quotes=true&language=en`,
    { headers: { 'X-API-Key': apiKey } }
  )

  const { data: playlist } = await response.json()
  let index = 0

  return {
    name: playlist.name,
    next: () => playlist.quotes[index++ % playlist.quotes.length],
    total: playlist.quotes.length,
  }
}

Feature only curated playlists

The API doesn't filter by isCurated directly, so filter client-side after fetching:

async function getCuratedPlaylists(apiKey) {
  const response = await fetch(
    'https://quotegallery.nl/api/v1/playlists?limit=100',
    { headers: { 'X-API-Key': apiKey } }
  )

  const { data } = await response.json()
  return data.filter((p) => p.isCurated)
}
For a no-code alternative, use the Iframe Embed to display a playlist as an animated slideshow — just pass the playlist_id via embedToken.
Copyright © 2026