Synento documentation
Synento is an agent-native video API. A coding agent can set up a project, write the integration, and prove media arrived by reading the session manifest. Live video, replay, and MP4 export all read the same durable streams.
Synento is an agent-native video API. A coding agent can set up a project, write the integration, and prove media arrived by reading the session manifest. Live video, replay, and MP4 export all read the same durable streams.
Quick links
- Getting started: set up your first project and stream in minutes
- Core concepts: projects, sessions, and the stream-native recording model
- API reference: every endpoint, with request and response examples
SDK packages
| Package | Use |
|---|---|
@synento/client | Browser: publish and receive live audio, video, and screen share |
@synento/react | React provider, hooks, and components over @synento/client |
@synento/node | Server: create sessions, mint connection tokens, manage projects |
@synento/player | Embeddable replay engine with layout composition |
@synento/cli | Command-line project and session management |
Guides
- Webhooks: subscribe to session lifecycle events
- Recordings & Replay: how stream-based recording and replay work
- Edited clips with JSON2Video: turn a recording into a short vertical clip with subtitles
- Access Control: public sessions, expiring links, and visibility
- Session Management: session lifecycle and controls
- CLI Guide: use the Synento CLI for project and session management
- SDK Guide: integrate using the JavaScript/TypeScript SDK
- Browser Support: which browsers work, what the SDK reports, and what has been verified
Examples
Copy-paste examples ready to run:
- Web Quickstart: embed a live video stream in any web page
- SDK Basic Usage: create sessions and manage them with the SDK
- SDK Advanced Patterns: replay, exports, and webhooks with the SDK
- CLI Examples: common CLI workflows
Key features
| Feature | Description |
|---|---|
| Live streaming | Multi-participant audio and video over WebSocket, encoded in the browser with WebCodecs; frame rate backs off on a congested connection |
| Stream-native recording | Every session is recorded as it happens: separated tracks (cam/mic/screen) plus a typed event timeline, layout-agnostic |
| Composable replay | Configurable layouts (grid, active-speaker, presenter, screen-share) at playback time |
| Director track | Deterministic active-speaker switching, computed when a session ends and stored with the recording |
| Replay | Replay with speed control (0.25x-4x), seek, layout switching, and windowed reading |
| MP4 export | Async export with layout (grid, presenter) and orientation (landscape, vertical) parameters |
| Public sessions and links | Share sessions publicly or via expiring token-based replay links |
| Webhooks | Event-driven callbacks for session lifecycle events |
| SDK and CLI | TypeScript SDK and command-line tool for programmatic access |
API overview
Everything goes through REST APIs. Authenticate with an API key in the Authorization: Bearer sk_live_... header. Live media travels over a WebSocket, using a connection token minted by the REST API.
All JSON responses follow a standard envelope format:
{ "data": { ... }, "error": null } // Success
{ "data": null, "error": { "code": "...", "message": "...", "status": 400 } } // ErrorKey endpoint categories:
POST /v1/projects: create projectsPOST /v1/sessions: create live sessionsPOST /v1/sessions/:id/connection: get connection tokens for WebSocket streamingGET /v1/sessions/:id/manifest: tracks, time bounds, and capabilitiesGET /v1/sessions/:id/playback: windowed replay of recorded sessionsGET /v1/sessions/:id/export: enqueue MP4 export (layout, orientation)GET /v1/exports/:jobId: poll export status and download URL
See the full API reference for every endpoint, or the machine-readable spec at synento.com/openapi.json.