Skip to content

API & webhooks

Authentication

Create a key under Dashboard → Developers (Pro). Send it as a bearer token:

curl https://api.scenerecap.com/v1/recordings \
  -H "Authorization: Bearer sr_live_…"

Core endpoints

Method & pathPurpose
GET /v1/recordingsList recordings (workspace, folder, q, cursor pagination)
GET /v1/recordings/:idRecording, chapters, transcript, AI outputs, playback URLs
POST /v1/uploadsPOST /v1/uploads/:id/completePOST /v1/recordingsUpload flow (multipart presigned parts, then create the recording)
POST /v1/recordings/:id/reanalyzeRun another mode
POST /v1/recordings/:id/exportsAsync export → poll GET …/exports for a signed URL
POST /v1/recordings/:id/sharesCreate a share link
GET /v1/search?q=Hybrid search across titles, summaries and timeline segments

Errors are RFC 7807 application/problem+json. Requests are rate-limited per key.

Webhooks

Register a URL under Developers with the events you want: recording.ready, recording.shared, comment.created. Each delivery is a JSON POST with headers X-SceneRecap-Event, X-SceneRecap-Delivery and X-SceneRecap-Signature: sha256=<hex> — an HMAC-SHA256 of the raw body using the secret shown once at creation. Verify like so:

const expected = "sha256=" + crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
if (!crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(expected))) reject();

Non-2xx responses are retried three times with exponential backoff; the Deliveries panel shows every attempt.