Nodeflux Central
Recordings & Playback

API Reference: Recordings

Endpoint untuk menemukan stream yang memiliki rekaman, ketersediaan harian dan per jam, playback berbasis waktu, unduh klip, dan penghapusan rekaman.

Liodra tidak memiliki otentikasi API sendiri; batasi akses port 9080 di tingkat jaringan atau reverse proxy. Basis URL memakai variabel LIODRA_API_URL (default http://localhost:9080). Semua endpoint di halaman ini memerlukan fitur playback aktif (--as-nvr), jika tidak menjawab 404. Semua waktu dalam UTC.


Penemuan Rekaman

Daftar Stream dengan Rekaman

GET
/api/v1/recordings

Response Body

application/json

application/json

application/json

curl -X GET "http://localhost:9080/api/v1/recordings"
{  "success": true,  "data": {    "total": 2,    "recordings": [      {        "app": "live",        "name": "camera_front",        "live": true,        "available": true,        "record": true      },      {        "app": "live",        "name": "camera_back",        "live": false,        "available": true,        "record": false      }    ]  }}
{  "success": false,  "error": "Not found",  "details": "Resource does not exist"}
{  "success": false,  "error": "Not found",  "details": "Resource does not exist"}

Distribusi Harian

GET
/api/v1/recordings/{path}/daily

Path Parameters

path*string

Query Parameters

search?string

Rentang bulan MMYY-MMYY.

Response Body

application/json

application/json

application/json

curl -X GET "http://localhost:9080/api/v1/recordings/live/camera_front/daily?search=0926-1026"
{  "success": true,  "data": [    {      "year": 2026,      "month": 9,      "days": [        {          "day": 14,          "available": true,          "date": "2026-09-14"        },        {          "day": 15,          "available": true,          "date": "2026-09-15"        },        {          "day": 16,          "available": false,          "date": "2026-09-16"        }      ]    }  ]}
{  "success": false,  "error": "Not found",  "details": "Resource does not exist"}
{  "success": false,  "error": "Not found",  "details": "Resource does not exist"}

Distribusi Per Jam

GET
/api/v1/recordings/{path}/hourly

Path Parameters

path*string

Query Parameters

date*string

Tanggal YYYY-MM-DD (UTC).

Formatdate
search?string

Rentang jam HHMM-HHMM (opsional).

Response Body

application/json

application/json

application/json

curl -X GET "http://localhost:9080/api/v1/recordings/live/camera_front/hourly?date=2026-09-15&search=0800-1800"
{  "success": true,  "data": {    "date": "2026-09-15",    "hours": [      {        "hour": 6,        "minute": 0,        "available": true,        "duration": 5760,        "time": "06:00",        "ranges": [          {            "start": "06:00",            "end": "06:32"          },          {            "start": "06:44",            "end": "06:59"          }        ]      },      {        "hour": 7,        "minute": 0,        "available": true,        "duration": 3000,        "time": "07:00",        "ranges": [          {            "start": "07:00",            "end": "07:50"          }        ]      }    ]  }}
{  "success": false,  "error": "Not found",  "details": "Resource does not exist"}
{  "success": false,  "error": "Not found",  "details": "Resource does not exist"}

Playback

Daftar Segmen, Putar, atau Unduh

GET
/api/v1/playbacks/{path}

Path Parameters

path*string

{app}/{name} (standar), {channel}/{namaKamera}/{trackID} (Hikvision), atau vod/{id}.

Query Parameters

start?string

Waktu mulai RFC3339. Wajib untuk mode putar/unduh.

Formatdate-time
duration?number

Durasi dalam detik. Wajib untuk mode putar/unduh.

Formatfloat
transcode?boolean

true/1: transcode HEVC ke H.264 (hardware-accelerated bila tersedia). Diabaikan saat download=true.

download?boolean

true/1: kirim sebagai file MP4 alih-alih stream MPEG-TS.

Response Body

application/json

application/json

application/json

application/json

curl -X GET "http://localhost:9080/api/v1/playbacks/live/camera_front?start=2026-09-15T02%3A30%3A00Z&duration=60&transcode=true&download=false"
{  "success": true,  "data": [    {      "start": "2026-09-15T02:30:00Z",      "duration": 30,      "url": "/api/v1/playbacks/live/camera_front?start=2026-09-15T02:30:00Z&duration=30"    },    {      "start": "2026-09-15T02:30:30Z",      "duration": 30,      "url": "/api/v1/playbacks/live/camera_front?start=2026-09-15T02:30:30Z&duration=30"    }  ]}
{  "success": false,  "error": "Full path required in format: app/name (e.g., live/test_camera or live/hls/test_camera)"}
{  "success": false,  "error": "No segments found for requested time range"}
{  "success": false,  "error": "Not found",  "details": "Resource does not exist"}
{  "success": false,  "error": "Not found",  "details": "Resource does not exist"}

Penghapusan

Hapus Rekaman Stream

DELETE
/api/v1/recordings/{path}

Path Parameters

path*string

{app}/{name}.

Response Body

application/json

application/json

application/json

application/json

curl -X DELETE "http://localhost:9080/api/v1/recordings/live/camera_front"
{  "success": true,  "message": "Recording deleted successfully: live/camera_front"}
{  "success": false,  "error": "Not found",  "details": "Resource does not exist"}
{  "success": false,  "error": "Not found",  "details": "Resource does not exist"}
{  "success": false,  "error": "Not found",  "details": "Resource does not exist"}

On this page