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.

Web players

On this page

Find an endpoint

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

Web players are the delivery and playback control layer for browser viewing in Callaba Engine. Use this API to create a viewer-facing endpoint from an existing live input, publish browser-ready HLS or DASH output, configure embed and access settings, and control when the player is available.

Keep the responsibilities separate: ingest APIs handle source-side reliability and transport continuity, while Web players handle viewer experience tuning and playback operations. In this module, you assign the source signal, tune packaging and adaptive bitrate behavior, optionally enable authorization or pay-per-view, and use methods such as start, stop, and getStat to operate live delivery.

Live playback playground

For this module, it helps to see both delivery surfaces in one place: direct browser playback against a public HLS manifest and the hosted Callaba player as an iframe embed. The playground below gives you both, together with live viewer-side stats so you can inspect what the playback layer is actually doing.

Use the player first when the question is viewer experience. Use getStat when the question is whether the playback process still has believable bitrate and cadence upstream.

Live playback playgroundLoading preview
Test direct HLS playback or the hosted Callaba embed
Use direct HLS when you want to validate viewer-side playback quickly, then switch to iframe embed when you want the hosted player surface on your site.
HLS / m3u8Iframe embedBrowser-ready

Runtime playback signals

getStat for Web players answers the source-side question first: is the playback process still receiving media with believable bitrate and cadence. That makes it the fastest operational check before you blame embed logic, branding, access control, or the viewer browser itself.

The preview below mirrors the same runtime fields documented for getStat. Use it when playback quality looks wrong and you want to confirm whether the player process still has a healthy upstream signal to package.

Playback runtime

Preview the runtime shape behind a live web player

For web players, getStat answers both sides of the first operational question: is the player process still receiving believable source media, and are viewers actually connected right now. Together these fields tell you whether playback still has a healthy upstream signal and whether the audience is actively watching.

Runtime preview
getStat field shape
Process view

bitrate_kbits

Previewing the same runtime signal operators usually inspect first.

4,700 kbits/s
viewers
8 live
out_time_ms
3:00
updated
11:00:34 PM
Operational signals
bitrate_kbits

4,700 kbits/s

This is the source-side signal the player process still has something healthy to package.

fps

30.0

The fastest way to tell whether playback quality issues already started before the viewer layer.

viewers

8

Current connected audience reported by the same getStat response used for the live player process.

progress

continue

3:00 packaged · 1.00x worker speed

Use this runtime check before you blame the viewer layer. If bitrate and cadence already look wrong here, the issue is usually upstream of branding, access control, or embed logic.

Examples by preset

The most useful presets for this module are playback workflow shapes rather than transport families alone: expose one live source as one public player, protect the player behind authorization, group related players together, or prepare the player for adaptive bitrate playback.

SRT server to public web player

{
  "vod_name": "Main stage player",
  "vod_type": "VOD_TYPE_LIVE_STREAM",
  "input": {
    "input_type": "INPUT_TYPE_SRT_SOFTWARE",
    "input_module_id": "SRT_SERVER_ID",
    "input_stream_id": "",
    "entity_name": "Main stage player",
    "module_name": "MODULE_VOD"
  },
  "authorization": {
    "authorization_type": "VOD_PASSWORD_DISABLED",
    "credentials": []
  },
  "adaptive_bitrate_settings": {
    "input_resolution": "MAX_RESOLUTION_UNSET"
  },
  "hls_fragment_size": 3,
  "hls_fragment_length": 60,
  "dash_fragment_size": 3,
  "dash_fragment_length": 60,
  "initial_live_manifest_size": 4,
  "live_sync_duration_count": 5,
  "pay_per_view_settings": {
    "type": "PAY_PER_VIEW_DISABLED",
    "client_id": ""
  },
  "active": true
}

RTMP server to public web player

