API map
Find the route, access boundary, and product responsibility.
This is a human-readable map of the current Express surface. `server.js` remains the executable source of truth for exact request and response schemas.
Access labels
- Public: no account required; rate limits and input validation still apply.
- Optional auth: works without a session but returns richer tenant/plan context when signed in.
- Authenticated: requires a valid server session.
- CSRF write: authenticated state-changing request requiring the current CSRF token.
- Workspace admin: authenticated admin/owner role inside the active tenant.
- Owner/staff: platform-level Superadmin permission, separate from workspace roles.
- Host token: meeting-host authority carried by the private host URL/token.
Feature and identity
GET
/api/featuresOptional authPlan, entitlements, user, and active-tenant feature context for public product screens.
POST
/api/authPublic / sessionActions include login, register, check, logout, forgot password, OAuth exchange, and CSRF retrieval.
GET
/api/meAuthenticatedUser profile, tenant memberships, active tenant, plan, entitlements, and domain-claim context.
GET
/api/account/exportAuthenticatedExports account and active-workspace data as JSON.
DELETE
/api/accountCSRF writePermanently deletes the authenticated account after an explicit confirmation value.
Workspaces, teams, and identity
GET
/api/tenantsAuthenticatedLists available workspaces.
POST
/api/tenantsCSRF writeCreates a new workspace and initial owner membership.
POST
/api/tenants/switchCSRF writeChanges the active tenant cookie after membership validation.
GET
/api/workspace/usageAuthenticatedRecording, storage, member, and active-share usage.
GET · PATCH
/api/workspace/security-settingsMember read / admin writeTenant retention, guest, download, translation, invite, watermark, data-region, and share-default policy.
GET
/api/workspace/membersAuthenticatedMembers, roles, and pending invitations for the active tenant.
POST
/api/workspace/invitesPaid admin + CSRFCreates and sends a workspace invitation.
PATCH · DELETE
/api/workspace/members/:userIdAdmin + CSRFChanges roles or removes a member with owner-safety rules.
POST
/api/workspace/owner-transferOwner + CSRFBegins or completes an explicit workspace ownership transfer.
GET · PATCH
/api/workspace/identityAdminReads or changes enterprise identity provider configuration.
POST · DELETE
/api/workspace/identity/scim-tokensAdmin + CSRFIssues or revokes hashed SCIM bearer tokens.
Recordings and media
POST
/api/recordingsPaid + CSRFMultipart upload for a workspace recording.
POST
/api/recordings/direct-upload/initiatePaid + CSRFStarts resilient multipart R2 upload for large media.
POST
/api/recordings/direct-upload/part-urlPaid + CSRFReturns a signed URL for one upload part.
POST
/api/recordings/direct-upload/completePaid + CSRFCompletes multipart upload and creates processing state.
GET
/api/recordingsAuthenticatedLists active-tenant assets with search, folder, and source filters.
PATCH
/api/recordings/:idCSRF writeUpdates title, description, folder, and supported metadata.
PATCH
/api/recordings/:id/timelineCSRF writeUpdates non-destructive timeline/edit configuration.
PUT
/api/recordings/:id/clipsCSRF writeReplaces clip definitions for the recording workspace.
GET · POST
/api/recordings/:id/versionsAuthenticated / CSRF writeLists, creates, activates, or updates recording versions.
POST
/api/recordings/:id/exportsCSRF writeQueues or creates MP4, GIF preview, audio, or other configured media exports.
GET
/api/recordings/:id/playbackAuthenticatedReturns authorized playback metadata or redirect.
GET
/api/recordings/:id/transcript.:formatAuthenticatedDownloads transcript as TXT, VTT, or SRT.
GET
/api/recordings/:id/analyticsPaidViewer activity, watch time, and comment insights.
GET
/api/recordings/:id/workspaceAuthenticatedMeeting recap/workspace data including summary, decisions, action items, clips, and bilingual transcript.
POST
/api/recordings/:id/askAI-entitled + CSRFAnswers a question grounded in stored transcript context.
DELETE
/api/recordings/:idCSRF writeSoft-deletes the asset and schedules/best-effort removes related R2 objects.
Sharing and public playback
POST
/api/recordings/:id/sharePaid + CSRFEnables or returns a share link.
POST
/api/recordings/:id/unshareCSRF writeDisables the current share link.
POST
/api/recordings/:id/rotate-sharePaid + CSRFInvalidates the old public token and creates a new one.
POST
/api/recordings/:id/share-settingsPaid + CSRFUpdates access mode, password, comments, downloads, branding, metadata, transcript, translation, and CTA visibility.
GET
/api/share/:shareIdPublic / password cookieReturns safe public metadata; protected fields remain hidden until password access succeeds.
POST
/api/share/:shareId/accessPublic rate-limitedValidates a share password and sets an HTTP-only access cookie.
GET
/api/share/:shareId/playbackPublic / password cookieReturns authorized playback delivery.
GET · POST
/api/share/:shareId/commentsPublic / settingsLists or creates comments when allowed by the share configuration.
Meetings, speech, and translation
GET
/api/meetings/challengePublicReturns proof-of-work material for public room creation anti-abuse.
POST
/api/meetingsPublic rate-limitedCreates a room and private host admission link using optional-auth plan limits.
GET
/api/meetings/configOptional authICE, SFU, caption, STT, translation, feature, and entitlement configuration safe for clients.
GET
/api/meetings/:roomIdPublicRoom existence, expiry, duration label, persistence, and SFU status.
WS
/api/meetings/wsRoom / host tokenAdmission, presence, WebRTC signaling or SFU token delivery, chat, captions, hydration, and time limits.
POST
/api/meetings/:roomId/server-recordingPaid host + CSRFStarts or stops configured LiveKit/SFU server recording.
POST
/api/meetings/:roomId/transcript/entriesOwner + CSRFPersists incremental caption segments and closes the capture interval.
GET
/api/meetings/:roomId/summaryOwnerReturns resumable meeting-summary status and result.
POST
/api/meetings/:roomId/summary/regenerateAI-entitled owner + CSRFRetries or regenerates the meeting summary.
GET · POST
/api/meetings/scheduledAuthenticated / CSRF writeLists, creates, updates, and deletes scheduled meeting entries.
GET
/api/stt/healthPublic rate-limitedReports the configured self-hosted STT upstream health.
POST
/api/stt/transcribeMeeting AI accessTranscribes a multipart audio segment through the configured hosted/self-hosted path.
GET
/api/translate/languagesPublic rate-limitedLists languages exposed by the configured translation provider.
POST
/api/translateMeeting AI accessTranslates text/audio through the server-side provider boundary.
Billing, licensing, and domains
POST
/api/billing/checkoutCSRF writeCreates Stripe Checkout for the active workspace and configured trial.
POST
/api/billing/portalCSRF writeCreates a Stripe customer portal session.
POST
/api/webhooks/stripeSigned webhookApplies idempotent subscription and billing events.
GET · POST
/api/appsumo/*Public / authenticated buyerLists deals, returns safe license state, and redeems buyer codes.
GET · POST
/api/domainsPaid workspaceLists or adds custom domains.
PATCH · DELETE
/api/domains/:idPaid admin + CSRFChanges purpose/primary selection or releases the domain.
POST
/api/domains/:id/verifyPaid admin + CSRFChecks ownership and routing records.
GET
/api/internal/domains/allow-hostCaddy tokenAuthorizes on-demand TLS only for verified, entitled domains.
Platform operations
The /api/superadmin/* family covers overview, users, tenants, subscriptions, billing events, reports, tickets, notes, operations, jobs, incidents, security events, reviews, suspicious activity, feature flags, settings, staff access, and audited support workflows. Every route applies platform-level permission checks and no-cache behavior; workspace ownership alone never grants Superadmin access.
Operational endpoints include /health, /api/internal/health/ops, /metrics, Stripe and LiveKit webhooks, internal playback authorization, and public branding/configuration.