For agents, and the people who run them
Built to be set up by an agent
Most video APIs assume a person will click through a dashboard, read a guide and then check by eye that it works. Synento assumes an agent might do all three, and gives it the means to check its own work.
Why agents struggle with video
Three ways agent-written video fails
Failure is silent
The code compiles, the WebSocket opens, the call “connects”, and no media ever arrives. Nothing throws, so the agent reports success.
Every session is its own recording. The agent reads the manifest back, and a track with a non-null start_ts is proof that real frames arrived.
State lives in a dashboard
Rooms, recordings and egress are set up in a console the agent cannot see. It guesses at settings and hopes.
Everything is a REST call, described by an OpenAPI spec. There is no recording to switch on, because recording is not a setting.
Retries make duplicates
Agents retry. On most APIs a retried create makes a second room, or a second recording, or a second bill.
Session creation takes an Idempotency-Key. Send the same key twice and you get the same session back.
Resources
Point your agent here
Public, credential-free and CORS-enabled, so any agent or tool can fetch them.
- Fetch it: /llms.txt
llms.txt
The index: what Synento is, and a markdown link for every docs page.
- Fetch it: /llms-full.txt
llms-full.txt
All public docs in one file, for agents that prefer a single read.
- Fetch it: /openapi.json
OpenAPI 3.1 spec
Every public REST endpoint, with auth, parameters and envelopes. A server test fails if it drifts from the real routes.
- Fetch it: /docs/getting-started.md
Markdown for any docs page
Append .md to a docs URL, or request it with Accept: text/markdown.
- Fetch it: /.well-known/api-catalog
API catalog (RFC 9727)
Standard discovery that links the spec, the docs and status.
Try it
Paste this into your coding agent
Connecting the MCP server above is the fastest route. For an agent that can only fetch URLs and run commands, paste this instead.
Add live video calls to this app using Synento.
1. Read https://synento.com/llms.txt and follow the quickstart it links to.
2. Keep the API key server-side: add one route that creates a session and mints a connection token.
3. Join from the browser with @synento/client and publish camera and microphone.
4. Send an Idempotency-Key when you create the session.
5. Prove it works: after a two-participant test call, GET /v1/sessions/{sessionId}/manifest and confirm every cam and mic track has a non-null start_ts. Do not report success until it does.Safe by construction
Guardrails an agent can't forget
Keys stay on the server
API keys are server secrets, stored only as peppered hashes. Browsers get connection tokens scoped to one session and one user, which expire quickly.
Idempotent writes
Session and replay-link creation accept an Idempotency-Key, so a retried request returns the original result.
Fair rate limits
Limits apply per API key and per client, and the headers say when to back off. One noisy caller cannot lock anyone else out.
One response shape
Every response is { data, error } with a stable error code, so an agent can branch on errors without parsing prose.
The Synento MCP server
Connect your agent once. It sets up the project, writes the integration and then proves the video works by reading back the recording. You approve access in your browser and choose the projects it can touch.
- Remote MCP over Streamable HTTP, with nothing to install
- OAuth 2.1 with PKCE: you approve each agent in the browser, per project
- Agents get restricted keys that can only create sessions and read recordings, never an owner key
- verify_session reads the recording back and says exactly what is missing, and why
claude mcp add --transport http synento https://api.synento.com/mcp
{
"mcpServers": {
"synento": { "url": "https://api.synento.com/mcp" }
}
}Your agent is ready. Is your video platform?
Sign up, then hand your agent one URL.