arrow-left
All pages
gitbookPowered by GitBook
1 of 11

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Record

hashtag
Start Recording

Start recording the stream. If the requested stream does not exist on the server, this recording task is reserved. And when the stream is created, it automatically starts recording.

hashtag
Request

chevron-rightPOST /v1/vhosts/{vhost}/apps/{app}:startRecordhashtag

hashtag
Header

hashtag
Responses

chevron-right200 Okhashtag

The request has succeeded

hashtag
Header

chevron-right400 Bad Requesthashtag

Invalid request.

chevron-right401 Unauthorizedhashtag

Authentication required

hashtag
Header

chevron-right404 Not Foundhashtag

The given vhost or application name could not be found.

hashtag
Body

chevron-right409 Conflicthashtag

duplicate ID

hashtag
Stop Recording

hashtag
Request

chevron-rightPOST /v1/vhosts/{vhost}/apps/{app}:stopRecordhashtag

hashtag
Header

hashtag
Responses

chevron-right200 Okhashtag

The request has succeeded

hashtag
Header

chevron-right400 Bad Requesthashtag

Invalid request.

chevron-right401 Unauthorizedhashtag

Authentication required

hashtag
Header

chevron-right404 Not Foundhashtag

The given vhost/application name or id of recording task could not be found.

hashtag
Body

hashtag
Get Recording State

hashtag
Request

chevron-rightPOST /v1/vhosts/{vhost}/apps/{app}:recordshashtag

hashtag
Header

hashtag
Responses

chevron-right200 Okhashtag

The request has succeeded

hashtag
Header

chevron-right401 Unauthorizedhashtag

Authentication required

hashtag
Header

chevron-right404 Not Foundhashtag

The given vhost or application name could not be found.

hashtag
Body

hashtag
State of Recording

The Recording task has the state shown in the table below. You can get the state in the Start Recording and Get Recording State API response.

hashtag
Body : Single file recording

hashtag
{

hashtag
Body : Interval based split recording

hashtag
Body : Schedule based split recording

hashtag
Body : Recoding file path setting

hashtag
Body

Please note that responses are incorrectly returned in Json array format for version 0.15.3 and earlier.

hashtag
Body
hashtag
Body
hashtag
Body
hashtag
Body
hashtag
Body
hashtag
Body

The response is Json array format.

hashtag
Body

Ready

Preparing to start or waiting for the stream to be created.

Started

In Progress

Stopping

Is stopping

Stopped

Stopped

Error

Error

Content-Type: application/json
Authorization: Basic {credentials}

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
WWW-Authenticate: Basic realm=”OvenMediaEngine”
    "id": "{unique_record_id}",
    "stream": {
        "name": "{output_stream_name}",
        "variantNames": []
    }
}

# id (required)
    unique ID to identify the recording task

{
  "id": "{unique_record_id}",
  "stream": {
    "name": "{output_stream_name}"
  },
  "interval": 60000,
  "segmentationRule": "discontinuity"
{
  "id": "{unique_record_id}",
  "stream": {
    "name": "{output_stream_name}"
  },
  "schedule" : "0 */1 *"
  "segmentationRule": "continuity"
{
  "id": "{unique_record_id}",
  "stream": {
    "name": "{output_stream_name}"
  },
  "filePath" : "/path/to/file_name.mp4"
  "infoPath": "/path/to/file_name.xml"
{
    "statusCode": 200,
    "message": "OK",
    "response": {
        "id": "2",
        "state": "ready",

{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}
{
    "message": "[HTTP] Could not find the application: [vhost/app1] (404)",
    "statusCode": 404
}
Authorization: Basic {credentials}

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
Content-Type: application/json
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
    "message": "[HTTP] Could not find the application: [vhost/app1] (404)",
    "statusCode": 404
}
Authorization: Basic {credentials}

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
Content-Type: application/json
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
    "message": "[HTTP] Could not find the application: [vhost/app1] (404)",
    "statusCode": 404
}
{
    "id": "{unique_record_id}"
}

# id (required)
    unique ID to identify the recording task
{
    "statusCode": 200,
    "message": "OK",
}

# statusCode
	Same as HTTP Status Code
# message
	A human-readable description of the response code
{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}
{
    "id": "{unique_record_id}"
}

# id (optional)
    unique ID to identify the recording task. If no id is given in the request, the full list is returned.
{
    "statusCode": 200,
    "message": "OK",
    "response": [
        {
            "id": "2",
            "state": "recording",
            "vhost": "default",
            "app": "app",
            "stream": {
                "name": "stream",
                "trackIds": [],
                "variantNames": []
            },
            "interval": 60000,
            "segmentationRule": "discontinuity",
            "createdTime": "2023-03-15T21:15:20.113+09:00",
        },
        {
            "id": "3",
            ...
        }
    ]
}

# statusCode
	Same as HTTP Status Code
# message
	A human-readable description of the response code
# response
	Information of recording tasks. If there is no recording task, 
	response with empty array ("response": [])
{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}
# stream (required)
## name (required)
output stream name
## variantNames (optional)
Array of track names to record. If empty, all tracks will be
recorded. This value is Encodes.[Video|Audio|Data].Name in the
OutputProfile setting.
}
# interval (optional)
Recording time per file (milliseconds). Not allowed to use with schedule
# segmentationRule (optional)
Define the policy for continuously or discontinuously timestamp
in divided recorded files.
continuity : timestamp of recorded files is continuous
discontinuity(default) : timestamp starts anew for each recorded file
}
# schedule (optional)
<Second Minute Hour> format, same as crontab syntax
"10 */1 *" means to output the recorded file every 10 minutes of the hour
Not allowed to use with schedule
}
# filePath(optional)
The path for recorded files can be specified.
Please refer to the Recording Guide for details on using macros
# infoPath(optional)
The path for recorded infomation file can be specified.
Please refer to the Recording Guide for details on using macros
"vhost": "default",
"app": "app",
"stream": {
"name": "stream",
"trackIds": [],
"variantNames": []
},
"interval": 60000,
"segmentationRule": "discontinuity",
"createdTime": "2023-03-15T21:15:20.113+09:00",
}
}
# statusCode
Same as HTTP Status Code
# message
A human-readable description of the response code
# response
Created recording task information

Conclude HLS Live

For live streaming of certain events, it may be necessary to immediately stop the HLS live stream and switch to VoD after the HLS live broadcast ends. This API transitions to VoD by stopping segment updates for LL-HLS and HLS streams and inserting #EXT-X-ENDLIST. By using this API with a Scheduled Channel, you can implement additional application services.

hashtag
Request

chevron-rightPOST v1/vhosts/{vhost}/apps/{app}/streams/{stream}:concludeHlsLivehashtag

hashtag
Header

hashtag
Body

hashtag
Responses

chevron-right200 Okhashtag

The request has succeeded

hashtag
Header

chevron-right400 Bad Requesthashtag

Invalid request. Body is not a Json Object or does not have a required value

chevron-right401 Unauthorizedhashtag

Authentication required

hashtag
Header

chevron-right404 Not Foundhashtag

The given vhost name or app name could not be found.

hashtag
Body

Send Subtitles

Using this API, you can insert subtitles into a stream in real time. By specifying the label of the subtitle track defined in the , you can insert multiple subtitles at once.

hashtag
Request

chevron-rightPOST v1/vhosts/{vhost}/apps/{app}/streams/{stream}:sendSubtitleshashtag
hashtag
Body
hashtag
Body
Content-Type: application/json
Authorization: Basic {credentials}

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
{}
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
	"statusCode": 200,
	"message": "OK",
}

# statusCode
	Same as HTTP Status Code
# message
	A human-readable description of the response code
{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}
{
    "statusCode": 404,
    "message": "Could not find the application: [default/non-exists] (404)"
}

hashtag
Header

Authorization: Basic {credentials}

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>

hashtag
Body

