Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.slideless.ai/llms.txt

Use this file to discover all available pages before exploring further.

For most use cases, the slideless CLI is easier than calling this endpoint directly. The CLI command equivalent is slideless search [query] (or slideless search --json).

When to use

Enumerate public marketplace listings — for a catalog page, a picker, or an agent browsing for a listing. Only public listings are returned; unlisted listings never appear here (fetch them by slug via GET /getMarketplaceListing). This endpoint is public — no API key — and its responses are cached.

Endpoint

GET https://europe-west1-slideless-ai.cloudfunctions.net/listMarketplaceListings

Auth

None. Do not send an Authorization header.

Query parameters

All optional.
ParamTypeDescription
kindpresentation | app | planFilter by listing kind.
interactivebooleanFilter to interactive (true) or static (false) listings only.
categorystringFilter by category bucket.
tagstringFilter by a single search tag.
stackstringFilter to listings whose tech stack includes this technology (e.g. nextjs).
sortrecent | popular | starsOrder — newest, most-remixed, most-starred. Default recent.
limitnumberPage size. Default 20, max 100.
cursorstringOpaque pagination cursor from a previous response’s nextCursor.

Response (200)

{
  "success": true,
  "data": {
    "listings": [
      {
        "slug": "q4-pitch-template",
        "title": "Q4 Pitch Template",
        "description": "Investor-ready pitch skeleton — 8 slides, placeholder copy.",
        "kind": "presentation",
        "interactive": false,
        "category": "business",
        "tags": ["pitch", "startup", "investor"],
        "techStack": ["html", "css"],
        "status": "public",
        "version": 3,
        "stars": 128,
        "remixCount": 540,
        "viewCount": 3120,
        "remixedFromSlug": null,
        "remixedFromTitle": null,
        "createdAt": "2026-04-15T10:00:00.000Z",
        "updatedAt": "2026-04-18T15:30:00.000Z",
        "marketplaceUrl": "https://slideless.ai/marketplace/q4-pitch-template"
      }
    ],
    "nextCursor": "eyJvIjoyMH0"
  }
}
FieldTypeDescription
slugstringThe listing’s permanent id.
title, descriptionstringDisplay metadata.
kind"presentation" | "app" | "plan"The listing’s purpose. See The three kinds.
interactivebooleanWhether the listing is interactive. A badge, not a category — always true for app.
categorystring | nullCategory bucket.
tagsstring[]Search tags.
techStackstring[]Technologies the listing is built with or built for. Free-form lowercase technology slugs (e.g. nextjs, firebase). May be empty.
status"public"Always public in this endpoint’s results.
versionnumberThe pinned source version.
starsnumberPublic star count.
remixCountnumberNumber of times the listing has been remixed.
viewCountnumberNumber of times the listing’s page has been opened on the marketplace site.
remixedFromSlugstring | nullSource listing’s slug if this listing was published from a remixed deck; otherwise null. See Remix lineage.
remixedFromTitlestring | nullSource listing’s title, or null.
createdAt, updatedAtISO 8601 stringTimestamps.
marketplaceUrlstringThe public website URL.
nextCursorstring | nullPass as cursor for the next page, or null when exhausted.

Examples

curl

curl -sS "https://europe-west1-slideless-ai.cloudfunctions.net/listMarketplaceListings?kind=presentation&sort=popular&limit=20"

# filter plan listings by tech stack
curl -sS "https://europe-west1-slideless-ai.cloudfunctions.net/listMarketplaceListings?kind=plan&stack=nextjs"

Node.js

const params = new URLSearchParams({ kind: 'presentation', sort: 'popular', limit: '20' });
const res = await fetch(
  `https://europe-west1-slideless-ai.cloudfunctions.net/listMarketplaceListings?${params}`
);

const { data } = await res.json();
for (const l of data.listings) {
  console.log(`${l.slug} — ${l.title} — ★${l.stars} — ${l.remixCount} remixes`);
}

Errors

StatusCodeCauseFix
400invalid-argumentBad sort/kind value or limit out of rangeUse a documented enum value; limit ≤ 100
405method-not-allowedUsed POST/PUT/etc.Use GET
500internalBackend errorRetry with backoff

Next