casset/docs
FeaturesOpen app
docs indexreference
00Overview01Thesis02Architecture03System reality04Roadmap05Investor brief06Technical brief07Full tech HTML08Casset Apps09Headless API10Playback11Audio pipeline12Commerce13Base anchoring14Hook system15Music video16Theming17Creator guide18Glossary
Headless APIDeployed · unsupported
QuickstartExamplesAPI ReferenceSDK
Advanced
React adapterStarter detailsError handlingRetries & timeoutsUse casesRequest IDs & safe loggingAPI versioningLocal sandboxLocal webhooksAvailability & limitationsFAQChangelogDesign principles
Headless API · Use cases

What can I build with public artist data?

Start with an artist website, metadata-only discography, portfolio embed, static page, or public-data tool.

Headless fits when you own the frontend and need public artist identity or Catalog metadata. It does not provide media, lyrics, tour dates, analytics, fan data, private data, or playback.

Start with an artist website

Read /connor on your server, map only the public response fields, and render an explicit unavailable state.

export async function loadConnorPage() {
  const [artist, catalog] = await Promise.all([
    casset.getArtist("connor"),
    casset.getCatalog("connor"),
  ])

  return {
    title: artist.artist.displayName,
    bio: artist.artist.bio,
    profileUrl: artist.links.profile,
    tracks: catalog.tracks.map(({ title, kind, durationSec }) => ({
      title,
      kind,
      durationSec,
    })),
  }
}
  • Available: public bio, verified state, Profile World link, and metadata-only Track list.
  • Unavailable: cover art, streaming, raw audio, lyrics, social counts, fan identity, and commerce.

Fit matrix

Headless API integration fit
Use caseFit todayWhat Casset v1 suppliesWhat you must supplyWhy not a Native App?
Artist websiteGood contract fit; evaluation onlyPublic name, handle, biography, verified state, and Track metadataLayout, hosting, media, links, SEO, and deploymentThe site owns its URL and application lifecycle outside Casset.
Tour micrositePartialArtist identity and Catalog contextTour dates, venues, ticket links, media, and launch operationsThe tour site is an external destination; a Native App belongs inside the Profile World.
Launch micrositePartialPublic artist identity and active Track metadataRelease timing, campaign data, media, commerce, and launch stateThe developer owns the launch URL and presentation outside Casset.
Interactive discographyGood metadata fitOrdered active Track titles, ORIGINAL / GENERATION kind, and durationArtwork, audio, release grouping, filters, and playbackUse Native Apps only when the experience must live inside Casset and observe its runtime.
Lyrics explorerUnavailable from v1 aloneNo lyric fieldAll lyric content, timing, rights, and playbackHeadless is the right external model, but the current contract is insufficient. Native App status does not make Headless lyrics exist.
Fan dashboardUnavailableNo fan identity or engagement dataFans, accounts, events, metrics, and authorizationA dashboard is external, but Casset deliberately does not expose the required private data.
Internal dashboardLimited public-data fitPublic identity and Catalog metadata onlyPrivate operations, account data, moderation, or analyticsUse Headless only for a public-data review tool; product-internal routes are not a supported external API.
Analytics dashboardUnavailableNo analytics or event metricsAll measurement data and calculationsNeither Headless access nor Native App installation grants analytics data.
AI agentLimited read-only fitPublic artist identity and Catalog metadataAgent orchestration, storage, decisions, citations, and any private authorizationAn external agent is not an installed Profile World experience. The private operator Agent API is not a developer credential.
Portfolio embedGood metadata fitArtist identity and Track listEmbed shell, responsive layout, media, and host-site policyThe portfolio owns the embedding page outside Casset.
Static siteGood contract fit; unsupported alphaDeterministic public JSON for build-time renderingBuild pipeline, caching, hosting, and fallback dataStatic output has no Artist Runtime and should not pretend to be a native App.

Production gate

“Good fit” describes the data and architecture, not deployment readiness. The public v1 GET routes are deployed and unauthenticated, but they are not available for supported production use and may intentionally fail closed with 503 ResourceUnavailable. No uptime, availability, or production-use commitment is offered. Production sites must not depend on casset.fm/api/v1 in this alpha.

Interactive discography

v1 can drive sorting or presentation over one bounded list, but it exposes no filter API and no release grouping. With at most 500 Tracks, any client-side filtering is your application behavior, not a Headless query feature.

const catalog = await casset.getCatalog("connor")

const originals = catalog.tracks.filter((track) => track.kind === "ORIGINAL")
const generations = catalog.tracks.filter((track) => track.kind === "GENERATION")

Static site or portfolio embed

The contract is deterministic enough for build-time rendering, but the deployed alpha endpoint is not supported for production use and may return the intentional fail-closed 503 state. Use exact mocks for evaluation. Do not design a production cache around availability Casset does not currently promise.

Tour or launch microsite

Use Headless only for the artist and Catalog portion. Keep schedules, ticket links, release dates, campaign state, artwork, and media in a separate source you control. Never label those fields as Casset data.

Internal public-data tool

A read-only QA or catalog browser can use Headless. An admin dashboard cannot: Studio, commerce, room, and product-internal routes are cookie-authenticated implementation details, not third-party contracts.

AI agent

An agent may summarize only the returned public identity and Track metadata. It cannot infer usage rights, private releases, fan data, provenance beyond the Track kind, or permission to play, download, remix, train on, or publish media.

const artist = await casset.getArtist("connor")
const catalog = await casset.getCatalog("connor")

const publicContext = {
  artist: artist.artist,
  tracks: catalog.tracks,
  source: artist.links.profile,
}

// Give the agent publicContext only.
// Do not add credentials, internal records, or inferred permissions.

When to stop

  • Stop if the product requires private or unpublished artist data.
  • Stop if it needs audio, artwork URLs, lyrics, fans, analytics, commerce, or playback.
  • Stop if it requires production credentials or durable production webhooks.
  • Choose a Native App only when the intended surface is inside Casset and the reviewed host contract supplies the needed context.
© Casset 2026
Trust & PrivacyTerms