{
  "vod_name": "RTMP browser player",
  "vod_type": "VOD_TYPE_LIVE_STREAM",
  "input": {
    "input_type": "INPUT_TYPE_RTMP_SOFTWARE",
    "input_module_id": "RTMP_SERVER_ID",
    "input_stream_id": "",
    "entity_name": "RTMP browser player",
    "module_name": "MODULE_VOD"
  },
  "authorization": {
    "authorization_type": "VOD_PASSWORD_DISABLED",
    "credentials": []
  },
  "adaptive_bitrate_settings": {
    "input_resolution": "MAX_RESOLUTION_UNSET"
  },
  "hls_fragment_size": 3,
  "hls_fragment_length": 60,
  "dash_fragment_size": 3,
  "dash_fragment_length": 60,
  "initial_live_manifest_size": 4,
  "live_sync_duration_count": 5,
  "pay_per_view_settings": {
    "type": "PAY_PER_VIEW_DISABLED",
    "client_id": ""
  },
  "active": true
}

Password-protected web player

{
  "vod_name": "Partner review player",
  "vod_type": "VOD_TYPE_LIVE_STREAM",
  "input": {
    "input_type": "INPUT_TYPE_SRT_SOFTWARE",
    "input_module_id": "SRT_SERVER_ID",
    "input_stream_id": "",
    "entity_name": "Partner review player",
    "module_name": "MODULE_VOD"
  },
  "authorization": {
    "authorization_type": "VOD_PASSWORD_ONLY_MANUALLY",
    "credentials": [
      {
        "email": "[email protected]",
        "password": "guest-password"
      }
    ]
  },
  "adaptive_bitrate_settings": {
    "input_resolution": "MAX_RESOLUTION_UNSET"
  },
  "hls_fragment_size": 3,
  "hls_fragment_length": 60,
  "dash_fragment_size": 3,
  "dash_fragment_length": 60,
  "initial_live_manifest_size": 4,
  "live_sync_duration_count": 5,
  "pay_per_view_settings": {
    "type": "PAY_PER_VIEW_DISABLED",
    "client_id": ""
  },
  "active": true
}

Grouped variant player

{
  "vod_name": "Main stage EN",
  "vod_type": "VOD_TYPE_LIVE_STREAM",
  "input": {
    "input_type": "INPUT_TYPE_SRT_SOFTWARE",
    "input_module_id": "SRT_SERVER_ID",
    "input_stream_id": "",
    "entity_name": "Main stage EN",
    "module_name": "MODULE_VOD"
  },
  "authorization": {
    "authorization_type": "VOD_PASSWORD_DISABLED",
    "credentials": []
  },
  "adaptive_bitrate_settings": {
    "input_resolution": "MAX_RESOLUTION_UNSET"
  },
  "hls_fragment_size": 3,
  "hls_fragment_length": 60,
  "dash_fragment_size": 3,
  "dash_fragment_length": 60,
  "initial_live_manifest_size": 4,
  "live_sync_duration_count": 5,
  "group_settings": {
    "group_id": "VOD_GROUP_ID",
    "name": "English",
    "selected": true
  },
  "pay_per_view_settings": {
    "type": "PAY_PER_VIEW_DISABLED",
    "client_id": ""
  },
  "active": true
}

Workflow examples

These scenarios frame why a web player exists in a production design, not only how the request body is shaped.

Use a web player when a live source should become a browser playback endpoint

Create a web player when the operational goal is not just to receive a stream, but to expose it as a viewer-facing browser experience with a stable player URL and a generated HLS output.

  • Why it helps: one API object covers ingest hookup, playback packaging, and viewer-facing delivery settings.
  • Typical fit: event pages, internal monitoring players, embedded live playback, and browser viewing for SRT or RTMP sources.

Use a web player when access control belongs in the playback layer

The web player module is also where playback access is shaped. That includes password-based access, optional pay-per-view settings, and player grouping for multi-variant or multi-language viewing experiences.

  • Key controls: authorization, group_settings, and pay_per_view_settings
  • Typical fit: partner review rooms, restricted event streams, grouped language feeds, and managed viewer onboarding.

Use a web player when delivery tuning matters as much as the source