{
  "format": "webvtt",
  "data": [
    {
      "label": "Korean", // Required
      "subtitles": [
        { 
            "startOffset"

hashtag
Responses

chevron-right200 Okhashtag

The request has succeeded

hashtag
Header

Content-Type: application/json

hashtag
Body

chevron-right400 Bad Requesthashtag

Invalid request. Body is not a Json Object or does not have a required value

chevron-right401 Unauthorizedhashtag

Authentication required

hashtag
Header

WWW-Authenticate: Basic realm=”OvenMediaEngine”

hashtag
Body

chevron-right404 Not Foundhashtag

The given vhost name or app name could not be found.

hashtag
Body

application config

Send Event

It allows you to insert events into streams. Right now events only support the ID3v2 format and only the LLHLS publisher handles it. Events delivered to LLHLS Publisher are inserted as emsg boxes within the m4s container.

hashtag
Request

chevron-rightPOST v1/vhosts/{vhost}/apps/{app}/streams/{stream}:sendEventhashtag

hashtag
Header

hashtag
Body

hashtag
Responses

chevron-right200 Okhashtag

The request has succeeded

hashtag
Header

chevron-right400 Bad Requesthashtag

Invalid request. Body is not a Json Object or does not have a required value

chevron-right401 Unauthorizedhashtag

Authentication required

hashtag
Header

chevron-right404 Not Foundhashtag

The given vhost name or app name could not be found.

hashtag
Body

{
    "statusCode": 404,
    "message": "Could not find the application: [default/non-exists] (404)"
}
:
0
,
// Optional, current + offset
"durationMs": 3000, // Optional, default: 1000
"settings": "line:80%", // Optional
"text": "안녕 OvenMediaEngine의 자막" // Required
}
]
},
{
"label": "English", // Required
"subtitles": [
{
"startOffset": 0, // Optional, current + offset
"durationMs": 3000, // Optional, default: 1000
"settings": "line:80%", // Optional
"text": "Hello OvenMediaEngine Subtitles" // Required
}
]
}
]
}
# format: Currently only "webvtt" is supported.
# data: An array containing subtitle data grouped by label.
# label: The label of the subtitle track defined in the application config.
(Required)
# subtitles : An array of subtitle cues. You can insert multiple cues at once.
If the first cue has startOffset set to 0, it will be inserted immediately.
Each following cue will be inserted after the previous one finishes. (Required)
# startOffset: How long (in ms) from the current time to delay the start of the
subtitle. Negative values are not allowed. (Optional, default: 0)
# durationMs: How long (in ms) the subtitle will be displayed.
(Optional, default: 1000)
# settings: A WebVTT settings string to specify position or style of the
subtitle. (Optional)
# text: The actual subtitle text. (Required)
{
	"statusCode": 200,
	"message": "OK",
}

# statusCode
	Same as HTTP Status Code
# message
	A human-readable description of the response code
# response
	Json array containing a list of stream names
{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}
hashtag
Body
hashtag
Body
Content-Type: application/json
Authorization: Basic {credentials}

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
{
  "eventFormat": "id3v2",
  "eventType": "video",
  "events":[
      {
        "frameType": "TXXX",
        "info": "AirenSoft",
        "data": "OvenMediaEngine"
      },
      {
        "frameType": "TIT2",
        "data": "OvenMediaEngine 123"
      }
  ]
}

# eventFormat
  Currently only id3v2 is supported.
# eventType (Optional, Default : event)
  Select one of event, video, and audio. event inserts an event into every track. 
  video inserts events only on tracks of video type. 
  audio inserts events only on tracks of audio type.
# events
  It accepts only Json array format and can contain multiple events.
 
  ## frameType
    Currently, only TXXX and T??? (Text Information Frames, e.g. TIT2) are supported.
 ## info
    This field is used only in TXXX and is entered in the Description field of TXXX.
 ## data
    If the frameType is TXXX, it is entered in the Value field, 
    and if the frameType is "T???", it is entered in the Information field.
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
	"statusCode": 200,
	"message": "OK",
}

# statusCode
	Same as HTTP Status Code
# message
	A human-readable description of the response code
# response
	Json array containing a list of stream names
{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}
{
    "statusCode": 404,
    "message": "Could not find the application: [default/non-exists] (404)"
}

Push

hashtag
Start Push Publishing

Start push publishing the stream with SRT, RTMP or MPEG2-TS. If the requested stream does not exist on the server, this task is reserved. And when the stream is created, it automatically starts push publishing.

Request

chevron-rightPOST /v1/vhosts/{vhost}/apps/{app}:startPushhashtag

Header

Body : SRT

In SRT Push Publisher, only the caller connection mode is supported.

Body : RTMP

Body : MPEG2-TS

Responses

chevron-right200 Okhashtag

The request has succeeded

Header

Body

Please note that responses are incorrectly returned in Json array format for version 0.15.3 and earlier.

chevron-right400 Bad Requesthashtag

Invalid request.

chevron-right401 Unauthorizedhashtag

Authentication required

Header

Body

chevron-right404 Not Foundhashtag

The given vhost or application name could not be found.

Body

chevron-right409 Conflicthashtag

duplicate ID

hashtag
Stop Push Publishing

Request

chevron-rightPOST /v1/vhosts/{vhost}/apps/{app}:stopPushhashtag

Header

Body

Responses

chevron-right200 Okhashtag

The request has succeeded

Header

Body

chevron-right400 Bad Requesthashtag

Invalid request.

chevron-right401 Unauthorizedhashtag

Authentication required

Header

Body

chevron-right404 Not Foundhashtag

The given vhost/application name or id of recording task could not be found.

Body

hashtag
Get Push Publishing State

Request

chevron-rightPOST /v1/vhosts/{vhost}/apps/{app}:pusheshashtag

Header

Body

Responses

chevron-right200 Okhashtag

The request has succeeded

Header

Body

The response is Json array format.

chevron-right401 Unauthorizedhashtag

Authentication required

Header

Body

chevron-right404 Not Foundhashtag

The given vhost or application name could not be found.

Body

hashtag
State of Push Publishing

The Push Publishing task has the state shown in the table below. You can get the state in the Start Push Publishing and Get Push Publishing State API response.

State
Description

Output Profile

hashtag
Get Output Profile List

hashtag
Request

chevron-rightGET /v1/vhosts/{vhost}/apps/{app}/outputProfileshashtag

hashtag
Header

hashtag
Responses

chevron-right200 Okhashtag

The request has succeeded

hashtag
Header

chevron-right401 Unauthorizedhashtag

Authentication required

hashtag
Header

chevron-right404 Not Foundhashtag

The given vhost or application name could not be found.

hashtag
Body

hashtag
Create Output Profile

Add an Output Profile to the Application. If this request succeeds, the application will be restarted.

hashtag
Request

chevron-rightPOST /v1/vhosts/{vhost}/apps/{app}/outputProfileshashtag

hashtag
Header

hashtag
Responses

chevron-right200 Okhashtag

The request has succeeded

hashtag
Header

chevron-right207 Multi-Statushashtag

There might be a mixture of responses.

hashtag
Header

chevron-right400 Bad Requesthashtag

Invalid request. Body is not a Json array or does not have a required value

chevron-right401 Unauthorizedhashtag

Authentication required

hashtag
Header

chevron-right404 Not Foundhashtag

The given vhost or application name could not be found.

hashtag
Body

chevron-right409 Conflicthashtag

A output profile name already exists

hashtag
Get Output Profile Information

hashtag
Request

chevron-rightGET /v1/vhosts/{vhost}/apps/{app}/outputProfiles/{profile}hashtag

hashtag
Header

hashtag
Responses

chevron-right200 Okhashtag

The request has succeeded

hashtag
Header

chevron-right401 Unauthorizedhashtag

Authentication required

hashtag
Header

chevron-right404 Not Foundhashtag

The given vhost or application name could not be found.

hashtag
Body

hashtag
Delete Output Profile

Delete output profile settings. If this request succeeds, the Application will be restarted.

hashtag
Request

chevron-rightDELETE /v1/vhosts/{vhost}/apps/{app}/outputProfiles/{profile}hashtag

hashtag
Header

hashtag
Responses

chevron-right200 Okhashtag

The request has succeeded

hashtag
Header

chevron-right401 Unauthorizedhashtag

