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.
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.
| 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 |
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.
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.