Skip to content

Meeting Liveness BotAPI 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)

Authorization: Bearer sk-bot-<your-bot-key>

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.

POST /api/sessions

Headers

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.

GET /api/sessions/:id

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.

DELETE /api/sessions/:id

Headers

Header Value
Authorization Bearer sk-bot-<your-bot-key>

Response 200 OK

{
  "status": "stopped"
}

Session Events (SSE)

Real-time session updates for authenticated clients.

GET /api/sessions/:id/events

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.

GET /api/interview/:token

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.

GET /api/interview/:token/events

No authentication header. Opens an SSE stream for live verdict updates.


Interviewer SPA

Serves the read-only React UI for observers.

GET /interview/*

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).

GET /api/analyses

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:

{
  "error": "Human-readable error message"
}
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
}