The playback side is shaped by fragment size, playlist length, and adaptive bitrate settings, not only by the input source. That makes this module the right place to tune viewer experience rather than only ingest reliability.

  • Key controls: adaptive_bitrate_settings, hls_fragment_size, hls_fragment_length, initial_live_manifest_size, and live_sync_duration_count
  • Operational fit: player startup tuning, buffering reduction, and ABR-oriented playback preparation.
POST
/api/vod/create

Creates a new web player in Callaba Engine.

The backend exposes this method as POST /api/vod/create. The payload combines a live input definition with playback-specific controls such as HLS and DASH fragment settings, adaptive bitrate configuration, optional authorization, optional pay-per-view, optional group assignment, and optional presentation fields.

The create flow follows the same shape in the product UI. In practice, the request body is assembled from source settings, playback delivery settings, optional transcoding, optional audio or video modifications, optional overlay settings, and access-control choices.

In the dashboard, operators see this through labels such as Player name, Input type, Web player URL, HLS fragment size, and authorization controls for restricted playback.

Although the examples below focus on live playback, the same module also supports on-demand-style player types and group-driven viewer experiences.

Authentication uses the dashboard-issued JWT token in the x-access-token header.

Examples by preset

The examples below are grouped by playback presets rather than by one oversized payload. That makes them easier to reuse for real viewer-facing workflows.

Workflow-oriented use cases

Use a web player when a live source should become a browser playback endpoint with stable URLs, delivery settings, and viewer-facing access rules.

  • Good fit for: public event pages, partner review players, embedded live playback, grouped language feeds, and browser-ready HLS delivery.
  • Not the same as: an ingest boundary like SRT servers or a processing pipeline like Restreams.

Once a player is live, operators usually care about three things first: whether viewers can open the player, what viewer count the playback layer currently sees, and what live bitrate and FPS the process is reporting.

Public playback

Use this preset when one managed SRT source should become one public browser playback endpoint with no access barrier.

SRT server to public web player

This is the cleanest live-player setup for open browser viewing. The player layer handles packaging and playback while the source remains managed upstream.

SRT server to public web player
Copy code
curl --request POST \
--url http://localhost/api/vod/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"vod_name": "Main stage player",
"vod_type": "VOD_TYPE_LIVE_STREAM",
"input": {
"input_type": "INPUT_TYPE_SRT_SOFTWARE",
"input_module_id": "SRT_SERVER_ID",
"input_stream_id": "",
"entity_name": "Main stage player",
"module_name": "MODULE_VOD"
},
"authorization": {
"authorization_type": "VOD_PASSWORD_DISABLED",
"credentials": []
},
"adaptive_bitrate_settings": {
"input_resolution": "MAX_RESOLUTION_UNSET"
},
"hls_fragment_size": 3,
"hls_fragment_length": 60,
"dash_fragment_size": 3,
"dash_fragment_length": 60,
"initial_live_manifest_size": 4,
"live_sync_duration_count": 5,
"pay_per_view_settings": {
"type": "PAY_PER_VIEW_DISABLED",
"client_id": ""
},
"support_email": "",
"transcoding": {
"video_transcoding": "Disabled",
"output_video_bitrate": 6000,
"preset": "ultrafast",
"tune": "Disabled",
"crf": "Disabled",
"pix_fmt": "Disabled",
"encoding_rate": "",
"filter_fps": "",
"gop": "Disabled",
"force_key_frames": 2,
"frame_width": "",
"frame_height": "",
"slices": "",
"cores": "",
"xlnx_hwdev": "0",
"audio_transcoding": "Disabled",
"output_audio_bitrate": 128,
"sample_rate": 44100
},
"modify_audio": {
"type": "DISABLED",
"channel": "1,2",
"track": "0"
},
"modify_video": {
"type": "DISABLED"
},
"overlay": {
"type": "DISABLED",
"position": {
"x": 1,
"y": 1
}
},
"active": true
}'
RTMP server to public web player

This keeps the playback contract stable even if the ingest transport on the source side remains RTMP.

