CUBSTER Join the waitlist
DOCS / API

REST reference

Cubster is an agent-first platform: the SDK and CLI are conveniences over one plain REST API. All responses are JSON unless serving file bytes; errors are { "error": "..." } with a matching HTTP status. Base URL: https://app.cubster.dev.

For agents

Keys are plain bearer tokens and the API is plain REST — anything that can make an HTTP request can upload. No SDK or CLI required.

$ curl -X POST https://app.cubster.dev/api/v1/uploads \
  -H "Authorization: Bearer $CUBSTER_API_KEY" \
  -F "file=@hero.png"
Endpoints
GET /api/v1/me Session-or-key bootstrap: profile + workspace
PATCH /api/v1/me Update your profile (session only)
POST /api/v1/api-keys Create a key (session only) — returns the secret once
GET /api/v1/api-keys List keys (prefixes only)
DELETE /api/v1/api-keys/:id Revoke a key
GET /api/v1/services The service registry a key can be scoped to (session or key)
GET /api/v1/workspaces List your workspaces, with usage
POST /api/v1/workspaces Create a workspace
PATCH /api/v1/workspaces/:id Rename a workspace you own
DELETE /api/v1/workspaces/:id Delete a workspace you own
POST /api/v1/uploads Direct upload (session or key), multipart/form-data
POST /api/v1/uploads/chunked Begin a chunked upload for long audio (key, transcription service)
PUT /api/v1/uploads/chunked/:uploadId/parts/:index Upload one byte-range part of a chunked upload
POST /api/v1/uploads/chunked/:uploadId/complete Reassemble + verify a chunked upload, insert a pending transcript
POST /api/v1/uploads/grant Mint a client-upload grant (key only)
POST /api/v1/uploads/client The grant target — grant-authed upload
GET /api/v1/assets List assets (type, search, tags, limit)
GET /api/v1/assets/:id Asset detail
PATCH /api/v1/assets/:id Update displayName / tags
DELETE /api/v1/assets/:id Delete an asset
POST /api/v1/transcribe Upload audio (multipart, up to 4 MB) and transcribe it
GET /api/v1/transcripts List transcripts (status, limit)
GET /api/v1/transcripts/:id Transcript detail, including words
DELETE /api/v1/transcripts/:id Delete a transcript and its audio asset
POST /api/v1/transcripts/:id/retry Retry a pending/failed transcript
POST /api/v1/diagrams Publish a new diagram (session or key with diagrams)
GET /api/v1/diagrams List diagrams (kind, tag, q, includeArchived)
GET /api/v1/diagrams/:slug Fetch a diagram (?version=N for an older one)
PUT /api/v1/diagrams/:slug Publish a new version
POST /api/v1/diagrams/:slug/archive Reversibly hide a diagram (no DELETE exists)
POST /api/v1/diagrams/:slug/unarchive Restore an archived diagram
POST /api/v1/diagrams/preview Validate + rasterize an SVG fragment; publishes nothing
POST /api/v1/diagrams/layout Dagre coordinates for a node/edge graph; writes nothing
GET /api/v1/diagrams/vocabulary The diagram class/modifier/typography vocabulary
POST /api/v1/diagrams/:slug/visibility Session only — change visibility, 403 for a key
POST /api/v1/artifacts Publish a new artifact (session or key with artifacts)
GET /api/v1/artifacts List artifacts (tag, q, includeArchived)
GET /api/v1/artifacts/:slug Fetch an artifact (?version=N for an older one)
PUT /api/v1/artifacts/:slug Publish a new version
POST /api/v1/artifacts/:slug/archive Reversibly hide an artifact (no DELETE exists)
POST /api/v1/artifacts/:slug/unarchive Restore an archived artifact
POST /api/v1/artifacts/validate Validate a document; publishes nothing
GET /api/v1/artifacts/components The 15-component catalog as JSON Schema
POST /api/v1/artifacts/:slug/visibility Session only — change visibility, 403 for a key
POST /api/v1/charts Publish a new chart (session or key with charts)
GET /api/v1/charts List charts (tag, q, includeArchived)
GET /api/v1/charts/:slug Fetch a chart (?version=N for an older one)
PUT /api/v1/charts/:slug Publish a new version
POST /api/v1/charts/:slug/archive Reversibly hide a chart (no DELETE exists)
POST /api/v1/charts/:slug/unarchive Restore an archived chart
POST /api/v1/charts/preview Validate + render a chart document; publishes nothing
POST /api/v1/charts/:slug/visibility Session only — change visibility, 403 for a key
POST /api/v1/waitlist Public — join the private-beta waitlist
Serve (public, by opaque key)

GET /img/:key — raster image via the Netlify Image CDN, transformable with a positional cascade or a named preset (/img/thumb/:key, etc.). GET /f/:key — generic file or SVG as a forced download. SVG is accepted on upload but only ever served this way, never inline. GET /audio/:key — audio, inline with HTTP Range support (so an <audio> element can seek it, Safari included) — see the Transcription page for the full endpoint set. GET /d/:slug, .svg, .png — a diagram page/SVG/PNG, gated by the diagram's own visibility rather than an opaque key; see Diagrams for the full matrix. GET /a/:slug — an artifact's interactive page, gated the same way by its own visibility; see Artifacts for the full matrix. GET /c/:slug, .svg, .png — a chart's page/SVG/PNG, gated the same way by its own visibility; see Charts for the full matrix.

llms.txt

The app's machine-readable API reference lives at app.cubster.dev/llms.txt. This site has its own agent surface too — see /llms.txt — with a raw-markdown version of every docs page at its URL plus .md.