Authentication required

hashtag
Header

chevron-right404 Not Foundhashtag

The given vhost or application name could not be found.

hashtag
Body

ready

Waiting for the stream to be created.

connecting

Connecting to destination

pushing

Connected and streaming

stopping

Disconnection / stop in progress

stopped

Push is disconnected / stopped

error

Push encountered an error

Content-Type: application/json
Authorization: Basic {credentials}

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
{
  "id": "{unique_push_id}",
  "stream": {
    "name": "{output_stream_name}",
    "variantNames": []
  },
  "protocol": "srt",
  "url": "srt://{host}[:port]?mode=caller&latency=120000&timeout=500000",
  "streamKey": ""
}

# id (required)
    unique ID to identify the task
    
# stream (required)
    ## name (required)
        output stream name
        
    ## variantNames (optional)
        Array of track names to publsh. 
        This value is Encodes.[Video|Audio|Data].Name in the OutputProfile
        setting.
        
        If empty, all tracks will be sent.

# protocol (required)
    srt
    
# url (required) 
    address of destination.
    options can be set in query-string format.
    
# streamKey (optional)
    not used with mpegts
{
  "id": "{unique_push_id}",
  "stream": {
    "name": "{output_stream_name}",
    "variantNames": [ "h264_fhd", "aac" ]
  },
  "protocol": "rtmp",
  "url":"rtmp://{host}[:port]/{app_name}",
  "streamKey":"{stream_name}"
}

# id (required)
    unique ID to identify the task
    
# stream (required)
    ## name (required)
        output stream name
        
    ## variantNames (optional)
        Array of track names to publsh. 
        This value is Encodes.[Video|Audio|Data].Name in the OutputProfile
        setting.
        
        If empty, The first track among video tracks (by ID) and the first 
        track among audio tracks (by ID) are selected automatically.

# protocol (required)
    rtmp
    
# url (required) 
    address of destination
    
# streamKey (required)
    RTMP stream key
{
  "id": "{unique_push_id}",
  "stream": {
    "name": "{output_stream_name}",
    "variantNames": []
  },
  "protocol": "mpegts",
  "url": "udp://{host}[:port]",
  "streamKey": ""
}

# id (required)
    unique ID to identify the task
    
# stream (required)
    ## name (required)
        output stream name
        
    ## variantNames (optional)
        Array of track names to publsh. 
        This value is Encodes.[Video|Audio|Data].Name in the OutputProfile
        setting.
        
        If empty, all tracks will be sent.

# protocol (required)
    mpegts
    
# url (required) 
    address of destination
    
# streamKey (optional)
    not used with mpegts
{
    "statusCode": 200,
    "message": "OK",
    "response": {
        "id": "{unique_push_id}",
        "state": "ready",
            
        "vhost": "default",
        "app": "app",
        "stream": {
            "name": "{output_stream_name}",
            "trackIds": [],
            "variantNames": []
        },
            
        "protocol": "rtmp",
        "url": "rtmp://{host}[:port]/{app_name}",
        "streamKey": "{stream_name}",
            
        "sentBytes": 0,
        "sentTime": 0,
        "sequence": 0,
        "totalsentBytes": 0,
        "totalsentTime": 0,
            
        "createdTime": "2023-03-15T23:02:34.371+09:00",
        "startTime": "1970-01-01T09:00:00.000+09:00",
        "finishTime": "1970-01-01T09:00:00.000+09:00"
    }
}

# statusCode
    Same as HTTP Status Code
# message
    A human-readable description of the response code
# response
    Created push publishing task information
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}
{
    "message": "[HTTP] Could not find the application: [vhost/app1] (404)",
    "statusCode": 404
}
Authorization: Basic {credentials}

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
{
    "id": "{unique_push_id}"
}

# id (required)
    unique ID to identify the push publishing task
Content-Type: application/json
{
    "statusCode": 200,
    "message": "OK",
}

# statusCode
	Same as HTTP Status Code
# message
	A human-readable description of the response code
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}
{
    "message": "[HTTP] Could not find the application: [vhost/app1] (404)",
    "statusCode": 404
}
Authorization: Basic {credentials}

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
{
    "id": "{unique_push_id}"
}

# id (optional)
    unique ID to identify the push publishing task. If no id is given in the request, the full list is returned.
Content-Type: application/json
{
    "statusCode": 200,
    "message": "OK",
    "response": [
        {
            "id": "{unique_push_id}",
            "state": "started",
            
            "vhost": "default",
            "app": "app",
            "stream": {
                "name": "{output_stream_name}",
                "trackIds": [],
                "variantNames": []
            },
            
            "protocol": "rtmp",
            "url": "rtmp://{host}[:port]/{app_name}",
            "streamKey": "{stream_name}",
            
            "sentBytes": 0,
            "sentTime": 0,
            "sequence": 0,
            "totalsentBytes": 0,
            "totalsentTime": 0,
            
            "createdTime": "2023-03-15T23:02:34.371+09:00",
            "startTime": "1970-01-01T09:00:00.000+09:00",
            "finishTime": "1970-01-01T09:00:00.000+09:00"
        },
        {
            "id": "4",
            ...
        }
    ]
}

# statusCode
	Same as HTTP Status Code
# message
	A human-readable description of the response code
# response
	Information of recording tasks. If there is no recording task, 
	response with empty array ("response": [])
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}
{
    "message": "[HTTP] Could not find the application: [vhost/app1] (404)",
    "statusCode": 404
}
hashtag
Body
hashtag
Body
hashtag
Body

Configure output profiles to be created in Json array format.

hashtag
Body

It responds with Json array for each request.

hashtag
Body

It responds with Json array for each request.

hashtag
Body
hashtag
Body
hashtag
Body
hashtag
Body
hashtag
Body
Content-Type: application/json
Authorization: Basic {credentials}

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
    "message": "[HTTP] Could not find the application: [vhost/app1] (404)",
    "statusCode": 404
}
{
	"statusCode": 200,
	"message": "OK",
	"response": [
		"default",
		"audio_only"
	]
}


{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}

HLS Dump

The LLHLS Dump feature can be controlled with this API.

hashtag
Start Dump

hashtag
Request

chevron-rightPOST /v1/vhosts/{vhost name}/apps/{app}/streams/{stream}:startHlsDumphashtag

hashtag
Header

hashtag
Responses

chevron-right200 Okhashtag

The request has succeeded

hashtag
Header

chevron-right400 Bad Requesthashtag

Invalid request. Body is not a Json Object or does not have a required value

chevron-right401 Unauthorizedhashtag

Authentication required

hashtag
Header

chevron-right404 Not Foundhashtag

The given vhost name or app name or stream name could not be found.

hashtag
Header

chevron-right500 Internal Server Errorhashtag

Unknown error

hashtag
Stop Dump

hashtag
Request

chevron-rightPOST /v1/vhosts/<vhost name>/apps/{app}/streams/{stream}:stopHlsDumphashtag

hashtag
Header

hashtag
Responses

chevron-right200 Okhashtag

The request has succeeded

hashtag
Header

chevron-right400 Bad Requesthashtag

Invalid request. Body is not a Json Object or does not have a required value

chevron-right401 Unauthorizedhashtag

Authentication required

hashtag
Header

chevron-right404 Not Foundhashtag

The given vhost name or app name or stream name could not be found.

hashtag
Header

chevron-right500 Internal Server Errorhashtag

Unknown error

hashtag
InfoFile

The info file is continuously updated after the dump file is written. It is in XML format and is as follows. will continue to be added.

Authorization: Basic {credentials}

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
Content-Type: application/json
Content-Type: application/json
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
    "message": "[HTTP] Could not find the application: [vhost/app1] (404)",
    "statusCode": 404
}
Authorization: Basic {credentials}

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
Content-Type: application/json
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
    "message": "[HTTP] Could not find the application: [vhost/app1] (404)",
    "statusCode": 404
}
Authorization: Basic {credentials}

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
Content-Type: application/json
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
    "message": "[HTTP] Could not find the application: [vhost/app1] (404)",
    "statusCode": 404
}
[
  {
    "name": "bypass_profile",
    "outputStreamName": "${OriginStreamName}_bypass",
    "encodes": {
      "videos": [
        {
          "bypass": true
        }
      ],
      "audios": [
        {
          "bypass": true
        }
      ]
    }
  }
]

