Skip to content

SlideStage Pro · api-reference

SlideStage Pro API Reference

Mirrored docs keep the language used by their source repo. Site chrome stays in your selected language.

This page is a compact reference for the public SlideStage Pro v0 HTTP API.

All business routes are mounted under /api. Authentication uses Better Auth session cookies.

Error shape

{
  "error": {
    "code": "STRING_CODE",
    "message": "Human-readable message",
    "details": {}
  }
}

Clients should branch on error.code.

Auth levels

  • Public: no session required.
  • Authenticated: valid session required.
  • Admin: valid session and user.role === "admin".

Health

GET /api/health

Public readiness endpoint.

Returns status, version, uptimeSeconds, and checks for database and storage.

Auth

Better Auth owns /api/auth/*.

MethodPathAccessPurpose
POST/api/auth/sign-in/emailPublicEmail sign-in.
POST/api/auth/sign-outAuthenticatedSign out.
POST/api/auth/sign-up/emailPublic + inviteInvite-gated signup.
GET/api/auth/get-sessionPublicCurrent session or null.

Signup must include inviteToken.

Decks

GET /api/decks

Authenticated. Lists decks visible to the current user.

POST /api/decks

Authenticated. Uploads a new .stage file.

Form fields:

  • file: required .stage zip.
  • title: optional title override.

The server checks size, hashes bytes, loads the deck through @slidestage/core, validates the manifest, checks paths, stores the blob, and writes database records in a transaction.

GET /api/decks/:id

Authenticated. Reads deck details.

GET /api/decks/:id/blob

Authenticated. Streams the current .stage blob.

DELETE /api/decks/:id

Authenticated. Deletes a deck when the user is allowed to do so.

Notes and annotations

Pro stores server-side notes and annotation payloads per deck/slide.

Treat annotation JSON as an opaque client payload.

Admin invites

Admins can list, create, and revoke invite tokens. Invites are one-time registration gates.

Compatibility

Pro does not define the .stage format. It consumes @slidestage/core and @slidestage/spec.