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 · /connor example

See the contract become an artist site.

Switch between the two public reads and their meaningful UI states. The request inspector, response body, and rendered discography use the exact v1 field shapes without media, private data, or playback.

Try the exact Artist and Catalog shapes, then switch through empty, invalid, missing, rate-limited, and unavailable states. No account or credential is required.

Documentation fixture · no production request

This interactive surface uses local /connor fixture data and performs no network request. It accepts no credential.
Interactive request + rendered resultDocumentation fixture · no live production request

Public artist website fixture

Connor James

@connor · verified

/connor

Multi-instrumentalist, singer/songwriter, and producer.

  1. 01Baby Blue3:07
  2. 02Pretty LiesDuration unavailable
  3. 03Lilacs3:24
Endpoint

GET /api/v1/artists/connor/catalog

200 OKx-request-id: docs-catalog-ready-001
Cache-Control
public, max-age=0, must-revalidate
X-Request-Id
docs-catalog-ready-001
{
  "schema": "casset.public-catalog.v1",
  "artist": {
    "handle": "connor",
    "displayName": "Connor James"
  },
  "tracks": [
    {
      "title": "Baby Blue",
      "kind": "ORIGINAL",
      "durationSec": 187
    },
    {
      "title": "Pretty Lies",
      "kind": "ORIGINAL",
      "durationSec": null
    },
    {
      "title": "Lilacs",
      "kind": "ORIGINAL",
      "durationSec": 204
    }
  ],
  "page": {
    "count": 3
  }
}
Copy as curlshell
curl --include \
  --header "Accept: application/json" \
  --header "X-Request-Id: docs-catalog-ready-001" \
  http://127.0.0.1:3000/api/v1/artists/connor/catalog
Copy as TypeScriptts
async function loadConnor() {
  const response = await fetch("http://127.0.0.1:3000/api/v1/artists/connor/catalog", {
    headers: {
      accept: "application/json",
      "x-request-id": "docs-catalog-ready-001",
    },
  })

  const requestId = response.headers.get("x-request-id")
  const body: unknown = await response.json()

  if (!response.ok) {
    console.error("Casset request failed", {
      requestId,
      kind: "HTTP_" + response.status,
    })
  }

  return { status: response.status, requestId, body }
}

Deployed alpha, not production-supported

The real public v1 GET routes are deployed and unauthenticated, but requests may intentionally fail closed with 503 ResourceUnavailable. No uptime, availability, or production-use commitment is offered. This fixture is not evidence of live-route availability.

What the example proves

  • One public Artist response can render identity, biography, verification, and canonical links.
  • One public Catalog response can render 0–500 Track metadata rows or an honest empty state.
  • Invalid handles fail with InvalidRequest; 404 uses ResourceUnavailable with status === 404.
  • Rate limits and temporary failures keep the request ID visible without logging a response body.
  • No response includes audio, artwork, internal IDs, private handles, credentials, or playback control.

Connect it locally

Run Casset locally, then use the copied request againsthttp://127.0.0.1:3000. The public routes need no credential. If you rehearse the credentialed sandbox counterparts, keep the one-time value in a server or development proxy and never expose it to browser code.

Continue with the endpoint reference, the React adapter, or the generatedHeadless React starter.

© Casset 2026
Trust & PrivacyTerms