# 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](https://synento.com/docs/getting-started.md): set up your first project and stream in minutes
- [Core concepts](https://synento.com/docs/concepts.md): projects, sessions, and the stream-native recording model
- [API reference](https://synento.com/docs/api-reference.md): every endpoint, with request and response examples

## SDK packages

| Package | Use |
|---------|-----|
| [`@synento/client`](https://www.npmjs.com/package/@synento/client) | Browser: publish and receive live audio, video, and screen share |
| [`@synento/react`](https://www.npmjs.com/package/@synento/react) | React provider, hooks, and components over `@synento/client` |
| [`@synento/node`](https://www.npmjs.com/package/@synento/node) | Server: create sessions, mint connection tokens, manage projects |
| [`@synento/player`](https://www.npmjs.com/package/@synento/player) | Embeddable replay engine with layout composition |
| [`@synento/cli`](https://www.npmjs.com/package/@synento/cli) | Command-line project and session management |

## Guides

- [Webhooks](https://synento.com/docs/guides/webhooks.md): subscribe to session lifecycle events
- [Recordings & Replay](https://synento.com/docs/guides/recordings-replay.md): how stream-based recording and replay work
- [Edited clips with JSON2Video](https://synento.com/docs/guides/json2video-clips.md): turn a recording into a short vertical clip with subtitles
- [Access Control](https://synento.com/docs/guides/access-control.md): public sessions, expiring links, and visibility
- [Session Management](https://synento.com/docs/guides/sessions.md): session lifecycle and controls
- [CLI Guide](https://synento.com/docs/guides/cli.md): use the Synento CLI for project and session management
- [SDK Guide](https://synento.com/docs/guides/sdk.md): integrate using the JavaScript/TypeScript SDK
- [Browser Support](https://synento.com/docs/browser-support.md): which browsers work, what the SDK reports, and what has been verified

## Examples

Copy-paste examples ready to run:

- [Web Quickstart](https://synento.com/docs/examples/web-quickstart.md): embed a live video stream in any web page
- [SDK Basic Usage](https://synento.com/docs/examples/sdk-basic.md): create sessions and manage them with the SDK
- [SDK Advanced Patterns](https://synento.com/docs/examples/sdk-advanced.md): replay, exports, and webhooks with the SDK
- [CLI Examples](https://synento.com/docs/examples/cli-examples.md): 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:

```json
{ "data": { ... }, "error": null }           // Success
{ "data": null, "error": { "code": "...", "message": "...", "status": 400 } }  // Error
```

Key endpoint categories:

- `POST /v1/projects`: create projects
- `POST /v1/sessions`: create live sessions
- `POST /v1/sessions/:id/connection`: get connection tokens for WebSocket streaming
- `GET /v1/sessions/:id/manifest`: tracks, time bounds, and capabilities
- `GET /v1/sessions/:id/playback`: windowed replay of recorded sessions
- `GET /v1/sessions/:id/export`: enqueue MP4 export (layout, orientation)
- `GET /v1/exports/:jobId`: poll export status and download URL

See the full [API reference](https://synento.com/docs/api-reference.md) for every endpoint, or the machine-readable spec at [synento.com/openapi.json](https://synento.com/openapi.json).
