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

Expose enough context to build. Keep the artist boundary intact.

Headless exists so public music identity can travel into developer-owned software without turning Casset's database, playback engine, or private artist world into a general-purpose backend.

The API is intentionally smaller than the product. That is the feature: a public artist and Catalog contract that a developer can understand, validate, mock, and handle without inheriting Casset's internal runtime.

Principles

Headless API principles
PrincipleWhat it means in the current implementation
VersionedRoutes and response bodies carry explicit v1 identifiers.
MinimalTwo reads expose only bounded public identity and Track metadata.
ExplicitEmpty, unavailable, retryable, and terminal states are represented directly.
Read-firstThe client and public routes are GET-only. No public write contract exists.
Privacy-preservingPrivate, unpublished, and unknown artists are indistinguishable; internal IDs and raw media never serialize.
DeterministicStrict parsers, exact mocks, fixed limits, and an immutable starter reduce ambiguity.
TypedResponses, errors, client methods, and React query states are expressed in TypeScript.
Stable within a pinOne package/starter version is exact and reproducible. Compatibility across alpha bumps is not promised.
Framework-neutralThe core client has no React or application-framework dependency; React is a separate optional adapter.

Why Headless exists

Native Casset Apps make a Profile World more expressive inside Casset. Headless makes a small amount of public Casset context useful outside it. The split prevents an external website from pretending to be an installed App, and prevents a native App from becoming a generic escape hatch around the Artist Runtime.

Why the boundary is read-only

  • Publishing and privacy remain Casset decisions, not caller-supplied flags.
  • Playback remains on the canonical Casset clock with one MediaFooter.
  • Raw media and private state are not converted into durable external capabilities.
  • Developers can own presentation without owning Casset's internal state transitions.

Why strict parsing

Accepting unknown fields would make accidental disclosure and silent contract drift harder to see. The SDK rejects extra nested fields, invalid links, mismatched counts, unknown error codes, and request-ID disagreement. A client either understands the entire response or fails closed.

Why REST, not GraphQL

The current product has two bounded public read shapes. Versioned REST routes make caching, privacy review, rate limiting, mocks, and strict parsing visible with little client machinery. This is a decision about the existing small surface, not a claim about every future Casset integration.

Honest alpha

Deployment is not production support

The routes, SDK, React adapter, exact mocks, sandbox credentials, signed webhook rehearsal, and generated starter exist. The two unauthenticated public GET routes are deployed, but supported production operation, uptime, availability, developer credentials, durable webhooks, npm publication, and third-party App admission do not. Requests may intentionally fail closed with 503 ResourceUnavailable.

The promise

Developers should be able to answer five questions from the contract alone: what data is public, what is absent, what failed, whether retrying is safe, and which request ID can correlate the result. Anything beyond that stays inside Casset until it has an equally explicit public boundary.

© Casset 2026
Trust & PrivacyTerms