# name (required)
  The name of the output profile. cannot be duplicated

# outputStreamName (required)
  The name of the output stream to be created through this profile.
  
# encodes (required)
  encode profile list. It must have videos or audios, and must have at least one item.
[
    {
        "statusCode": 200,
        "message": "OK",
        "response": {
            "name": "bypass_profile",
            "outputStreamName": "${OriginStreamName}_bypass",
            "encodes": {
                "audios": [],
                "videos": [
                    {
                        "bypass": true
                    }
                ]
            }
    },
    {
        "statusCode": 200,
        "message": "OK",
        "response": {
            ...
        }
    }
}

# statusCode
    Same as HTTP Status Code
# message
    A human-readable description of the response code
# response
    Created output profile information
[
    {
        "statusCode": 200,
        "message": "OK",
        "response": {
            "name": "app",
            "outputProfiles": {
            ...

            "providers": {
                "ovt": {},
                "rtmp": {},
            ...
    },
    {
        "statusCode": 409,
        "message": "Conflict",
        "response": {
            ...
        }
    }
}

# statusCode
    Same as HTTP Status Code
# message
    A human-readable description of the response code
# response
    Output profile information created when statusCode is 200
{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}
{
    "statusCode": 200,
    "message": "OK",
    "response": {
        "name": "bypass_profile2",
        "outputStreamName": "${OriginStreamName}_bypass"
        "encodes": {
            "audios": [],
            "videos": [
                {
                    "bypass": true
                }
            ]
        }
    }
}

# statusCode
	Same as HTTP Status Code
# message
	A human-readable description of the response code
# response
	Output Profile information
{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}
{
    "message": "OK",
    "statusCode": 200
}

# statusCode
	Same as HTTP Status Code
# message
	A human-readable description of the response code
{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}
# statusCode
Same as HTTP Status Code
# message
A human-readable description of the response code
# response
Json array containing a list of output profile names
hashtag
Body
hashtag
Body
hashtag
Body
hashtag
Body
hashtag
Body
hashtag
Body
hashtag
Body
hashtag
Body
Content-Type: application/json
Authorization: Basic {credentials}
Content-Type: application/json

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
  "outputStreamName": "stream",
  "id": "unique_dump_id",
  "outputPath": "/tmp/",
  "playlist" : ["llhls.m3u8", "abr.m3u8"],

{
	"statusCode": 200,
	"message": "OK",
	"response": [
		"stream",
		"stream2"
	]
}


{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}
Content-Type: application/json
Authorization: Basic {credentials}
Content-Type: application/json

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
Content-Type: application/json
WWW-Authenticate: Basic realm=”OvenMediaEngine”
Content-Type: application/json
<HLSDumpInfo>
  <UserData>~~~</UserData>
  <Stream>/default/app/stream</Stream>
  <Status>Running | Completed | Error </Status>
  <Items>
    <Item>
      <Seq>0</Seq>
      <Time>~~~</Time>
      <File>~~~</File>
    </Item>
    ...
    <Item>
      <Seq>1</Seq>
      <Time>~~~</Time>
      <File>/tmp/abc/xxx/298182/chunklist_0_video_llhls.m3u8</File>
    </Item>
    ...
    <Item>
      <Seq>2</Seq>
      <Time>~~~</Time>
      <File>chunklist_0_video_llhls.m3u8</File>
    </Item>
  </Items>
</HLSDumpInfo>
{
    "statusCode": 404,
    "message": "Could not find the application: [default/non-exists] (404)"
}
{
  "outputStreamName": "stream",
  "id": "dump_id"
}

# outputStreamName (required)
 The name of the output stream created with OutputProfile.
# id (optional)
  This is the id passed when calling the startHlsDump API. 
  If id is not passed, all dump in progress at outputStreamName is aborted.
{
	"statusCode": 200,
	"message": "OK",
	"response": [
		"stream",
		"stream2"
	]
}

# statusCode
	Same as HTTP Status Code
# message
	A human-readable description of the response code
# response
	Json array containing a list of stream names
{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}
{
    "statusCode": 404,
    "message": "Could not find the application: [default/non-exists] (404)"
}
"infoFile": "/home/abc/xxx/unique_info_file_name.info",
"userData": "access_key_id='AKIAXFOT7EWH3ZA4XXXX'"
}
# outputStreamName (required)
The name of the output stream created with OutputProfile.
# id (required)
ID for this API request.
# outputPath (required)
Directory path to output. The directory must be writable by the OME process.
OME will create the directory if it doesn't exist.
# playlist (optional)
Dump the master playlist set in outputPath. It must be entered
in Json array format, and multiple playlists can be specified.
# infoFile (optional)
This is the name of the DB file in which the information of the dumped files is
updated. If this value is not provided, no file is created. An error occurs
if a file with the same name exists. (More details below)
# userData (optional)
If infoFile is specified, this data is written to infoFile. Does not work
if infoFile is not specified.
# statusCode
Same as HTTP Status Code
# message
A human-readable description of the response code
# response
Json array containing a list of stream names

Application

hashtag
Get Application List

List all application names in the virtual host.

hashtag
Request

chevron-rightGET /v1/vhosts/{vhost}/appshashtag

hashtag
Header

hashtag
Responses

chevron-right200 Okhashtag

The request has succeeded

hashtag
Header

chevron-right401 Unauthorizedhashtag

Authentication required

hashtag
Header

chevron-right404 Not Foundhashtag

The given vhost name could not be found.

hashtag
Body

hashtag
Create Application

Create application in the virtual host

hashtag
Request

chevron-rightPOST /v1/vhosts/{vhost}/appshashtag

hashtag
Header

hashtag
Responses

chevron-right200 Okhashtag

The request has succeeded

hashtag
Header

chevron-right207 Multi-Statushashtag

There might be a mixture of responses.

hashtag
Header

chevron-right400 Bad Requesthashtag

Invalid request. Body is not a Json array or does not have a required value

chevron-right401 Unauthorizedhashtag

Authentication required

hashtag
Header

chevron-right404 Not Foundhashtag

The given vhost name could not be found.

hashtag
Body

chevron-right409 Conflicthashtag

An application name already exists

hashtag
Get Application Information

hashtag
Request

chevron-rightGET /v1/vhosts/{vhost}/apps/{app}hashtag

hashtag
Header

hashtag
Responses

chevron-right200 Okhashtag

The request has succeeded

hashtag
Header

chevron-right401 Unauthorizedhashtag

Authentication required

hashtag
Header

chevron-right404 Not Foundhashtag

The given vhost name or application name could not be found.

hashtag
Body

hashtag
Patch Application Information

Modify application settings. If this request succeeds, the Application will be restarted.

hashtag
Request

chevron-rightPATCH /v1/vhosts/{vhost}/apps/{app}hashtag

hashtag
Header

hashtag
Responses

chevron-right200 Okhashtag

The request has succeeded

hashtag
Header

chevron-right400 Bad Requesthashtag

Invalid request.

chevron-right401 Unauthorizedhashtag

Authentication required

hashtag
Header

chevron-right404 Not Foundhashtag

The given vhost name or application name could not be found.

hashtag
Body

hashtag
Delete Application

hashtag
Request

chevron-rightDELETE /v1/vhosts/{vhost}/apps/{app}hashtag

hashtag
Header

hashtag
Responses

chevron-right200 Okhashtag

The request has succeeded

hashtag
Header

chevron-right401 Unauthorizedhashtag

Authentication required

hashtag
Header

chevron-right404 Not Foundhashtag

The given vhost name or application name could not be found.

hashtag
Body

chevron-right500 Internal Server Errorhashtag

The request failed due to an error on the server. Check the server log for the reason of the error.

hashtag
Body

hashtag
Body
hashtag
Body
hashtag
Body

Configure applications to be created in Json array format.

hashtag
Body

It responds with Json array for each request.

hashtag
Body

It responds with Json array for each request.

hashtag
Body
hashtag
Body
hashtag
Body
hashtag
Body

Write the value you want to modify. However, name and outputProfiles cannot be modified.

hashtag
Body
hashtag
Body
hashtag
Body
hashtag
Body
Content-Type: application/json
Authorization: Basic {credentials}

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
    "message": "[HTTP] Could not find the virtual host: [default1] (404)",
    "statusCode": 404
}
{
	"statusCode": 200,
	"message": "OK",
	"response": [
		"app",
		"app2",
		"app3"
	]

{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}

MultiplexChannel

Using MultiplexChannel, you can combine multiple internal streams into one ABR stream, or duplicate the stream and send it to another application.

MultiplexChannel can be controlled by API or file. See below for more information about MultiplexChannel.

Multiplex Channelchevron-right

The body of the API all has the same structure as the mux file.

hashtag
Get Channel List

Get all multiplex channels in the {vhost name}/{app name} application.

Request

chevron-rightGET /v1/vhosts/{vhost}/apps/{app}/multiplexChannelshashtag

Header

Responses

chevron-right200 Okhashtag

The request has succeeded

Header

Body

chevron-right401 Unauthorizedhashtag

Authentication required

Header

Body

chevron-right404 Not Foundhashtag

The given vhost name or app name could not be found.

Header

Body

hashtag
Create Channel

Create a multiplex channel.

Request

chevron-rightPOST /v1/vhosts/{vhost}/apps/{app}/multiplexChannelshashtag

Header

Body

Responses

chevron-right201 Createdhashtag

A stream has been created.

Header

Body

chevron-right400 Bad Requesthashtag

Invalid request. Body is not a Json Object or does not have a required value

chevron-right401 Unauthorizedhashtag

Authentication required

Header

Body

chevron-right404 Not Foundhashtag

The given vhost name or app name could not be found.

Body

chevron-right409 Conflicthashtag

A stream with the same name already exists

chevron-right502 Bad Gatewayhashtag

Failed to pull provided URL

chevron-right500 Internal Server Errorhashtag

Unknown error

hashtag
Get Channel Info

Get detailed information of multiplex channel. It also provides information about the currently playing program and item.

Request

chevron-rightGET /v1/vhosts/{vhost}/apps/{app}/multiplexChannels/{channel name}hashtag

Header

Responses

chevron-right200 Okhashtag

The request has succeeded

Header

Body

chevron-right401 Unauthorizedhashtag

Authentication required

Header

Body

chevron-right404 Not Foundhashtag

The given vhost name or app name could not be found.

Header

Body

hashtag
Delete Channel

Delete Multiplex Channel

Request

chevron-rightDELETE /v1/vhosts/{vhost}/apps/{app}/multiplexChannels/{channel name}hashtag

Header

Responses

chevron-right200 Okhashtag

The request has succeeded

Header

Body

chevron-right401 Unauthorizedhashtag

Authentication required

Header

Body

chevron-right404 Not Foundhashtag

The given vhost name or app name could not be found.

Header

Body

Stream

hashtag
Get Stream List

Get all stream names in the {vhost name}/{app name} application.

Request

chevron-rightGET /v1/vhosts/{vhost}/apps/{app}/streamshashtag

Header

Responses

chevron-right200 Okhashtag

The request has succeeded

Header

Body

chevron-right401 Unauthorizedhashtag

Authentication required

Header

Body

chevron-right404 Not Foundhashtag

The given vhost name or app name could not be found.

Header

Body

hashtag
Create Stream (Pull)

Create a stream by pulling an external URL. External URL protocols currently support RTSP and OVT.

Request

chevron-rightPOST /v1/vhosts/{vhost}/apps/{app}/streamshashtag

Header

Body

Responses

chevron-right201 Createdhashtag

A stream has been created.

Header

Body

chevron-right400 Bad Requesthashtag

Invalid request. Body is not a Json Object or does not have a required value

chevron-right401 Unauthorizedhashtag

Authentication required

Header

Body

chevron-right404 Not Foundhashtag

The given vhost name or app name could not be found.

Body

chevron-right409 Conflicthashtag

A stream with the same name already exists

chevron-right502 Bad Gatewayhashtag

Failed to pull provided URL

chevron-right500 Internal Server Errorhashtag

Unknown error

hashtag
Get Stream Info

Get detailed information of stream.

Request

chevron-rightGET /v1/vhosts/{vhost}/apps/{app}/streams/{stream}hashtag

Header

Responses

chevron-right200 Okhashtag

The request has succeeded

Header

Body

chevron-right401 Unauthorizedhashtag

Authentication required

Header

Body

chevron-right404 Not Foundhashtag

The given vhost name or app name could not be found.

Header

Body

chevron-rightOpenAPI Specificationhashtag

OpenAPI 3.0 specification

hashtag
Delete Stream

Delete Stream. This terminates the ingress connection.

circle-exclamation

The sender can reconnect after the connection is terminated. To prevent reconnection, you must use .

Request

chevron-rightDELETE /v1/vhosts/{vhost}/apps/{app}/streams/{stream}hashtag

Header

Responses

chevron-right200 Okhashtag

The request has succeeded

Header

Body

chevron-right401 Unauthorizedhashtag

Authentication required

Header

Body

chevron-right404 Not Foundhashtag

The given vhost name or app name could not be found.

Header

Body

Authorization: Basic {credentials}

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
Content-Type: application/json
Content-Type: application/json
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
    "message": "[HTTP] Could not find the virtual host: [default1] (404)",
    "statusCode": 404
}
Authorization: Basic {credentials}

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
Content-Type: application/json
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
    "message": "[HTTP] Could not find the application: [default/app2] (404)",
    "statusCode": 404
}
Authorization: Basic {credentials}

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
Content-Type: application/json
{
    "message": "[HTTP] Cannot change [name] using this API (400)",
    "statusCode": 400
}
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
    "message": "[HTTP] Could not find the application: [default/app2] (404)",
    "statusCode": 404
}
Authorization: Basic {credentials}

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
Content-Type: application/json
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
    "message": "[HTTP] Could not find the application: [default/app2] (404)",
    "statusCode": 404
}
{
    "message": "[HTTP] Internal Server Error (500)",
    "statusCode": 500
}
[
    {
        "name": "app",
        "type": "live",
        "outputProfiles": {
            "outputProfile": [
                {
                    "name": "default",
                    "outputStreamName": "${OriginStreamName}",
                    "encodes": {
                        "audios": [
                            {
                                "name": "opus",
                                "codec": "opus",
                                "samplerate": 48000,
                                "bitrate": 128000,
                                "channel": 2,
                                "bypassIfMatch": {
                                    "codec": "eq"
                                }
                            },
                            {
                                "name": "aac",
                                "codec": "aac",
                                "samplerate": 48000,
                                "bitrate": 128000,
                                "channel": 2,
                                "bypassIfMatch": {
                                    "codec": "eq"
                                }
                            }
                        ],
                        "videos": [
                            {
                                "name": "bypass_video",
                                "bypass": true
                            }
                        ]
                    }
                }
            ]
        },
        "providers": {
            "ovt": {},
            "rtmp": {},
            "rtspPull": {},
            "srt": {},
            "webrtc": {}
        },
        "publishers": {
            "llhls": {},
            "ovt": {},
            "webrtc": {}
        }
    }
]
    