RTMP server to public web player
Copy code
curl --request POST \
--url http://localhost/api/vod/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"vod_name": "RTMP browser player",
"vod_type": "VOD_TYPE_LIVE_STREAM",
"input": {
"input_type": "INPUT_TYPE_RTMP_SOFTWARE",
"input_module_id": "RTMP_SERVER_ID",
"input_stream_id": "",
"entity_name": "RTMP browser player",
"module_name": "MODULE_VOD"
},
"authorization": {
"authorization_type": "VOD_PASSWORD_DISABLED",
"credentials": []
},
"adaptive_bitrate_settings": {
"input_resolution": "MAX_RESOLUTION_UNSET"
},
"hls_fragment_size": 3,
"hls_fragment_length": 60,
"dash_fragment_size": 3,
"dash_fragment_length": 60,
"initial_live_manifest_size": 4,
"live_sync_duration_count": 5,
"pay_per_view_settings": {
"type": "PAY_PER_VIEW_DISABLED",
"client_id": ""
},
"support_email": "",
"transcoding": {
"video_transcoding": "Disabled",
"output_video_bitrate": 6000,
"preset": "ultrafast",
"tune": "Disabled",
"crf": "Disabled",
"pix_fmt": "Disabled",
"encoding_rate": "",
"filter_fps": "",
"gop": "Disabled",
"force_key_frames": 2,
"frame_width": "",
"frame_height": "",
"slices": "",
"cores": "",
"xlnx_hwdev": "0",
"audio_transcoding": "Disabled",
"output_audio_bitrate": 128,
"sample_rate": 44100
},
"modify_audio": {
"type": "DISABLED",
"channel": "1,2",
"track": "0"
},
"modify_video": {
"type": "DISABLED"
},
"overlay": {
"type": "DISABLED",
"position": {
"x": 1,
"y": 1
}
},
"active": true
}'
Restricted playback

Use this preset when the player should exist, but not as a public page. The browser endpoint is still generated, but access is gated by player-side credentials.

Password-protected web player

This is a good fit for partner review, internal screenings, premium previews, or any case where access control belongs in the playback layer itself.

Password-protected web player
Copy code
curl --request POST \
--url http://localhost/api/vod/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"vod_name": "Partner review player",
"vod_type": "VOD_TYPE_LIVE_STREAM",
"input": {
"input_type": "INPUT_TYPE_SRT_SOFTWARE",
"input_module_id": "SRT_SERVER_ID",
"input_stream_id": "",
"entity_name": "Partner review player",
"module_name": "MODULE_VOD"
},
"authorization": {
"authorization_type": "VOD_PASSWORD_ONLY_MANUALLY",
"credentials": [
{
"email": "[email protected]",
"password": "guest-password"
}
]
},
"adaptive_bitrate_settings": {
"input_resolution": "MAX_RESOLUTION_UNSET"
},
"hls_fragment_size": 3,
"hls_fragment_length": 60,
"dash_fragment_size": 3,
"dash_fragment_length": 60,
"initial_live_manifest_size": 4,
"live_sync_duration_count": 5,
"pay_per_view_settings": {
"type": "PAY_PER_VIEW_DISABLED",
"client_id": ""
},
"support_email": "",
"transcoding": {
"video_transcoding": "Disabled",
"output_video_bitrate": 6000,
"preset": "ultrafast",
"tune": "Disabled",
"crf": "Disabled",
"pix_fmt": "Disabled",
"encoding_rate": "",
"filter_fps": "",
"gop": "Disabled",
"force_key_frames": 2,
"frame_width": "",
"frame_height": "",
"slices": "",
"cores": "",
"xlnx_hwdev": "0",
"audio_transcoding": "Disabled",
"output_audio_bitrate": 128,
"sample_rate": 44100
},
"modify_audio": {
"type": "DISABLED",
"channel": "1,2",
"track": "0"
},
"modify_video": {
"type": "DISABLED"
},
"overlay": {
"type": "DISABLED",
"position": {
"x": 1,
"y": 1
}
},
"active": true
}'
Grouped playback

Use this preset when one player should join a group of related browser endpoints, for example different languages, programs, or alternate event views.

