// api docs

REST API.

Base URL: https://api.screensnatch.com

Authentication: Bearer token via Keycloak OAuth 2.0 (Device Flow for desktop, PKCE for web).

44 endpoints · 12 public · 32 authenticated
GET /health Health check
GET /s/:slug Share page with OG meta tags (crawlers get HTML, browsers redirect)
GET /api/v1/s/:slug Screenshot/video metadata
GET /api/v1/s/:slug/raw Download original file (streams binary)
GET /api/v1/s/:slug/thumbnail Thumbnail image (auto-generated for videos)
GET /api/v1/s/:slug/comments List comments on a screenshot/video
GET /api/v1/s/:slug/reactions Emoji reaction counts
POST /api/v1/s/:slug/reactions Toggle emoji reaction (rate-limited, fingerprinted)
GET /api/v1/s/:slug/transcript Video transcript (segments with timestamps)
GET /api/v1/s/:slug/transcript.vtt WebVTT subtitles for video player
GET /api/v1/updates/latest Latest app release (Tauri updater format)
GET /api/v1/oembed oEmbed 1.0 endpoint for rich embeds
POST /api/v1/upload Upload screenshot/video (multipart form) 🔒
GET /api/v1/screenshots List your screenshots 🔒
GET /api/v1/screenshots/:id Get screenshot by ID 🔒
DELETE /api/v1/screenshots/:id Delete screenshot 🔒
GET /api/v1/screenshots/search Search by title (?q=...) 🔒
POST /api/v1/screenshots/:id/trim Trim video (start_sec, end_sec) 🔒
POST /api/v1/screenshots/:id/move Move to folder 🔒
POST /api/v1/screenshots/:id/tags Set tags 🔒
POST /api/v1/screenshots/:id/password Set/remove password protection 🔒
POST /api/v1/screenshots/:id/expiry Set custom expiry (1h, 24h, 7d, 30d, 365d, never) 🔒
PATCH /api/v1/screenshots/:id/title Rename screenshot 🔒
POST /api/v1/screenshots/:id/downloadable Toggle download button visibility 🔒
POST /api/v1/screenshots/:id/thumbnail Upload custom thumbnail 🔒
GET /api/v1/screenshots/:id/analytics View analytics (total, unique, daily) 🔒
POST /api/v1/screenshots/download-zip Download multiple as ZIP 🔒
POST /api/v1/screenshots/stitch Stitch multiple videos into one 🔒
POST /api/v1/screenshots/bulk-delete Delete multiple screenshots 🔒
POST /api/v1/screenshots/bulk-move Move multiple to folder 🔒
POST /api/v1/screenshots/bulk-tag Tag multiple screenshots 🔒
POST /api/v1/s/:slug/comments Add comment (with optional timestamp_sec) 🔒
DELETE /api/v1/comments/:id Delete own comment 🔒
GET /api/v1/folders List folders 🔒
POST /api/v1/folders Create folder 🔒
PATCH /api/v1/folders/:id Rename folder 🔒
DELETE /api/v1/folders/:id Delete folder 🔒
GET /api/v1/folders/:id/screenshots List screenshots in folder 🔒
GET /api/v1/me Current user info 🔒
GET /api/v1/me/quota Usage quota (used/limit/remaining) 🔒
GET /api/v1/me/plugins Available plugins based on product registry 🔒
GET /api/v1/me/notifications New views + comments count (?since=ISO8601) 🔒
POST /api/v1/updates/release Publish app release (admin only) 🔒
GET /api/v1/admin/stats System-wide statistics (admin only) 🔒