# name (required)
    Application name to create
    
# type (required)
    live - currently only support live
    
# outputProfiles (optional)
   Set OutputProfile for Transcoding. See the ABR and Transcoding chapter for             more details. If no outputProfiles are present in the request, a default outputProfile as above is configured.
   
# providers (optional)
    Configure providers. See the Live Source chapter for details. If providers are not present in the request, they are configured with default providers as above.

# publishers (optional)
    Configure publishers. See the Streaming chapter for details. If publishers are not present in the request, they are configured with default publishers as above.
[
    {
        "statusCode": 200,
        "message": "OK",
        "response": {
            "name": "app",
            "outputProfiles": {
            ...

            "providers": {
                "ovt": {},
                "rtmp": {},
            ...
    },
    {
        "statusCode": 200,
        "message": "OK",
        "response": {
            ...
        }
    }
}

# statusCode
    Same as HTTP Status Code
# message
    A human-readable description of the response code
# response
    Created application information
[
    {
        "statusCode": 200,
        "message": "OK",
        "response": {
            "name": "app",
            "outputProfiles": {
            ...

            "providers": {
                "ovt": {},
                "rtmp": {},
            ...
    },
    {
        "statusCode": 409,
        "message": "Conflict",
        "response": {
            ...
        }
    }
}

# statusCode
    Same as HTTP Status Code
# message
    A human-readable description of the response code
# response
    Application information created when statusCode is 200
{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}
{
    "statusCode": 200,
    "message": "OK",
    "response": {
        "dynamic": false,
        "name": "app",
        "type": "live",
        "outputProfiles": {
            "outputProfile": [
                {
                    "encodes": {
                        "audios": [
                            {
                                "bitrate": 128000,
                                "bypassIfMatch": {
                                    "codec": "eq"
                                },
                                "channel": 2,
                                "codec": "opus",
                                "name": "opus",
                                "samplerate": 48000
                            },
                            {
                                "bitrate": 128000,
                                "bypassIfMatch": {
                                    "codec": "eq"
                                },
                                "channel": 2,
                                "codec": "aac",
                                "name": "aac",
                                "samplerate": 48000
                            }
                        ],
                        "videos": [
                            {
                                "bypass": true,
                                "name": "bypass_video"
                            }
                        ]
                    },
                    "name": "bypass",
                    "outputStreamName": "${OriginStreamName}"
                }
            ]
        },
        "providers": {
            "ovt": {},
            "rtmp": {},
            "rtspPull": {},
            "srt": {},
            "webrtc": {}
        },
        "publishers": {
            "llhls": {},
            "ovt": {},
            "webrtc": {}
        }
    }
}

# statusCode
    Same as HTTP Status Code
# message
    A human-readable description of the response code
# response
    Application information
{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}
{
    "providers": {
        "webrtc": {
            "timeout": 60000
        }
    }
}
{
    "statusCode": 200,
    "message": "OK",
    "response": {
        "dynamic": false,
        "name": "app",
        "type": "live",
        "outputProfiles": {
            "outputProfile": [
                {
                    "encodes": {
                        "audios": [
                            {
                                "bitrate": 128000,
                                "bypassIfMatch": {
                                    "codec": "eq"
                                },
                                "channel": 2,
                                "codec": "opus",
                                "name": "opus",
                                "samplerate": 48000
                            },
                            {
                                "bitrate": 128000,
                                "bypassIfMatch": {
                                    "codec": "eq"
                                },
                                "channel": 2,
                                "codec": "aac",
                                "name": "aac",
                                "samplerate": 48000
                            }
                        ],
                        "videos": [
                            {
                                "bypass": true,
                                "name": "bypass_video"
                            }
                        ]
                    },
                    "name": "bypass",
                    "outputStreamName": "${OriginStreamName}"
                }
            ]
        },
        "providers": {
            "ovt": {},
            "rtmp": {},
            "rtspPull": {},
            "srt": {},
            "webrtc": {
                "timeout": 60000
            }
        },
        "publishers": {
            "llhls": {},
            "ovt": {},
            "webrtc": {}
        }
    }
}

# statusCode
    Same as HTTP Status Code
# message
    A human-readable description of the response code
# response
    Mofified application information
{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}
{
    "message": "OK",
    "statusCode": 200
}

# statusCode
	Same as HTTP Status Code
# message
	A human-readable description of the response code
{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}
}
# statusCode
Same as HTTP Status Code
# message
A human-readable description of the response code
# response
Json array containing a list of application names
Content-Type: application/json
Authorization: Basic {credentials}

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
{
    "message": "OK",
    "response": [
        "stream"
    ],
    "statusCode": 200
}

# statusCode
	Same as HTTP Status Code
# message
	A human-readable description of the response code
# response
	Json array containing a list of stream names
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}
Content-Type: application/json
AccessControl
Authorization: Basic {credentials}

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
{
	"statusCode": 200,
	"message": "OK",
	"response": [
		"stream",
		"stream2"
	]
}

# statusCode
	Same as HTTP Status Code
# message
	A human-readable description of the response code
# response
	Json array containing a list of stream names
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}
Content-Type: application/json
{
    "statusCode": 404,
    "message": "Could not find the application: [default/non-exists] (404)"
}
Content-Type: application/json
{
    "statusCode": 404,
    "message": "Could not find the application: [default/non-exists] (404)"
}
Authorization: Basic {credentials}
Content-Type: application/json

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
{
  "outputStream": {
    "name": "stream"
  },
  "sourceStreams": [
    {
      "name": "input1",
      "url": "stream://default/app/input1",
      "trackMap": [
        {
          "sourceTrackName": "bypass_video",
          "newTrackName": "input1_video",
          "bitrateConf": 5000000,
          "framerateConf": 30
        },
        {
          "sourceTrackName": "bypass_audio",
          "newTrackName": "input1_audio",
          "bitrateConf": 128000
        }
      ]
    },
    {
      "name": "input2",
      "url": "stream://default/app/input2",
      "trackMap": [
        {
          "sourceTrackName": "bypass_video",
          "newTrackName": "input2_video",
          "bitrateConf": 1000000,
          "framerateConf": 30
        },
        {
          "sourceTrackName": "bypass_audio",
          "newTrackName": "input2_audio",
          "bitrateConf": 128000
        }
      ]
    }
  ],
  "playlists": [
    {
      "name": "LLHLS ABR",
      "fileName": "abr",
      "options": {
        "webrtcAutoAbr": true,
        "hlsChunklistPathDepth": 0
      },
      "renditions": [
        {
          "name": "input1",
          "video": "input1_video",
          "audio": "input1_audio"
        },
        {
          "name": "input2",
          "video": "input2_video",
          "audio": "input2_audio"
        }
      ]
    }
  ]
}
Content-Type: application/json
{
    "message": "Created",
    "statusCode": 201
}

# statusCode
    Same as HTTP Status Code
# message
    A human-readable description of the response code
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}
{
    "statusCode": 404,
    "message": "Could not find the application: [default/non-exists] (404)"
}
Authorization: Basic {credentials}

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
Content-Type: application/json
{
    "message": "OK",
    "statusCode": 200,
    "response": {
        "state": "Pulling",
        "pullingMessage": "Multiplex Channel : #default#app/stream: Wait for stream input1",
        "outputStream": {
            "name": "stream"
        },
        "playlists": [
            {
                "fileName": "abr",
                "name": "LLHLS ABR",
                "options": {
                    "hlsChunklistPathDepth": 0,
                    "webrtcAutoAbr": true
                },
                "renditions": [
                    {
                        "audio": "input1_audio",
                        "name": "input1",
                        "video": "input1_video"
                    },
                    {
                        "audio": "input2_audio",
                        "name": "input2",
                        "video": "input2_video"
                    }
                ]
            }
        ],
        "sourceStreams": [
            {
                "name": "input1",
                "trackMap": [
                    {
                        "bitrateConf": 128000,
                        "newTrackName": "input1_audio",
                        "sourceTrackName": "bypass_audio"
                    },
                    {
                        "bitrateConf": 5000000,
                        "framerateConf": 30,
                        "newTrackName": "input1_video",
                        "sourceTrackName": "bypass_video"
                    }
                ],
                "url": "stream://default/app/input1"
            },
            {
                "name": "input2",
                "trackMap": [
                    {
                        "bitrateConf": 128000,
                        "newTrackName": "input2_audio",
                        "sourceTrackName": "bypass_audio"
                    },
                    {
                        "bitrateConf": 1000000,
                        "framerateConf": 30,
                        "newTrackName": "input2_video",
                        "sourceTrackName": "bypass_video"
                    }
                ],
                "url": "stream://default/app/input2"
            }
        ]
    }
}
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}
Content-Type: application/json
{
    "statusCode": 404,
    "message": "Could not find the application or stream (404)"
}
Authorization: Basic {credentials}

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
Content-Type: application/json
{
	"statusCode": 200,
	"message": "OK",
}


# statusCode
	Same as HTTP Status Code
# message
	A human-readable description of the response code
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}
Content-Type: application/json
{
    "message": "[HTTP] Could not find the stream: [default/#default#app/stream] (404)",
    "statusCode": 404
}
Authorization: Basic {credentials}
Content-Type: application/json

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
{
	"name": "new_stream_name",
	"urls": [
		"rtsp://192.168.0.160:553/app/stream",
		"url to pull the stream from - support OVT/RTSP",
		"Only urls with the same scheme can be sent as a group."
  	],
  	"properties":{
		"persistent": false,
		"noInputFailoverTimeoutMs": 3000,
		"unusedStreamDeletionTimeoutMs": 60000,
		"ignoreRtcpSRTimestamp": false
  	}
}