Grouped variant player

The grouped-player path is useful when the browser experience is bigger than one isolated URL and the viewer should move between related player variants.

Grouped variant player
Copy code
curl --request POST \
--url http://localhost/api/vod/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"vod_name": "Main stage EN",
"vod_type": "VOD_TYPE_LIVE_STREAM",
"input": {
"input_type": "INPUT_TYPE_SRT_SOFTWARE",
"input_module_id": "SRT_SERVER_ID",
"input_stream_id": "",
"entity_name": "Main stage EN",
"module_name": "MODULE_VOD"
},
"authorization": {
"authorization_type": "VOD_PASSWORD_DISABLED",
"credentials": []
},
"adaptive_bitrate_settings": {
"input_resolution": "MAX_RESOLUTION_UNSET"
},
"hls_fragment_size": 3,
"hls_fragment_length": 60,
"dash_fragment_size": 3,
"dash_fragment_length": 60,
"initial_live_manifest_size": 4,
"live_sync_duration_count": 5,
"pay_per_view_settings": {
"type": "PAY_PER_VIEW_DISABLED",
"client_id": ""
},
"support_email": "",
"transcoding": {
"video_transcoding": "Disabled",
"output_video_bitrate": 6000,
"preset": "ultrafast",
"tune": "Disabled",
"crf": "Disabled",
"pix_fmt": "Disabled",
"encoding_rate": "",
"filter_fps": "",
"gop": "Disabled",
"force_key_frames": 2,
"frame_width": "",
"frame_height": "",
"slices": "",
"cores": "",
"xlnx_hwdev": "0",
"audio_transcoding": "Disabled",
"output_audio_bitrate": 128,
"sample_rate": 44100
},
"modify_audio": {
"type": "DISABLED",
"channel": "1,2",
"track": "0"
},
"modify_video": {
"type": "DISABLED"
},
"overlay": {
"type": "DISABLED",
"position": {
"x": 1,
"y": 1
}
},
"active": true,
"group_settings": {
"group_id": "VOD_GROUP_ID",
"name": "English",
"selected": true
}
}'
Delivery tuning

Use this preset when the browser side should be prepared for adaptive bitrate playback rather than a single unscaled rendition.

ABR-ready web player

The real product ties adaptive bitrate to playback tuning and transcoding. This makes it useful when startup stability and viewer-side quality adaptation matter more than one fixed rendition.

ABR-ready web player
Copy code
curl --request POST \
--url http://localhost/api/vod/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"vod_name": "ABR main stage player",
"vod_type": "VOD_TYPE_LIVE_STREAM",
"input": {
"input_type": "INPUT_TYPE_SRT_SOFTWARE",
"input_module_id": "SRT_SERVER_ID",
"input_stream_id": "",
"entity_name": "Main stage player",
"module_name": "MODULE_VOD"
},
"authorization": {
"authorization_type": "VOD_PASSWORD_DISABLED",
"credentials": []
},
"adaptive_bitrate_settings": {
"input_resolution": "1080"
},
"hls_fragment_size": 3,
"hls_fragment_length": 60,
"dash_fragment_size": 3,
"dash_fragment_length": 60,
"initial_live_manifest_size": 4,
"live_sync_duration_count": 5,
"pay_per_view_settings": {
"type": "PAY_PER_VIEW_DISABLED",
"client_id": ""
},
"support_email": "",
"transcoding": {
"video_transcoding": "libx264",
"output_video_bitrate": 6000,
"preset": "ultrafast",
"tune": "Disabled",
"crf": "Disabled",
"pix_fmt": "Disabled",
"encoding_rate": "",
"filter_fps": "",
"gop": "Disabled",
"force_key_frames": 2,
"frame_width": "",
"frame_height": "",
"slices": "",
"cores": "",
"xlnx_hwdev": "0",
"audio_transcoding": "aac",
"output_audio_bitrate": 128,
"sample_rate": 44100
},
"modify_audio": {
"type": "DISABLED",
"channel": "1,2",
"track": "0"
},
"modify_video": {
"type": "DISABLED"
},
"overlay": {
"type": "DISABLED",
"position": {
"x": 1,
"y": 1
}
},
"active": true
}'
Request body parameters
Identity
vod_name
string
Copy direct link

