Control Panel — API Documentation

Welcome to the new Control Panel. If you are having trouble with any functionality, or have any feedback, we would appreciate a support ticket. Additionally, you can continue to use the old control panel until it is retired in March 2019.


This API creates a Playlist of live streams and/or VOD files to be played on a Channel at a scheduled time. The playlist can be configured to play through its list once, or to loop continuously.

DVR applications additionally can set the # of chunks to keep in their playlist and how long to keep the dvr session alive by providing a 'playlist_count' and 'playlist_timeout'. To edit the dvr settings see stream.dvrsettings api.

Example Request (JSON)


Example Code (PHP)

$request = array(
	'command' => 'channel.addchannel',
	'timestamp' => time(),
	'cdn' => 158,
	'name' => 'My first playlist',
	'stream' => 'my_channel_stream_name',
	'repeat' => 1,
	'active' => 0,
	'scheduled' => '2014-10-13 15:00:00',
	'videos' => array(                      // optional
		0 => array(
			'video' => 'sestore1/username/path/play_first.mp4',
			'start' => 0,
			'length' => -1,
			'sort_order' => 1
		1 => array(
			'video' => 'sestore1/username/path/play_second.mp4',
			'start' => 0,
			'length' => -1,
			'sort_order' => 2
	// DVR settings
	'playlist_count' => 4, // optional
	'playlist_timeout' => 600, // optional

    //Create request signature
    $json_request = json_encode($request);
    $sig = base64_encode(hash_hmac('sha256', $json_request,
        '8fc8c48da81e6a2a06a9556379bf798af508dc0792497c678b4c3532ba8b637f', true));
    $request['signature'] = $sig;
    $json_request = json_encode($request);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, ''); // Set the URL
    curl_setopt($ch, CURLOPT_POST, true); // Perform a POST
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // If not set, curl prints output to the browser
    curl_setopt($ch, CURLOPT_HEADER, false); // If set, curl returns headers as part of the data stream
    curl_setopt($ch, CURLOPT_POSTFIELDS, array('json' => $json_request)); //'Json' string or 'PHP' serialized return
    //If your PHP host does not have a proper SSL certificate bundle, you will need to turn off SSL Certificate Verification
    //This is dangerous, and should only be done temporarily until a proper certificate bundle can be installed
    //curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // Turns off verification of the SSL certificate.
    //curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Turns off verification of the SSL certificate.
    $response = curl_exec($ch); //Execute the API Call
    if (!$response) {
        die('Failed to connect to ScaleEngine API');
    //Decode the response as an associative array 
    $arrResponse = json_decode($response, true); 
    if ($arrResponse) {
        //Operation completed successfully
        //TODO Add work here
    } else {
        //Operation failed
        echo 'An error occured processing your request:';

Request Fields

command [REQUIRED] [string] - API command to execute
cdn_id [REQUIRED] [int] - The ScaleEngine CDN ID of your account
api_key [REQUIRED] [string] - The API key provided as part of your account
name [REQUIRED] [string] - A descriptive name given to the playlist.
stream [REQUIRED] [string] - Name of the Channel on which the playlist will be shown.
repeat [REQUIRED] [int] - Configures how the playlist should be handled when it is finished.
0 - Channel will shutdown, until the next scheduled playlist.
1 - Playlist will loop continuously, until a new playlist is scheduled.
active [REQUIRED] [int] - Marks the playlist to be played when the scheduled time comes due, or at the next interval if no scheduled time is set.
1 - active
0 - inactive
scheduled [OPTIONAL] [string] - The date and time that the playlist should be shown on the Channel. If not provided and no other playlist has been scheduled, this playlist will play automatically.
videos [OPTIONAL] [array] - Array of Videos to be added to the playlist
video [REQUIRED] [string] - The stream name or file path. VOD examples look like like: mp4:sestore3/username/path/filename.mp4, mp3:sestore3/username/audio/song.mp3,
start [REQUIRED] [int] - the time in seconds where the VOD file should begin. set to 0 to start at the beginning.
length [REQUIRED] [int] - the number of seconds to play of the stream or VOD file.
-1 to play to the end of a file
-2 to play to the end of a live stream
sort_order [REQUIRED] [int] - the order in which the video should appear in the playlist.
playlist_count [OPTIONAL] [int] - How many chunks to have on the manifest for each rendition. Number must be between 4 and [Default: 4]
playlist_timeout [OPTIONAL] [int] - How many seconds to keep the playlist after the stream disconnects. Value must be between 60 and 1200 [Default: 600]
timestamp [REQUIRED] [int] - The unix timestamp of your request, used to prevent authenticated API requests from being replayed

Example Result (JSON)

	"message": "channel created",
	"status": "success",
	"id" : 1,
	"videos_not_added" : [{
		1 : "#1: sestore1/username/path/play_second.mp4 - video name invalid",
	"handle_time":"0.3795 seconds"

Result Fields

message [string] - Debugging message
status [string] - "success" or "failure"
id [int] - Unique ID of the Playlist
videos_not_added [array] - If a VOD file or stream name is invalid an array will be returned with the reasons they could not be added. The array key will be associated to the sort_order value that was set, and the value will be an error message.
handle_time [float] - The amount of time spent processing your request