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.

NDI discovered devices

On this page

Find an endpoint

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

NDI discovered devices

Use this module to answer one production question quickly: which NDI sources can the engine see right now? That check matters before going live, after a sender reboot, after a subnet change, or whenever a camera or graphics machine is expected to appear without manual setup.

This is the NDI visibility layer. It helps operators separate three different states that are often confused under pressure: a source that is currently discoverable, a source that was seen earlier but may now be stale, and a source that should be removed from inventory because the environment changed.

What this module solves

  • Shows the NDI senders the engine can discover on the network.
  • Provides an activity signal when a source appears intermittent.
  • Keeps the discovered-device list trustworthy by allowing stale cleanup.

How to use it operationally

  1. List discovered devices and filter for NDI entries.
  2. Check activity when a source seems to appear and disappear.
  3. Remove stale rows after renames, retirements, or temporary event network changes.

If an expected source is missing here, troubleshoot discovery and network reachability before investigating downstream ingest workflows.

Discovery activity preview

getStat for discovered NDI devices is intentionally simple. The key runtime question is whether a row is currently discovered right now, not whether it once existed in inventory. That boolean is what helps operators separate a stale entry from a sender that is actually present on the network.

The preview below mirrors the same processData.discovered field documented for getStat. Use it as a quick reference when the team needs trust in the discovery layer before debugging routes, receivers, or player surfaces downstream.

Discovery activity

See the kind of state getStat exposes for discovered NDI devices

NDI discovered devices do not report bitrate or frame cadence. Their runtime signal is simpler and just as useful: is the row currently discovered right now. That boolean is what helps teams separate a stale inventory entry from a source that is actually present on the network.

Runtime preview
getStat field shape
Process view

discovered count

Previewing the same runtime signal operators usually inspect first.

2 devices
current discovered
2 rows
getStat shape
processData[].discovered
updated
11:00:34 PM
Operational signals
discovered = true

2

How many current rows look actively discoverable right now.

inventory rows

3

A stale row can still exist in inventory even when its discovery flag is no longer active.

polling use

trust check

This is the signal operators reach for before blaming receivers, routes, or naming mistakes.

last update

11:00:34 PM

Use repeated polling to separate a briefly missing sender from a genuinely stale device row.

Studio Camera A67f100000000000000000001
discovered
Graphics Output B67f100000000000000000002
discovered
Commentary Booth Feed67f100000000000000000003
not discovered

This preview derives a simple activity line from the same discovered boolean you poll from getStat. It is most useful when operators need a trust signal before troubleshooting downstream ingest or receive workflows.

Example tasks

Discovery sync payload

Use when a discovery process reports the current NDI senders visible to the engine.

{
  "devices": [
    {
      "ndi_name": "Studio Camera A",
      "url_address": "192.168.10.41:5960"
    },
    {
      "ndi_name": "Graphics Output B",
      "url_address": "192.168.10.52:5960"
    }
  ]
}

List and filter discovered devices

Use when operators need a quick inventory view of current NDI entries.

{
  "limit": 10,
  "skip": 0,
  "sort": {
    "created": 1
  },
  "filter": {
    "type": "DEVICE_TYPE_NDI"
  }
}

Activity check

Use when a device exists in inventory but may no longer be actively visible.

{}

Production workflows

Validate the show patch before going live

Compare the discovered list against the expected camera, playback, and graphics sources before the event starts. If a sender is missing at discovery level, the issue is usually upstream of any receiver configuration.

Troubleshoot an intermittent NDI source

When a source flaps in and out, check activity instead of relying only on the device row. This helps distinguish a real network or discovery problem from a naming mistake or an old entry that is no longer relevant.

Clean up after teardown or device renaming

Temporary event devices, lab systems, and renamed senders can leave stale rows behind. Remove them so the list stays accurate and operators can trust what they see during live operations.

Operator guidance

  • Treat current activity as the best signal of whether a source is really available.
  • Do not assume an old discovered row means the sender is still reachable.
  • Keep the device list clean after topology changes so troubleshooting stays fast.
POST
/api/devices/getAll

Use Get all discovered devices for the operator-facing list of NDI sources currently stored by the engine.

This is the main read path behind the dashboard page. The UI calls it with a device-type filter and refreshes the listing every five seconds so the stored discovery state keeps moving without a full page reload.

Request body parameters
limit
integer
Copy direct link

Optional page size for the device list.

skip
integer
Copy direct link

Optional offset for paginated listing.

sort
object
Copy direct link

Optional sort descriptor. The UI uses { created: 1 }.

filter
object
Copy direct link

Operator-facing NDI list calls usually filter by type: DEVICE_TYPE_NDI.

Get all discovered devices
Copy code
curl --request POST \
--url http://localhost/api/devices/getAll \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"limit": 10,
"skip": 0,
"sort": {
"created": 1
},
"filter": {
"type": "DEVICE_TYPE_NDI"
}
}'
Response
array of discovered device objects
array
Copy direct link

The backend returns a bare array of stored discovered-device rows.

discovered_last_time
string
Copy direct link

Timestamp of the last discovery-side refresh for this device.

Response: Get all discovered devices
JSON
Copy code
[
{
"_id": "67f100000000000000000001",
"id": "67f100000000000000000001",
"name": "Studio Camera A",
"type": "DEVICE_TYPE_NDI",
"ndi_name": "Studio Camera A",
"url_address": "192.168.10.41:5960",
"created": "2026-03-24T10:00:00.000Z",
"discovered_last_time": "2026-03-24T10:00:05.000Z",
"success": true
}
]
POST
/api/devices/getCount
POST
/api/devices/getById
POST
/api/devices/getStat
POST
/api/devices/update
DELETE
/api/devices/remove
POST
/api/devices/NDI_Sync_Device_List