Dashboard label: Player name.

Human-readable playback endpoint name. The create form validates it as required.

vod_type
string
Copy direct link

Player type. The default live workflow uses VOD_TYPE_LIVE_STREAM, while the product also supports on-demand styles.

vod_media_type
string
Copy direct link

Optional media type descriptor stored on the player object.

Input
input
object
Copy direct link

Dashboard label: Input type.

Input definition built from the shared source form. Real product-facing inputs include SRT servers, RTMP servers, SRT routes, and URL-based live sources.

Playback delivery
adaptive_bitrate_settings
object
Copy direct link

Adaptive bitrate settings for the player. The product uses input_resolution as the key delivery decision and ties ABR to the transcoding layer.

hls_fragment_size
integer
Copy direct link

Dashboard label: HLS fragment size.

The UI guidance recommends 3 seconds for a good HLS experience.

hls_fragment_length
integer
Copy direct link

Dashboard label: HLS fragment length.

The UI guidance recommends 60 seconds.

dash_fragment_size / dash_fragment_length
mixed
Copy direct link

DASH-side fragment sizing controls stored with the player object.

initial_live_manifest_size
integer
Copy direct link

Dashboard label: Minimal HLS fragment count.

Controls how many fragments are preloaded before playback begins.

live_sync_duration_count
integer
Copy direct link

Dashboard label: Edge of live delay.

Controls how far from the latest fragment playback should start for live viewing.

Access and grouping
authorization
object
Copy direct link

Player-side authorization settings. The UI uses this to require viewer authorization before the web player can be opened.

group_settings
object
Copy direct link

Optional group assignment block with group_id, per-group display name, and selected default state.

pay_per_view_settings
object
Copy direct link

Optional monetization block. The disabled state remains the normal default for most players.

Presentation
cover_path / logo_path / useCustomLogo / useCustomBackground
mixed
Copy direct link

Optional presentation and branding settings for the browser-facing player experience.

event_date / timeZone / eventDateStatus / support_email
mixed
Copy direct link

Optional event and support metadata stored with the player object.

Processing
transcoding / modify_audio / modify_video / overlay
object
Copy direct link

Optional media processing blocks used when the player should do more than simple pass-through packaging.

Runtime
active
boolean
Copy direct link

Dashboard label: Enable once created.

Controls whether the player should be active right after provisioning.

Create web player
Copy code
curl --request POST \
--url http://localhost/api/vod/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"vod_name": "Main stage player",
"vod_type": "VOD_TYPE_LIVE_STREAM",
"input": {
"input_type": "INPUT_TYPE_SRT_SOFTWARE",
"input_module_id": "SRT_SERVER_ID",
"input_stream_id": "",
"entity_name": "Main stage player",
"module_name": "MODULE_VOD"
},
"authorization": {
"authorization_type": "VOD_PASSWORD_DISABLED",
"credentials": []
},
"adaptive_bitrate_settings": {
"input_resolution": "MAX_RESOLUTION_UNSET"
},
"hls_fragment_size": 3,
"hls_fragment_length": 60,
"dash_fragment_size": 3,
"dash_fragment_length": 60,
"initial_live_manifest_size": 4,
"live_sync_duration_count": 5,
"pay_per_view_settings": {
"type": "PAY_PER_VIEW_DISABLED",
"client_id": ""
},
"support_email": "",
"transcoding": {
"video_transcoding": "Disabled",
"output_video_bitrate": 6000,
"preset": "ultrafast",
"tune": "Disabled",
"crf": "Disabled",
"pix_fmt": "Disabled",
"encoding_rate": "",
"filter_fps": "",
"gop": "Disabled",
"force_key_frames": 2,
"frame_width": "",
"frame_height": "",
"slices": "",
"cores": "",
"xlnx_hwdev": "0",
"audio_transcoding": "Disabled",
"output_audio_bitrate": 128,
"sample_rate": 44100
},
"modify_audio": {
"type": "DISABLED",
"channel": "1,2",
"track": "0"
},
"modify_video": {
"type": "DISABLED"
},
"overlay": {
"type": "DISABLED",
"position": {
"x": 1,
"y": 1
}
},
"active": true
}'
Response
Identity
_id
string
Copy direct link

