media server logo
Toggle documentation navigation
Callaba home
Command-first documentation

Search the module, then move faster through the API

Find the exact module, copy the working request shape, and move from product workflow to API call without getting buried in the tree.

AI workflow helperDescribe what you want to buildOptional tool

Write the workflow in plain language. We will turn it into a GPT-ready brief you can use to generate requests, module order, and starter payloads.

Multiview

On this page

Find an endpoint

12 endpoints
Search by endpoint name, HTTP verb, or URL, then jump straight to its request.

Multiview is the Engine module for building an operator monitoring wall from SRT, RTMP, or NDI inputs. The API stores the layout and input map, creates the conference-backed viewing surface, and keeps the runtime restreams aligned with the saved resource.

Multiview lifecycle

Create the wall, attach inputs, and give operators a join path

Lifecycle

Multiview coordinates input restreams with a conference-backed viewing surface. The public endpoints are only valid for a resource whose visibility is PUBLIC.

  1. 01Create
    POST /api/multiview/create

    Choose layout, visibility, inputs, and whether the runtime starts immediately.

  2. 02Inspect
    POST /api/multiview/getById

    Read the saved input and conference bindings before sharing access.

  3. 03Join
    POST /api/multiview/join

    Issue a participant token for the authenticated operator workflow.

  4. 04Observe
    POST /api/multiview-public/getStat

    For a public wall, read the runtime statistics associated with its input restreams.

Animated values illustrate request order; endpoint and payload contracts below are source-synced with Engine 8.7.

Use the protected workflow first

  1. Create a private wall with POST /api/multiview/create. Starting with inputs: [] is valid when you want to reserve the layout before attaching feeds.
  2. Update the complete desired input list. Inputs removed from the next list are detached from the runtime by the service.
  3. Start the wall, then call the authenticated join endpoint to receive the conference room and participant token.
  4. Use getById and the input runtime statistics to confirm the saved state and media process agree.

Public access is an explicit product choice

Public read, statistics, and join endpoints do not use x-access-token, but they return data only for a resource saved with visibility: PUBLIC. A public join may start the wall when its runtime is not ready. Treat the public id as shareable access material, apply rate limiting at the edge, and do not publish ids for private operations.

The Engine also contains an unauthenticated public-start route. It is intentionally not promoted here until its abuse-control policy is reviewed; use protected /api/multiview/start for operator automation.

Common 400 response

Validation and lookup failures use the normal Engine error shape: { success: false, status, code, message, details }. Do not retry a validation failure until the required id, name, visibility, or participant fields are corrected.

Source binding: this page is reviewed against Engine 8.7@ef3dd337. Uncommitted phone-publish and AV mixer routes are not part of this public contract.

POST
/api/multiview/create
API token required

Create the saved wall and, when active is not false, prepare its conference/runtime. The authenticated user id is injected from the token; do not send user_id.

Next call: use getById to confirm normalized inputs, then join for an operator token.

A 400 response uses { success: false, status, code, message, details }.

Request body parameters
Identity
name
string
Copy direct link

Required operator-facing name, 1–120 characters.

Layout
layout_id
string
Copy direct link

Optional layout identifier. The Engine defaults to 4-tiles.

overlay_settings
object
Copy direct link

Optional overlay configuration stored with the wall.

Inputs
inputs
array
Copy direct link

Optional input definitions. Supported runtime source kinds include SRT, RTMP, and NDI variants; start with an empty array when you want to provision the wall before attaching feeds.

Access
visibility
string
Copy direct link

Optional PRIVATE or PUBLIC. The default is PRIVATE.

Runtime
active
boolean
Copy direct link

Optional initial runtime state. Defaults to active unless explicitly set to false.

Create multiview
Copy code
curl --request POST \
--url http://localhost/api/multiview/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"name": "Master control multiview",
"layout_id": "4-tiles",
"visibility": "PRIVATE",
"overlay_settings": {},
"inputs": [],
"active": true
}'
Response
Identity
id
string
Copy direct link

Stable multiview identifier.

name
string
Copy direct link

Operator-facing name.

Layout
layout_id
string
Copy direct link

Selected tile layout, for example 4-tiles.

inputs
array
Copy direct link

Normalized video inputs and their runtime bindings.

Access
visibility
string
Copy direct link

PRIVATE or PUBLIC.

Runtime
conference_id
string
Copy direct link

Conference backing the operator viewing surface.

active
boolean
Copy direct link

Whether the multiview runtime should be active.

Response: Create multiview
JSON
Copy code
{
"_id": "6b0011223344556677889900",
"id": "6b0011223344556677889900",
"name": "Master control multiview",
"conference_id": "6b1011223344556677889900",
"layout_id": "4-tiles",
"visibility": "PRIVATE",
"overlay_settings": {},
"inputs": [
{
"id": "camera-a",
"name": "Camera A",
"source_kind": "INPUT_TYPE_SRT_SOFTWARE",
"source_id": "6b2011223344556677889900",
"participant_name": "Camera A",
"resolution": "1920x1080",
"video_codec": "libx264",
"video_bitrate": 1350,
"tile_index": 0,
"muted": false,
"hidden": false,
"volume": 1
}
],
"active": true,
"created": "2026-06-25T10:00:00.000Z",
"modified": "2026-06-25T10:00:01.000Z",
"success": true
}
POST
/api/multiview/update
API token required
POST
/api/multiview/getCount
API token required
POST
/api/multiview/getAll
API token required
POST
/api/multiview/getById
API token required
POST
/api/multiview/start
API token required
POST
/api/multiview/stop
API token required
POST
/api/multiview/join
API token required
POST
/api/multiview-public/getById
Public endpoint
POST
/api/multiview-public/getStat
Public endpoint
POST
/api/multiview-public/join
Public endpoint
DELETE
/api/multiview/remove
API token required