Infrastructure for real-time applications
Livqeno runs the audio, video, chat, and live streaming layer of your product, so you do not operate WebRTC signaling, a media server, TURN, or a message store yourself. You keep the interface; Livqeno keeps the pipes.
Capabilities
- Audio & videoRooms, participants, tracks, devices
- RTCOwn SFU, signaling, TURN, reconnection
- ChatDurable messages, threads, presence
- Live streamingHosts, viewers, attached live chat
- EffectsCamera filters and presets
- WebhooksSigned, retried, environment-scoped
- SDKsWeb, React, React Native, Flutter, Node, Python
- REST API110 versioned endpoints, one per SDK call
The shortest thing that works
Your backend — mint a token
import { Raven } from '@ravenkash/server';
const raven = new Raven({
apiKey: process.env.RAVEN_API_KEY!,
baseUrl: process.env.RAVEN_API_URL!, // https://api.ravenstack.online
});
const room = await raven.rooms.create({ name: 'demo' });
const credentials = await raven.tokens.create({
room: room.id,
identity: 'user-42',
permissions: { join: true, publish: true, subscribe: true },
});Your frontend — join and publish
import { createRTCClient } from '@ravenkash/rtc';
// Fetched from your own route, which returned what it minted above.
const credentials = await fetch('/api/raven/grant').then((r) => r.json());
const client = createRTCClient(credentials);
const room = await client.join(credentials.roomId);
await room.enableCamera();
await room.enableMicrophone();That is a working call. The quickstart walks the same path with the project setup, the install commands, and the participant events.
Pick a path
- Build a video callTwo participants, camera and microphone, from an empty folder.
- Build a chat applicationConversations, durable history, presence, and typing.
- Build a live streamOne host, many viewers, live chat attached on join.
- Explore SDKsEight SDKs across six languages, and what each supports.
- Explore the APIEvery REST endpoint, generated from the controllers.