Mongo-style identifier of the web player.

id
string
Copy direct link

Convenience alias for _id.

vod_name
string
Copy direct link

Name stored for the player object.

vod_type / vod_media_type
mixed
Copy direct link

Player type and media-type fields stored on the object.

Playback delivery
vod_port
integer
Copy direct link

Generated internal port used by the player delivery runtime.

Input
input[]
array
Copy direct link

Linked input object or objects used by the playback pipeline.

Playback delivery
adaptive_bitrate_settings / hls_fragment_* / dash_fragment_*
mixed
Copy direct link

Playback-delivery settings stored on the player object.

Access and grouping
authorization / pay_per_view_settings / group_id / users
mixed
Copy direct link

Access, monetization, group, and viewer-authorization state stored on the player.

Presentation
hidden / support_email / logo / background fields
mixed
Copy direct link

Presentation and visibility settings returned with the player object.

Runtime
active
boolean
Copy direct link

Current running-state flag for the player.

created / modified
string
Copy direct link

Timestamps managed by the backend.

Operation result
success
boolean
Copy direct link

The model exposes success: true as a virtual field in successful responses.

Response: Create web player
JSON
Copy code
{
"_id": "66015d2997300f9385d32c00",
"id": "66015d2997300f9385d32c00",
"vod_name": "Main stage player",
"vod_type": "VOD_TYPE_LIVE_STREAM",
"vod_media_type": "video",
"vod_port": 20840,
"input": [
{
"_id": "66015d2997300f9385d32c01",
"id": "66015d2997300f9385d32c01",
"input_type": "INPUT_TYPE_SRT_SOFTWARE",
"input_module_id": "SRT_SERVER_ID",
"input_stream_id": "",
"entity_name": "Main stage player",
"module_name": "MODULE_VOD"
}
],
"authorization": {
"authorization_type": "VOD_PASSWORD_DISABLED",
"credentials": []
},
"adaptive_bitrate_settings": {
"input_resolution": "MAX_RESOLUTION_UNSET"
},
"hls_fragment_size": 3,
"hls_fragment_length": 60,
"dash_fragment_size": 3,
"dash_fragment_length": 60,
"initial_live_manifest_size": 4,
"live_sync_duration_count": 5,
"pay_per_view_settings": {
"type": "PAY_PER_VIEW_DISABLED",
"client_id": ""
},
"group_id": null,
"users": [],
"hidden": false,
"support_email": "",
"transcoding": {
"video_transcoding": "Disabled",
"output_video_bitrate": 6000,
"preset": "ultrafast",
"tune": "Disabled",
"crf": "Disabled",
"pix_fmt": "Disabled",
"encoding_rate": "",
"filter_fps": "",
"gop": "Disabled",
"force_key_frames": 2,
"frame_width": "",
"frame_height": "",
"slices": "",
"cores": "",
"xlnx_hwdev": "0",
"audio_transcoding": "Disabled",
"output_audio_bitrate": 128,
"sample_rate": 44100
},
"modify_audio": {
"type": "DISABLED",
"channel": "1,2",
"track": "0"
},
"modify_video": {
"type": "DISABLED"
},
"overlay": {
"type": "DISABLED",
"position": {
"x": 1,
"y": 1
}
},
"active": true,
"created": "2026-03-24T14:00:00.000Z",
"modified": "2026-03-24T14:00:00.000Z",
"success": true
}
POST
/api/vod/getCount
POST
/api/vod/getAll
POST
/api/vod/getById
POST
/api/vod/update
POST
/api/vod/start
POST
/api/vod/stop
DELETE
/api/vod/remove
POST
/api/vod/getStat