# name (required)
	Stream name to create
# urls (required)
	A list of URLs to pull streams from, in Json array format. 
	All URLs must have the same scheme.
# properties (optional)
	## persistent
		Created as a persistent stream, not deleted until DELETE
	## noInputFailoverTimeoutMs
		If no data is input during this period, the stream is deleted, 
		but ignored if persistent is true
	## unusedStreamDeletionTimeoutMs
		If no data is output during this period (if there is no viewer), 
		the stream is deleted, but ignored if persistent is true
	## ignoreRtcpSRTimestamp
		No waits RTCP SR and start stream immediately
Content-Type: application/json
{
    "message": "Created",
    "statusCode": 201
}

# statusCode
    Same as HTTP Status Code
# message
    A human-readable description of the response code
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}
{
    "statusCode": 404,
    "message": "Could not find the application: [default/non-exists] (404)"
}
Authorization: Basic {credentials}

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
Content-Type: application/json
{
	"statusCode": 200,
	"message": "OK",
	"response": {
		"input": {
			"createdTime": "2021-01-11T03:45:21.879+09:00",
			"sourceType": "Rtmp",
			"tracks": [
			{
				"id": 0,
				"type": "Video",
				"video": {
					"bitrate": "2500000",
					"bypass": false,
					"codec": "H264",
					"framerate": 30.0,
					"hasBframes": false,
					"keyFrameInterval": 30,
					"height": 720,
					"width": 1280
				}
			},
			{
				"id": 1,				
				"audio": {
					"bitrate": "128000",
					"bypass": false,
					"channel": 2,
					"codec": "AAC",
					"samplerate": 48000
				},
				"type": "Audio"
			}
			]
		},
		"name": "stream",
		"outputs": [
		{
			"name": "stream",
			"tracks": [
			{
				"id": 0,
				"type": "Video",
				"video": {
					"bypass": true
				}
			},
			{
				"id": 1,					
				"audio": {
					"bypass": true
				},
				"type": "Audio"
			},
			{
				"id": 2,					
				"audio": {
					"bitrate": "128000",
					"bypass": false,
					"channel": 2,
					"codec": "OPUS",
					"samplerate": 48000
				},
				"type": "Audio"
			}
			]
		}
	]
	}
}


