Meeting Liveness Bot — API Reference¶
REST endpoints exposed by the Meeting Liveness Bot service. Base URL: https://<bot-url> (provided by Moveris for your environment).
In plain terms
These are the HTTP endpoints your backend calls to start and stop bot sessions. The interviewer view uses separate token-based endpoints that do not require your bot API key.
Endpoint Map¶
flowchart TB
subgraph M2M["M2M — Bearer sk-bot-*"]
P1[POST /api/sessions]
P2[GET /api/sessions/:id]
P3[DELETE /api/sessions/:id]
P4[GET /api/sessions/:id/events]
P5[GET /api/analyses]
P6[GET/PUT /api/settings/api-key]
end
subgraph Token["Interview token — no API key"]
T1[GET /api/interview/:token]
T2[GET /api/interview/:token/events]
T3[GET /interview/* SPA]
end
subgraph Platform["Moveris platform — bot validates keys"]
V1[POST /api/auth/v1/org-bot-keys/validate/]
end | Method | Path | Auth | Purpose |
|---|---|---|---|
POST | /api/sessions | Bot API key | Start bot for a meeting |
GET | /api/sessions/:id | Bot API key | Session state + results |
DELETE | /api/sessions/:id | Bot API key | Stop bot early |
GET | /api/sessions/:id/events | Bot API key | SSE — bot status + live verdicts |
GET | /api/interview/:token | Interview token | Validate token; session summary |
GET | /api/interview/:token/events | Interview token | SSE — interviewer live view |
GET | /interview/* | Interview token (URL) | React SPA for observers |
GET | /api/analyses | Bot key or OAuth | Paginated analysis history |
GET / PUT | /api/settings/api-key | Browser OAuth | Org Moveris API key (UI) |
Authentication¶
Machine-to-machine (your backend)¶
Required for all /api/sessions routes and settings endpoints.
Interview token (read-only observer)¶
Routes under /api/interview/:token use the signed interviewToken from session creation. No Authorization header.
Sessions¶
Create Session¶
Start a bot for a video meeting.
| Header | Value |
|---|---|
Authorization | Bearer sk-bot-<your-bot-key> |
Content-Type | application/json |
Request body
{
"meetingUrl": "https://meet.google.com/abc-defg-hij",
"model": "mixed-10-v3_1",
"targetParticipantNames": ["John Smith"],
"excludeParticipantNames": ["Jane Doe"],
"bgSegmentation": false
}
| Field | Type | Required | Description |
|---|---|---|---|
meetingUrl | string | Yes | Google Meet, Zoom, or Microsoft Teams URL |
model | string | No | Mixed V2, V3, V3.1, or V3.1.1 alias — e.g. mixed-10-v2, mixed-30-v3, mixed-10-v3_1, mixed-30-v3_1_1, mixed-90-v3_1_1 (see Models Overview) |
targetParticipantNames | string[] | No | If provided, only participants whose names match are scanned. See Targeted participant scanning |
excludeParticipantNames | string[] | No | Names to skip — useful for excluding interviewers or known hosts |
bgSegmentation | boolean | No | Replace participant backgrounds with neutral grey before analysis. Defaults to the deployment setting from Moveris. See Background segmentation |
faceGate | boolean | No | Enable face geometry / pose quality checks in addition to blur and brightness. Defaults to the deployment setting from Moveris. See Frame quality gating |
Response 200 OK
{
"sessionId": "550e8400-e29b-41d4-a716-446655440000",
"botId": "bot_abc123",
"status": "bot_created",
"interviewToken": "eyJzZXNzaW9uSWQiOiI1NTBlODQwMC4uLiJ9.abc123sig",
"message": "Bot is being created and will join the meeting shortly"
}
Get Session¶
Retrieve session state and stored results.
Headers
| Header | Value |
|---|---|
Authorization | Bearer sk-bot-<your-bot-key> |
Response 200 OK
Returns session metadata, bot status, participants, and analysis results (shape varies by deployment and database configuration).
Delete Session¶
Stop the bot and end the session.
Headers
| Header | Value |
|---|---|
Authorization | Bearer sk-bot-<your-bot-key> |
Response 200 OK
Session Events (SSE)¶
Real-time session updates for authenticated clients.
Headers
| Header | Value |
|---|---|
Authorization | Bearer sk-bot-<your-bot-key> |
Returns a Server-Sent Events (SSE) stream with bot status changes and participant verdict updates.
Event types
| Event | Fires when | Key fields |
|---|---|---|
session-status | The bot status changes | status (including fatal when a stale session expires and the bot leaves the meeting) |
participant-stage | A participant moves between stages | participantId, participantName, stage (waiting, matched, accumulating, analyzing, done) |
participant-matched | A name matches targetParticipantNames (before the person speaks) | participantId, participantName, matchedTarget, numericId |
frame-quality-rejected | A frame fails the quality gate (throttled ~1/sec per participant) | participantId, participantName, reason, framesCollected, framesRequired |
result | A liveness verdict is ready | participantId, participantName, verdict, score, confidence, isLive |
Targeted scan stages
participant-stage and participant-matched are most useful in targeted scan mode. In scan-all mode you typically only need result.
Quality feedback for M2M clients
Listen for frame-quality-rejected to show interviewer guidance without polling. Common reason values: too-blurry, too-dark, too-bright, no-face, multiple-faces, face-too-far, face-too-close, face-cut-off, face-not-centered, backlit, angle-yaw, angle-pitch, angle-roll. See Frame quality gating.
Interview (Token Auth)¶
Resolve Interview Token¶
Validate a token and return session status. Used by the interviewer SPA on page load.
No authentication header. The token is passed in the URL path.
Response 200 OK
Session summary including status and participant list.
Interview Events (SSE)¶
Real-time participant updates for the interviewer view.
No authentication header. Opens an SSE stream for live verdict updates.
Interviewer SPA¶
Serves the read-only React UI for observers.
No API key. The app route expects the signed token in the path: /interview/<interviewToken>.
Analysis History¶
List Analyses¶
Paginated history of past analyses (when database persistence is enabled).
Headers
| Header | Value |
|---|---|
Authorization | Bearer sk-bot-<your-bot-key> or browser session (Google OAuth) |
Query parameters and response shape depend on deployment configuration.
Settings (Browser UI)¶
These endpoints support the bot's web UI for org API key management. M2M integrations typically configure the Moveris API key through Moveris staff or environment variables instead.
| Method | Path | Description |
|---|---|---|
GET | /api/settings/api-key | Get stored Moveris API key status |
PUT | /api/settings/api-key | Update org Moveris API key |
Error Responses¶
All errors return:
| Status | Meaning |
|---|---|
| 400 | Invalid or missing request body |
| 401 | Invalid or revoked bot API key |
| 404 | Session or resource not found |
| 500 | Internal server error |
Moveris Platform Endpoints (Bot Validation)¶
The bot validates your sk-bot- key against the Moveris Developer Portal API (not the bot itself):
POST https://<moveris-api-url>/api/auth/v1/org-bot-keys/validate/
Content-Type: application/json
{
"key": "sk-bot-<your-bot-key>"
}
Success response (wrapped in the standard Moveris API envelope):
{
"data": {
"organization_id": 42,
"organization_name": "Your Organization",
"organization_slug": "your-org",
"bot_display_name": "Liveness Verifier",
"logo_url": "https://example.com/logo.png",
"primary_color": "#0066ff"
},
"success": true
}
Related¶
- How It Works — Pipeline and internal modules
- Integration Guide — End-to-end integration walkthrough
- Session Lifecycle — Bot and participant state transitions
- Fast Check — Underlying Moveris liveness endpoint used by the bot
- Webhook Setup Guide — Configure webhook delivery