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 · Alpha

Build with Casset artist data.

Fetch an artist and their public Catalog with two simple endpoints. Build the frontend in any framework.

Use Headless when you own the website, tool, or service. It provides public artist identity and active Catalog metadata. If the experience should live inside an artist's Profile World, build a reviewed Casset App instead.

Choose your path

  • I want public artist data. Download the mocked starter and get a page running.
  • I want to build inside Casset. Start with the reviewed Casset Apps model.
  • I need the full technical reference. See every field, status, header, and cache rule.

Get something working

The generated React starter opens against the exact built-in SDK mock. It needs no Casset account, credential, or production request.

curl -LO https://casset.fm/downloads/casset-api/casset-headless-react-v0.2.0-alpha.0.zip
unzip casset-headless-react-v0.2.0-alpha.0.zip
cd casset-headless-react
pnpm install
pnpm dev

Against a local Casset server, the same client reads the public/connor Artist and Catalog shapes:

import { createCassetClient } from "@casset/apps"

const casset = createCassetClient({
  baseUrl: "http://127.0.0.1:3000",
})

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

Current availability

The two public v1 GET routes are deployed and require no credential, but they are not supported for production use. Requests may intentionally fail closed with 503 ResourceUnavailable. No uptime, availability, or production-use commitment is offered. Use exact mocks or a local Casset origin for reliable evaluation.

What works today

  • GET /api/v1/artists/[handle] returns bounded public identity and canonical links.
  • GET /api/v1/artists/[handle]/catalog returns up to 500 active Track titles, kinds, and durations in one page.
  • @casset/apps provides strict parsing, a TypeScript client, request IDs, timeouts, bounded GET retries, typed errors, and exact mocks.
  • @casset/react adds providers and query hooks when the frontend uses React.
  • The generated React starter runs exact mocks by default and can proxy a local sandbox credential from its development server.

What can I build?

  • Artist websites, metadata-only discographies, and portfolio embeds.
  • Static pages and public-data tools built from artist identity and Track metadata.
  • Read-only agent context that cites the artist's canonical Profile World.

What is unavailable?

Headless does not expose database IDs, private profiles, unreleased Tracks, fan identity, commerce state, artwork or audio URLs, credentials, raw theme data, playback state, lyrics, tour dates, analytics, or runtime functions. Unknown, private, and unpublished artists produce the same 404. Production credentials and production webhook delivery are unavailable.

How the pieces fit

                            Casset source of truth
                                      │
                 ┌────────────────────┴────────────────────┐
                 │                                         │
        Build inside Casset                       Build beyond Casset
                 │                                         │
          Native Casset App                       Headless API v1
                 │                                         │
          Artist Runtime                          @casset/apps
                 │                                         │
   Profile World + MediaFooter                    @casset/react (optional)
                 │                                         │
      Casset owns playback                    Developer application

Casset controls: publication, public data selection, privacy, schema validation
Developer controls: external UI, hosting, caching, application behavior
Authentication: Native host grants inside Casset · public v1 none · sandbox Bearer on loopback only
Availability: Native reviewed runtime is private production · Headless v1 is deployed but unsupported for production use
Never delegated: private artist data, raw media, playback clock, native App grants

The products are complementary, not a serial stack. Native Apps enter the Artist Runtime. Headless reads a separate public boundary. The React adapter sits over the framework-neutral client; it is optional and does not change the HTTP contract.

Headless API or Casset Apps?

Native Casset Apps compared with the Headless API
Native Casset AppsHeadless API
Mental modelBuild inside CassetBuild beyond Casset
SurfaceAn installed experience inside a Profile WorldA developer-owned website, service, tool, or agent
DataHost-approved Profile and Track Runtime contextPublished public artist identity and Catalog metadata
PlaybackObserved through Casset’s host-owned runtimeNo playback authority and no media URLs
FrontendHosted and framed by CassetOwned and deployed by the developer
Best forProfile experiences, visualizers, games, collector experiences around existing Casset purchases, artist-native extensionsArtist sites, discographies, portfolio embeds, public-data tools, read-only agent context
AvailabilityReviewed first-party runtime is Production / privateDeployed alpha; unsupported for production use and may fail closed with 503

Availability at a glance

Headless capability availability
CapabilityStatusTruth
Public artist identityDeployed / unsupported alphaThe versioned, unauthenticated public identity route is deployed but is not available for supported production use; it may fail closed with 503 RESOURCE_UNAVAILABLE, with no uptime or availability commitment.
Public catalogDeployed / unsupported alphaThe versioned, unauthenticated public Catalog route is deployed but is not available for supported production use; it may fail closed with 503 RESOURCE_UNAVAILABLE, with no uptime or availability commitment.
Framework-neutral TypeScript SDKSource + local sandboxRepository-local contracts, parsers, typed errors, and HTTP client; not published to npm.
React adapterSource + local sandboxRepository-local React bindings over the framework-neutral client.
Sandbox webhooksSource + local sandboxDevelopment-only signed delivery, retry, idempotency, and replay rehearsal.
Production developer credentialsUnavailablePer-developer production issuance, persistence, grants, and revocation are unavailable.
Production App webhooksUnavailableDurable production subscriptions, delivery, replay, and audit history are unavailable.
Private artist dataUnavailablePrivate profiles, unreleased media, fan identity, and commerce data are not exposed.

Where to go next

  • Examples — try the /connor Artist and Catalog states without a network request.
  • Use cases — check whether the current public fields fit your idea.
  • SDK and React adapter — connect the typed client.
  • Errors, retries, and safe logging — design failure handling.
  • Availability & limitations — read the complete alpha boundary.
© Casset 2026
Trust & PrivacyTerms