# statusCode
	Same as HTTP Status Code
# message
	A human-readable description of the response code
# response
	Details of the stream
Note
keyFrameInterval is GOP size
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}
Content-Type: application/json
{
    "statusCode": 404,
    "message": "Could not find the application or stream (404)"
}
openapi: 3.0.0
info:
  title: Stream API
  version: 1.0.0
  description: API for stream information

paths:
  /stream:
    get:
      summary: Get stream information
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error401'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'

components:
  schemas:
    SuccessResponse:
      type: object
      required:
        - statusCode
        - message
        - response
      properties:
        statusCode:
          type: integer
        message:
          type: string
        response:
          type: object
          required:
            - name
            - input
          properties:
            name:
              type: string
            input:
              $ref: '#/components/schemas/Input'
            outputs:
              type: array
              items:
                $ref: '#/components/schemas/Output'
    Error401:
      type: object
      required:
        - statusCode
        - message
      properties:
        statusCode:
          type: integer
          enum: [401]
        message:
          type: string
          enum: ["[HTTP] Authorization header is required to call API (401)"]
          
    Error404:
      type: object
      required:
        - statusCode
        - message
      properties:
        statusCode:
          type: integer
          enum: [404]
        message:
          type: string
          enum: ["Could not find the application or stream (404)"]
          
          
    VideoTrack:
      type: object
      required:
        - id
        - type
        - video
      properties:
        id:
          type: integer
        name:
          type: string
        type:
          type: string
          enum:
            - Video
        video:
          type: object
          properties:
            bitrate:
              type: string
            bitrateAvg:
              type: string
            bitrateConf:
              type: string
            bitrateLatest:
              type: string
            bypass:
              type: boolean
            codec:
              type: string
            deltaFramesSinceLastKeyFrame:
              type: integer
            framerate:
              type: number
            framerateAvg:
              type: number
            framerateConf:
              type: number
            framerateLatest:
              type: number
            hasBframes:
              type: boolean
            keyFrameInterval:
              type: integer
            keyFrameIntervalAvg:
              type: number
            keyFrameIntervalConf:
              type: number
            keyFrameIntervalLatest:
              type: integer
            height:
              type: integer
            width:
              type: integer
              
    AudioTrack:
      type: object
      required:
        - id
        - type
        - audio
      properties:
        id:
          type: integer
        name:
          type: string
        type:
          type: string
          enum:
            - Audio
        audio:
          type: object
          properties:
            bitrate:
              type: string
            bitrateAvg:
              type: string
            bitrateConf:
              type: string
            bitrateLatest:
              type: string
            bypass:
              type: boolean
            channel:
              type: integer
            codec:
              type: string
            samplerate:
              type: integer
              
    DataTrack:
      type: object
      required:
        - id
        - type
      properties:
        id:
          type: integer
        name:
          type: string
        type:
          type: string
          enum:
            - Data
            
    Track:
      oneOf:
        - $ref: '#/components/schemas/VideoTrack'
        - $ref: '#/components/schemas/AudioTrack'
        - $ref: '#/components/schemas/DataTrack'
      discriminator:
        propertyName: type
        mapping:
          Video: '#/components/schemas/VideoTrack'
          Audio: '#/components/schemas/AudioTrack'
          Data: '#/components/schemas/DataTrack'
          
    Rendition:
      type: object
      required:
        - name
      properties:
        name:
          type: string
        videoVariantName:
          type: string
        audioVariantName:
          type: string
          
    Playlist:
      type: object
      required:
        - name
        - fileName
        - options
        - renditions
      properties:
        name:
          type: string
        fileName:
          type: string
        options:
          type: object
          properties:
            enableTsPackaging:
              type: boolean
            hlsChunklistPathDepth:
              type: integer
            webrtcAutoAbr:
              type: boolean
        renditions:
          type: array
          items:
            $ref: '#/components/schemas/Rendition'
            
    Output:
      type: object
      required:
        - name
        - tracks
      properties:
        name:
          type: string
        playlists:
          type: array
          items:
            $ref: '#/components/schemas/Playlist'
        tracks:
          type: array
          items:
            $ref: '#/components/schemas/Track'
            
    Input:
      type: object
      required:
        - createdTime
        - sourceType
        - tracks
      properties:
        createdTime:
          type: string
          format: date-time
        sourceType:
          type: string
        sourceUrl:
          type: string
        tracks:
          type: array
          items:
            $ref: '#/components/schemas/Track'
Authorization: Basic {credentials}

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
Content-Type: application/json
{
	"statusCode": 200,
	"message": "OK",
}


# statusCode
	Same as HTTP Status Code
# message
	A human-readable description of the response code
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}
Content-Type: application/json
{
    "message": "[HTTP] Could not find the stream: [default/#default#app/stream] (404)",
    "statusCode": 404
}

ScheduledChannel

ScheduledChannel allows you to create a live channel by scheduling pre-recorded files has been added to OvenMediaEngine. Other services or software call this Pre-recorded Live or File Live, but OvenMediaEngine plans to expand the function to organize live channels as a source, so we named it Scheduled Channel.

