Set Up Your Collaboration Platform in 5 Steps
From configuring LiveKit to enabling AI transcription and DLP compliance in under 15 minutes.
5-Step Collaboration Setup
Configure LiveKit
Navigate to Collab > Settings > Video. Enter your LiveKit server host, API key, and API secret. Set default room settings: max participants (default: 100), empty timeout (default: 5 min), token TTL. Test the connection with a sample room creation.
Set Up Channels
Navigate to Collab > Channels > Create. Create public and private channels with names, descriptions, and topics. Assign roles (admin, moderator, member) to team members. Set up default channels: general (company-wide), random (social), intro (new members).
Enable AI Transcription
Navigate to Collab > Settings > AI. Configure your preferred AI provider (OpenAI Whisper for transcription, GPT-4 for summaries). Set transcription model, language defaults, and speaker diarization. Enable auto-summary generation with action items extraction.
Configure DLP Compliance
Navigate to Collab > Settings > Compliance. Enable DLP scanning. Configure patterns: SSN, credit card, email, phone, IP address. Set default action: block/warn/redact/log per pattern. Configure retention policies and legal hold settings.
Integrate Bridge Desktop (Optional)
Install Aeion Bridge desktop app. Enable local recording (MP4/MKV/MOV), whiteboard USB capture, screen capture, and audio device selection. Test recording and capture workflows from the Collab interface.
bash
# Generate a LiveKit room join tokencurl -X GET https://api.aeionos.com/api/v1/collab/video/rooms/{roomId}/token \ -H "Authorization: Bearer $AEION_API_KEY" \ -H "x-tenant-id: $TENANT_ID"
# Token is scoped to the authenticated user + this room, carrying a
# VideoGrant (roomJoin, canPublish, canSubscribe). Used by the frontend
# to connect to the LiveKit SFU.
# → { data: { token: "eyJ...", roomName: "livekit-room-42" } }
# Start server-side room composite recording
curl -X POST https://api.aeionos.com/api/v1/collab/recordings/room/{roomId}/start \ -H "Authorization: Bearer $AEION_API_KEY" \ -H "x-tenant-id: $TENANT_ID" \ -H "Content-Type: application/json" \ -d '{ "type": "composite" }'
# Returns a recording record you can poll for status.
# The finished recording is consumed by the Cut module for dailies QC.
# Transcribe a recording with speaker diarization
curl -X POST https://api.aeionos.com/api/v1/collab/recordings/{recordingId}/transcribe \ -H "Authorization: Bearer $AEION_API_KEY" \ -H "x-tenant-id: $TENANT_ID" \ -H "Content-Type: application/json" \ -d '{ "language": "en", "enableSpeakerDiarization": true }'
# Transcribes via Whisper, with automatic fallback if AI isn't configured.
# enableSpeakerDiarization is accepted for forward compatibility; per-speaker
# labels are on our roadmap — today's transcript is single continuous text.
# <30s turnaround for a 60-minute recording.
# Summarize a transcribed recording to action items
curl -X POST https://api.aeionos.com/api/v1/collab/recordings/{recordingId}/summarize \ -H "Authorization: Bearer $AEION_API_KEY" \ -H "x-tenant-id: $TENANT_ID"
# → { summary: "...", keyPoints: [...], actionItems: [{ task, assignee, dueDate }] }
# Action items can be created as tasks in the Workspace module.
# Scan message content for DLP violations
curl -X POST https://api.aeionos.com/api/v1/collab/compliance/scan \ -H "Authorization: Bearer $AEION_API_KEY" \ -H "x-tenant-id: $TENANT_ID" \ -H "Content-Type: application/json" \ -d '{ "content": "My card is 4111-2222-3333-4444", "workspaceId": "ws_42" }'
# 5-rule built-in DLP engine: ssn, credit_card, email, phone, ip.
# → { passed: false, violations: [{ ruleId: "credit_card", severity: "critical", action: "block" }] }
# Set presence state
curl -X PUT https://api.aeionos.com/api/v1/collab/presence/status \ -H "Authorization: Bearer $AEION_API_KEY" \ -H "x-tenant-id: $TENANT_ID" \ -H "Content-Type: application/json" \ -d '{ "status": "dnd" }'
# 5-state machine: online → idle (timeout) → offline; dnd / invisible (explicit).
# Presence changes are automatically broadcast to Smart Spaces, Helpdesk, and CRM.
# Start local recording via Bridge
curl -X POST https://api.aeionos.com/api/v1/collab/bridge/recording/start \ -H "Authorization: Bearer $AEION_API_KEY" \ -H "x-tenant-id: $TENANT_ID" \ -H "Content-Type: application/json" \ -d '{ "format": "mp4", "quality": "high", "audio": true }'
# Recording is written directly to local disk by the Bridge desktop app —
# no cloud upload, no latency, no storage costs.
# Without Bridge connected: returns { connected: false } — progressive enhancement.
# Capture whiteboard with auto-crop
curl -X POST https://api.aeionos.com/api/v1/collab/bridge/whiteboard/capture \ -H "Authorization: Bearer $AEION_API_KEY" \ -H "x-tenant-id: $TENANT_ID" \ -H "Content-Type: application/json" \ -d '{ "autoCrop": true, "enhanceContrast": true }'
# → { imageData: "base64...", format: "jpeg", width: 3840, height: 2160 }
# Create a poll with anonymous voting
curl -X POST https://api.aeionos.com/api/v1/collab/polls/channel/{channelId} \ -H "Authorization: Bearer $AEION_API_KEY" \ -H "x-tenant-id: $TENANT_ID" \ -H "Content-Type: application/json" \ -d '{"question": "What time should we meet?","options": [{"text":"9 AM"},{"text":"10 AM"},{"text":"11 AM"},{"text":"12 PM"}],"settings": { "anonymous": true, "duration": 3600 }}'
# Live results update in real time over WebSocket.
# Auto-closes on duration expiry; results pin to the channel.
# Create breakout rooms
curl -X POST https://api.aeionos.com/api/v1/collab/breakouts/room/{roomId} \ -H "Authorization: Bearer $AEION_API_KEY" \ -H "x-tenant-id: $TENANT_ID" \ -H "Content-Type: application/json" \ -d '{ "rooms": [{"name":"Room 1","duration":15},{"name":"Room 2","duration":15},{"name":"Room 3","duration":15}] }'
# Then auto-assign participants evenly across the rooms just created:
curl -X POST https://api.aeionos.com/api/v1/collab/breakouts/room/{roomId}/auto-assign \ -H "Authorization: Bearer $AEION_API_KEY" \ -H "x-tenant-id: $TENANT_ID" \ -H "Content-Type: application/json" \ -d '{ "method": "random" }'
# Manual assign: POST /collab/breakouts/{breakoutId}/assign with explicit participantIds.
# Timer: each room's "duration" auto-closes it when the timer expires; or use
# /room/{roomId}/close-all to end every breakout room at once.Tokens are short-lived, scoped to a single room and a single user, and carry exactly the permissions you grant — join, publish, subscribe — plus participant metadata like name and avatar. Default expiry is 4 hours, configurable per call, so stale tokens can't be reused after someone leaves.
Recordings are transcribed automatically with structured text and timestamped segments. Per-speaker labeling is on our roadmap — output today is returned as a single continuous transcript rather than broken out by speaker. If AI isn't configured for your tenant, transcription falls back gracefully instead of failing the meeting. WebVTT (`.vtt`) captions are generated for subtitle support.
Five built-in rules cover SSN, credit card numbers (16-digit with separators), email addresses, phone numbers, and IP addresses. Each has a configurable action: block (reject the message), warn (prompt before sending), redact (replace the match with `[REDACTED]`), or log (record only, message still sends).
When Bridge is connected, it provides local recording (screen + audio to MP4/MKV/MOV), whiteboard capture (USB camera → auto-crop → image), screen capture, and audio device enumeration. When Bridge isn't installed, those features simply aren't offered — everything else in Collab keeps working fully in the browser.
Rooms can auto-assign participants evenly by count, or be built manually ahead of time so nothing is disrupted once the meeting starts. Each room has a name, topic, and auto-close behavior (when everyone returns, or when a timer expires).
Messages support threaded conversations and direct replies, alongside system messages, join/leave notices, and call and poll events, all broadcast in real time. Mentions, replies, and channel alerts each trigger their own notifications.
Polls support multiple choice or numeric range questions, with optional vote limits and an anonymous mode that hides individual voters. Results stream live as votes come in, a duration auto-closes the poll, and results can be pinned to the channel.
Every message is scanned before it's stored. If a matched pattern's policy is set to block, the message is rejected outright and the sender is notified. Warn, redact, and log-only policies let the message through with the appropriate handling applied. DLP policies are scoped per workspace.