ScheduledChannel can be controlled by API or file. For more information about ScheduledChannel, see below.

Scheduled Channelchevron-right

The body of the API all has the same structure as the ScheduledChannel schedule file.

hashtag
Get Channel List

Get all scheduled channels in the {vhost name}/{app name} application.

Request

chevron-rightGET /v1/vhosts/{vhost}/apps/{app}/scheduledChannelshashtag

Header

Responses

chevron-right200 Okhashtag

The request has succeeded

Header

Body

chevron-right401 Unauthorizedhashtag

Authentication required

Header

Body

chevron-right404 Not Foundhashtag

The given vhost name or app name could not be found.

Header

Body

hashtag
Create Channel

Create a Scheduled channel.

Request

chevron-rightPOST /v1/vhosts/{vhost}/apps/{app}/scheduledChannelshashtag

Header

Body

Responses

chevron-right201 Createdhashtag

A stream has been created.

Header

Body

chevron-right400 Bad Requesthashtag

Invalid request. Body is not a Json Object or does not have a required value

chevron-right401 Unauthorizedhashtag

Authentication required

Header

Body

chevron-right404 Not Foundhashtag

The given vhost name or app name could not be found.

Body

chevron-right409 Conflicthashtag

A stream with the same name already exists

chevron-right502 Bad Gatewayhashtag

Failed to pull provided URL

chevron-right500 Internal Server Errorhashtag

Unknown error

hashtag
Patch Schedule

Update the schedule. <Stream> cannot be PATCHed.

hashtag
Request

chevron-rightPATCH /v1/vhosts/{vhost}/apps/{app}/scheduledChannels/{channel name}hashtag

hashtag
Header

hashtag
Responses

chevron-right200 Okhashtag

The request has succeeded

hashtag
Header

chevron-right400 Bad Requesthashtag

Invalid request.

chevron-right401 Unauthorizedhashtag

Authentication required

hashtag
Header

chevron-right404 Not Foundhashtag

The given vhost name or application name could not be found.

hashtag
Body

hashtag
Get Channel Info

Get detailed information of scheduled channel. It also provides information about the currently playing program and item.

Request

chevron-rightGET /v1/vhosts/{vhost}/apps/{app}/scheduledChannels/{channel name}hashtag

Header

Responses

chevron-right200 Okhashtag

The request has succeeded

Header

Body

chevron-right401 Unauthorizedhashtag

Authentication required

Header

Body

chevron-right404 Not Foundhashtag

The given vhost name or app name could not be found.

Header

Body

hashtag
Delete Channel

Delete Scheduled Channel

Request

chevron-rightDELETE /v1/vhosts/{vhost}/apps/{app}/scheduledChannels/{channel name}hashtag

Header

Responses

chevron-right200 Okhashtag

The request has succeeded

Header

Body

chevron-right401 Unauthorizedhashtag

Authentication required

Header

Body

chevron-right404 Not Foundhashtag

The given vhost name or app name could not be found.

Header

Body

hashtag
Body

Write the value you want to modify. However, name and outputProfiles cannot be modified.

hashtag
Body
hashtag
Body
Content-Type: application/json
Authorization: Basic {credentials}

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
{
    "message": "OK",
    "response": [
        "stream"
    ],
    "statusCode": 200
}

# statusCode
	Same as HTTP Status Code
# message
	A human-readable description of the response code
# response
	Json array containing a list of stream names
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}
Content-Type: application/json
{
    "statusCode": 404,
    "message": "Could not find the application: [default/non-exists] (404)"
}
Authorization: Basic {credentials}
Content-Type: application/json

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
{
    "stream": {
        "name": "stream2",
        "bypassTranscoder": false,
        "videoTrack": true,
        "audioTrack": true,
        "audioMap": [ // Optional
            {
                "name": "english",
                "language": "en",
                "characteristics": "1"
            },
            {
                "name": "Korean",
                "language": "ko",
                "characteristics": "2"
            },
            {
                "name": "Japanese",
                "language": "ja",
                "characteristics": "3"
            }
        ]
    },
    "fallbackProgram": {
        "items": [
            {
                "url": "file://video/sample.mp4",
                "start": 0,
                "duration": 60000
            }
        ]
    },
    "programs": [
        {
            "name": "1",
            "scheduled": "2023-11-13T20:57:00.000+09",
            "repeat": true,
            "items": [
                {
                    "url": "file://video/sample.mp4",
                    "start": 0,
                    "duration": 60000
                },
                {
                    "url": "file://video/1.mp4",
                    "start": 0,
                    "duration": 60000
                }
            ]
        },
        {
            "name": "2",
            "scheduled": "2023-11-14T20:57:00.000+09",
            "repeat": true,
            "items": [
                {
                    "url": "file://1.mp4",
                    "start": 0,
                    "duration": 60000
                },
                {
                    "url": "file://sample.mp4",
                    "start": 0,
                    "duration": 60000
                }
            ]
        }
    ]
}
Content-Type: application/json
{
    "message": "Created",
    "statusCode": 201
}

# statusCode
    Same as HTTP Status Code
# message
    A human-readable description of the response code
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}
{
    "statusCode": 404,
    "message": "Could not find the application: [default/non-exists] (404)"
}
Authorization: Basic {credentials}

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
Content-Type: application/json
{
    "message": "[HTTP] Cannot change [name] using this API (400)",
    "statusCode": 400
}
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
    "message": "[HTTP] Could not find the application: [default/app2] (404)",
    "statusCode": 404
}
Authorization: Basic {credentials}

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
Content-Type: application/json
{
    "message": "OK",
    "response": {
        "currentProgram": {
            "currentItem": {
                "currentPosition": 1700,
                "duration": 60000,
                "start": 0,
                "url": "file://video/1.mp4"
            },
            "duration": -1,
            "end": "2262-04-12T08:47:16.854+09:00",
            "name": "2",
            "repeat": true,
            "scheduled": "2023-11-20T20:57:00.000+09:00",
            "state": "onair"
        },
        "fallbackProgram": {
            "items": [
                {
                    "duration": -1,
                    "start": 0,
                    "url": "file://hevc.mov"
                },
                {
                    "duration": -1,
                    "start": 0,
                    "url": "file://avc.mov"
                }
            ],
            "name": "fallback",
            "repeat": true,
            "scheduled": "1970-01-01T00:00:00Z"
        },
        "programs": [
            {
                "name": "2",
                "repeat": true,
                "scheduled": "2023-11-20T20:57:00.000+09"
            }
        ],
        "stream": {
            "audioTrack": true,
            "bypassTranscoder": false,
            "name": "stream",
            "videoTrack": true
        }
    },
    "statusCode": 200
}
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}
Content-Type: application/json
{
    "statusCode": 404,
    "message": "Could not find the application or stream (404)"
}
Authorization: Basic {credentials}

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
Content-Type: application/json
{
	"statusCode": 200,
	"message": "OK",
}


# statusCode
	Same as HTTP Status Code
# message
	A human-readable description of the response code
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}
Content-Type: application/json
{
    "message": "[HTTP] Could not find the stream: [default/#default#app/stream] (404)",
    "statusCode": 404
}
{
    "fallbackProgram": {
        "items": [
            {
                "url": "file://video/sample.mp4",
                "start": 5000,
                "duration": 30000
            }
        ]
    },
    "programs": [
        {
            "name": "1",
            "scheduled": "2023-11-10T20:57:00.000+09",
            "repeat": true,
            "items": [
                {
                    "url": "file://video/1.mp4",
                    "start": 0,
                    "duration": 60000
                }
            ]
        },
        {
            "name": "2",
            "scheduled": "2023-11-20T20:57:00.000+09",
            "repeat": true,
            "items": [
                {
                    "url": "file://video/1.mp4",
                    "start": 0,
                    "duration": 60000
                },
                {
                    "url": "file://video/sample.mp4",
                    "start": 0,
                    "duration": 60000
                }
            ]
        }
    ]
}
{
    "message": "Created",
    "statusCode": 201
}
{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}