Authentication

Each API request must contain authorization header for basic access authentication.

Name Description

Authorization

Basic authentication credentials in format Basic <base64> where <base64> is Base64 encoded string <username>:<password>.

Example: Basic YWRtaW46cGFzc3dvcmQ= (admin:password)

JSON object definitions

Pipeline

JSON object containing configuration for single pipeline.

Path Type Description

version

String

Version of pipeline JSON schema. Current version is "0.6".

id

Number

Unique identifier of this pipeline.

name

String

Name of this pipeline displayed in UI.

source.address

String

Input stream source.

String value should be in format "rtp://<ip-address>:<port>:<interface-id>" for RTP/UDP stream, "udp://<ip-address>:<port>:<interface-id>" for UDP stream, "sdi://<sdi-device-id>:<port-index>" for SDI stream or "file://<file>" for transcoder system local file. The <interface-id> should be the identifier of one of the available network interfaces. The <sdi-device-id> should be the identifier of one of the available SDI devices.

Examples: "rtp://0.0.0.0:5000:lo", "udp://0.0.0.0:5001:lo", "sdi://dektec-sdi-0:0" or "file:///tmp/input.ts".

source.streamType

String

Type of input stream.

Allowed values are "MPEG_TS" or "SDI".

source.complianceWith

String

Shall be present when streamType is "MPEG_TS". Allowed values are "AUTO" (to allow any auto-detectable stream) or "EVERTZ" (to allow only Evertz stream) or "MEDIALINKS" (to allow only MediaLinks stream).

source.addressPCR

String

Optionally can be present when streamType is "MPEG_TS". Input stream to receive PCR from.

String value should be in format "rtp://<ip-address>:<port>:<interface-id>" for RTP/UDP stream or "udp://<ip-address>:<port>:<interface-id>" for UDP stream. The <interface-id> should be the identifier of one of the available network interfaces.

Examples: "rtp://0.0.0.0:5000:lo" or "udp://0.0.0.0:5001:lo".

video

Object<Input video>

Configuration of input video.

audio

Array<Input audio>

Configuration of input audio.

captions

Array<Input captions>

Configuration of input captions.

metadata

Array<Input metadata>

Configuration of input metadata.

outputs

Array<Output stream>

Configuration of output streams.

Relation Description

self

Link to this pipeline.

state

Link to current state of this pipeline.

Pipeline example:

{
  "version" : "0.6",
  "id" : 0,
  "name" : "Pipeline 1",
  "source" : {
    "streamType" : "MPEG_TS",
    "address" : "rtp://0.0.0.0:5001:lo",
    "complianceWith" : "AUTO",
    "addressPCR" : "udp://0.0.0.0:5000:lo"
  },
  "video" : {
    "format" : "J2K",
    "width" : 1920,
    "height" : 1080,
    "sampling" : "4:2:2",
    "depth" : 10,
    "scanRate" : "50",
    "scan" : "INTERLACED",
    "fieldOrder" : "TOP_FIELD_FIRST",
    "filters" : {
      "yOffset" : 16,
      "yGain" : 0.2,
      "rOffset" : 1,
      "rGain" : 0.01,
      "gOffset" : 2,
      "gGain" : 0.02,
      "bOffset" : 3,
      "bGain" : 0.03,
      "rgbClip" : true,
      "hue" : 4.5,
      "saturation" : 0.5
    }
  },
  "audio" : [ {
    "id" : 0,
    "pid" : 661,
    "format" : "AES3",
    "rate" : 48000,
    "channels" : 2,
    "filters" : {
      "volumeGain" : 2.5
    },
    "passthrough" : false
  } ],
  "captions" : [ {
    "id" : 0,
    "pid" : 662,
    "format" : "SMPTE_2038"
  } ],
  "metadata" : [ {
    "id" : 0,
    "pid" : 663,
    "format" : "UNKNOWN"
  } ],
  "outputs" : [ {
    "id" : 0,
    "name" : "Output Stream 1",
    "sink" : {
      "streamType" : "MPEG_TS",
      "address" : "rtp://0.0.0.0:6001:lo"
    },
    "service" : {
      "name" : "SERVICE",
      "providerName" : "PROVIDER"
    },
    "pcrStreamLocation" : "SEPARATE",
    "ebpLength" : 5,
    "ebpLengthUnit" : "SECONDS",
    "bitrate" : 10000000,
    "video" : {
      "pid" : 670,
      "format" : "H264",
      "width" : 720,
      "height" : 576,
      "sampling" : "4:2:0",
      "depth" : 8,
      "scanRate" : "50",
      "scan" : "INTERLACED",
      "fieldOrder" : "TOP_FIELD_FIRST",
      "h264" : {
        "coding" : "CABAC",
        "profile" : "HIGH",
        "gopSize" : 120,
        "bCount" : 0
      },
      "bitrate" : 8000000,
      "captions" : 0,
      "crop" : {
        "fit" : "PAD",
        "from" : [ 0, 10 ],
        "to" : [ -1, 1070 ]
      }
    },
    "audio" : [ {
      "id" : 0,
      "pid" : 671,
      "format" : "AAC",
      "rate" : 48000,
      "name" : "Output audio 1",
      "bitrate" : 1000000,
      "channels" : 2,
      "references" : [ {
        "id" : 0,
        "channel" : 0
      } ]
    } ],
    "metadata" : [ {
      "id" : 0,
      "pid" : 673,
      "format" : "UNKNOWN",
      "reference" : 0
    } ]
  } ],
  "links" : [ {
    "rel" : "self",
    "href" : "https://127.0.0.1/api/pipeline/0"
  }, {
    "rel" : "state",
    "href" : "https://127.0.0.1/api/pipeline/0/state"
  } ]
}

Input video

JSON object containing configuration of input video.

Path Type Description

format

String

Format of input video.

Allowed values are "J2K", "H262", "H264" or "H265".

width

Number

Video frame width.

height

Number

Video frame height.

sampling

String

Video frame subsampling.

Allowed values are "4:2:2", "4:2:0" or "4:4:4".

depth

Number

Video frame samples bit-depth.

scanRate

String

Frame rate for progressive scan video (frames per second) or field rate for interlaced scan video (fields per second).

String value should be in format "<value>/<factor>" or "<value>".

Examples: "24000/1001" or "24".

scan

String

Allowed values are "PROGRESSIVE" (for progressive scan video) or "INTERLACED" (for interlaced scan video).

fieldOrder

String

Allowed values are "TOP_FIELD_FIRST" or "BOTTOM_FIELD_FIRST".

filters

Object

Video filters to be applied to decoded video. Modifications in this object can be applied at runtime and thus it will not force the pipeline to be restarted.

filters.yOffset

Number

Y sample value to be added to all decoded sample values.

Examples: 16 to add 16 to all samples in Y component, -8 to subtract 8 from all samples in Y component.

filters.yGain

Number

Ratio for Y color component to modify all decoded sample values.

Examples: 0.2 to increase all samples in Y component by 20%, -0.1 to decrease all samples in Y component by 10%.

filters.rOffset

Number

R sample value to be added to all decoded sample values.

Examples: 1 to add 1 to all samples in R component, -2 to subtract 2 from all samples in R component.

filters.rGain

Number

Ratio for R color component to modify all decoded sample values.

Examples: 0.01 to increase all samples in R component by 1%, -0.2 to decrease all samples in R component by 20%.

filters.gOffset

Number

G sample value to be added to all decoded sample values.

Examples: 2 to add 2 to all samples in G component, -4 to subtract 4 from all samples in G component.

filters.gGain

Number

Ratio for G color component to modify all decoded sample values.

Examples: 0.02 to increase all samples in G component by 2%, -0.3 to decrease all samples in G component by 30%.

filters.bOffset

Number

B sample value to be added to all decoded sample values.

Examples: 3 to add 3 to all samples in B component, -8 to subtract 8 from all samples in B component.

filters.bGain

Number

Ratio for B color component to modify all decoded sample values.

Examples: 0.03 to increase all samples in B component by 3%, -0.4 to decrease all samples in B component by 40%.

filters.rgbClip

Boolean

Specifies whether RGB clipping should take place. Disabled by default.

filters.hue

Number

Number of degrees to change the color hue.

Examples: 4.5 to increase color hue by 4.5 degrees, -2.5 to decrease color hue by 2.5 degrees.

filters.saturation

Number

Ratio to change the color saturation.

Examples: 0.5 to increase color saturation by 50%, -0.25 to decrease color saturation by 25%.

Input video example:

{
  "format" : "J2K",
  "width" : 1920,
  "height" : 1080,
  "sampling" : "4:2:2",
  "depth" : 10,
  "scanRate" : "50",
  "scan" : "INTERLACED",
  "fieldOrder" : "TOP_FIELD_FIRST",
  "filters" : {
    "yOffset" : 16,
    "yGain" : 0.2,
    "rOffset" : 1,
    "rGain" : 0.01,
    "gOffset" : 2,
    "gGain" : 0.02,
    "bOffset" : 3,
    "bGain" : 0.03,
    "rgbClip" : true,
    "hue" : 4.5,
    "saturation" : 0.5
  }
}

Input audio

JSON object containing configuration of input audio.

Path Type Description

id

Number

Unique identifier of input audio.

pid

Number

Elementary stream identifier.

format

String

Format of input audio.

Allowed values are "AC3", "AES3", "AAC" or "MPEG2".

rate

Number

Audio sampling rate in Hz.

channels

Number

Number of audio channels.

filters

Object

Audio filters to be applied to decoded audio. Modifications in this object can be applied at runtime and thus it will not force the pipeline to be restarted.

filters.volumeGain

Number

Ratio to change the audio volume.

Examples: 0.5 to increase audio volume by 50%, -0.25 to decrease audio volume by 25%.

passthrough

Boolean

Specifies that audio is sent pass-through (if possible).

Input audio example:

{
  "id" : 0,
  "pid" : 661,
  "format" : "AES3",
  "rate" : 48000,
  "channels" : 2,
  "filters" : {
    "volumeGain" : 2.5
  },
  "passthrough" : false
}

Input captions

JSON object containing configuration of input captions.

Path Type Description

id

Number

Unique identifier of input captions.

pid

Number

Elementary stream identifier.

format

String

Format of input captions.

Allowed values are "SMPTE_2038".

Input captions example:

{
  "id" : 0,
  "pid" : 662,
  "format" : "SMPTE_2038"
}

Input metadata

JSON object containing configuration of input metadata.

Path Type Description

id

Number

Unique identifier of input metadata.

pid

Number

Elementary stream identifier.

format

String

Format of input metadata.

Allowed values are "UNKNOWN".

Input metadata example:

{
  "id" : 0,
  "pid" : 663,
  "format" : "UNKNOWN"
}

Output stream

JSON object containing configuration of output stream.

Path Type Description

id

Number

Unique identifier of output stream.

name

String

Name of this output stream displayed in UI.

sink.address

String|Array

Output stream sink(s).

String value should be in format "rtp://<ip-address>:<port>:<interface-id>" for RTP/UDP stream, "udp://<ip-address>:<port>:<interface-id>" for UDP stream or "file://<file>" for transcoder system local file. The <interface-id> should be the identifier of one of the available network interfaces.

Examples: "rtp://0.0.0.0:5000:lo", "udp://0.0.0.0:5000:lo" or "file:///tmp/input.ts".

sink.streamType

String

Type of output stream.

Allowed values are "MPEG_TS".

service.name

String

Name of the service to be embedded into SDT (Service Description Table) inside MPEG-TS.

service.providerName

String

Name of the service provider to be embedded into SDT (Service Description Table) inside MPEG-TS.

bitrate

Number

Maximum total bitrate of output stream in bits per second.

pcrStreamLocation

String

Placement of stream with PCR.

ebpLength

Number

Encoder boundary point in seconds or multiples of GOP.

ebpLengthUnit

String

Unit of EBP length. Can be in seconds or in multiples of GOP.

Allowed values are "SECONDS" or "GOPS".

video

Object<Output video>

Configuration of output video.

audio

Array<Output audio>

Configuration of output audio.

metadata

Array<Output metadata>

Configuration of output metadata.

Output stream example:

{
  "id" : 0,
  "name" : "Output Stream 1",
  "sink" : {
    "streamType" : "MPEG_TS",
    "address" : "rtp://0.0.0.0:6001:lo"
  },
  "service" : {
    "name" : "SERVICE",
    "providerName" : "PROVIDER"
  },
  "pcrStreamLocation" : "SEPARATE",
  "ebpLength" : 5,
  "ebpLengthUnit" : "SECONDS",
  "bitrate" : 10000000,
  "video" : {
    "pid" : 670,
    "format" : "H264",
    "width" : 720,
    "height" : 576,
    "sampling" : "4:2:0",
    "depth" : 8,
    "scanRate" : "50",
    "scan" : "INTERLACED",
    "fieldOrder" : "TOP_FIELD_FIRST",
    "h264" : {
      "coding" : "CABAC",
      "profile" : "HIGH",
      "gopSize" : 120,
      "bCount" : 0
    },
    "bitrate" : 8000000,
    "captions" : 0,
    "crop" : {
      "fit" : "PAD",
      "from" : [ 0, 10 ],
      "to" : [ -1, 1070 ]
    }
  },
  "audio" : [ {
    "id" : 0,
    "pid" : 671,
    "format" : "AAC",
    "rate" : 48000,
    "name" : "Output audio 1",
    "bitrate" : 1000000,
    "channels" : 2,
    "references" : [ {
      "id" : 0,
      "channel" : 0
    } ]
  } ],
  "metadata" : [ {
    "id" : 0,
    "pid" : 673,
    "format" : "UNKNOWN",
    "reference" : 0
  } ]
}

Output video

JSON object containing configuration of output video.

Path Type Description

pid

Number

Elementary stream identifier.

format

String

Format of output video.

Allowed values are "J2K", "H262", "H264" or "H265".

width

Number

Video frame width.

height

Number

Video frame height.

crop

Object

Configuration of cropping and/or padding.

crop.fit

String

Allowed values are "SCALE", "CROP" or "PAD".

Use "SCALE" to resize configured input frame size to configured output frame size and change aspect ratio when it differs.

Use "CROP" to resize configured input frame size to configured output frame size but keep the input frame aspect ratio. The input will be automatically horizontally or vertically cropped.

Use "PAD" to resize configured input frame size to configured output frame size but keep the input frame aspect ratio. The input will be automatically expanded with horizontal or vertical black bars.

crop.from

Array

Array with X and Y offset in input video frame which specifies the first left/top most input pixel to be included in output frame. It can point outside of input frame area to create black bars.

Examples: [10,20] to crop 10 pixels from left and 20 pixels from top, [-10,-20] to create 10 pixels wide black bar at left and 20 pixels high black bar at top in inut video frame.

crop.to

Array

Array with X and Y offset in input video frame which specifies the first right/bottom most input pixel to not be included in output frame. It can point outside of input frame area to create black bars.

Examples: [1910,1060] to crop 10 pixels from right and 20 pixels from bottom in 1920x1080 input video frame, [1930,1100] to create 10 pixels wide black bar at right and 20 pixels high black bar at bottom in 1920x1080 input video frame.

sampling

String

Video frame subsampling.

Allowed values are "4:2:2", "4:2:0" or "4:4:4".

depth

Number

Video frame samples bit-depth.

scanRate

String

Frame rate for progressive scan video (frames per second) or field rate for interlaced scan video (fields per second).

String value should be in format "<value>/<factor>" or "<value>".

Examples: "24000/1001" or "24".

scan

String

Allowed values are "PROGRESSIVE" (for progressive scan video) or "INTERLACED" (for interlaced scan video).

fieldOrder

String

Allowed values are "TOP_FIELD_FIRST" or "BOTTOM_FIELD_FIRST".

bitrate

Number

Maximum bitrate of output video in bits per second.

captions

Number

Identifier of input captions to be wrapped inside output video.

h262

Object

Encoding settings for H.262 video.

Valid only when format is "H262".

h262.profile

String

Allowed values are "HIGH", "MAIN" or "SIMPLE".

h262.gopSize

Number

GOP size in number of frames.

Allowed values are 25 - 300.

h262.bCount

Number

Number of B frames.

Allowed values are 0 - 4.

h264

Object

Encoding settings for H.264 video.

Valid only when format is "H264".

h264.coding

String

Allowed values are "CABAC" or "CAVLC".

h264.profile

String

Allowed values are "HIGH", "MAIN" or "BASELINE".

h264.gopSize

Number

GOP size in number of frames.

Allowed values are 25 - 300.

h264.bCount

Number

Number of B frames.

Allowed values are 0 - 4.

Output video example:

{
  "pid" : 670,
  "format" : "H264",
  "width" : 720,
  "height" : 576,
  "sampling" : "4:2:0",
  "depth" : 8,
  "scanRate" : "50",
  "scan" : "INTERLACED",
  "fieldOrder" : "TOP_FIELD_FIRST",
  "h264" : {
    "coding" : "CABAC",
    "profile" : "HIGH",
    "gopSize" : 120,
    "bCount" : 0
  },
  "bitrate" : 8000000,
  "captions" : 0,
  "crop" : {
    "fit" : "PAD",
    "from" : [ 0, 10 ],
    "to" : [ -1, 1070 ]
  }
}

Output audio

JSON object containing configuration of output audio.

Path Type Description

id

Number

Unique identifier of output audio.

name

String

Name of this output audio displayed in UI.

pid

Number

Elementary stream identifier.

format

String

Format of output audio.

Allowed values are "AC3", "AES3", "AAC" or "MPEG2".

rate

Number

Audio sampling rate in Hz.

references[]

Array

Array of output channels referencing channels from input audio.

references[].id

Number

Identifier of referenced input audio.

references[].channel

Number

Index of channel from referenced input audio.

channels

Number

Number of output audio channels which shall be down-mixed/up-mixed from the referenced input channels.

Ommit the field when down-mixing/up-mixing shall not be performed or use 2 for stereo, 6 for 5.1 and 8 for 7.1.

bitrate

Number

Maximum bitrate of output audio in bits per second.

Output audio example:

{
  "id" : 0,
  "pid" : 671,
  "format" : "AAC",
  "rate" : 48000,
  "name" : "Output audio 1",
  "bitrate" : 1000000,
  "channels" : 2,
  "references" : [ {
    "id" : 0,
    "channel" : 0
  } ]
}

Output metadata

JSON object containing configuration of output metadata.

Path Type Description

id

Number

Unique identifier of output metadata.

pid

Number

Elementary stream identifier.

format

String

Format of output metadata.

Allowed values are "UNKNOWN".

reference

Number

Identifier of referenced input metadata.

Output metadata example:

{
  "id" : 0,
  "pid" : 673,
  "format" : "UNKNOWN",
  "reference" : 0
}

Pipeline state

JSON object containing current state for single pipeline.

Path Type Description

id

Number

Unique identifier of this pipeline.

status

String

Allowed values are "ERROR", "WARNING", "OK" or "UNKNOWN".

name

String

Name of this pipeline.

source

String

Input stream source.

description

String

Input stream description.

decodedFps

Number

Number of decoded progressive frames/interlaced fields per second from this input stream (average over the last few seconds).

decodingLatency

Number

Decoding latency of progressive frame/interlaced field in milliseconds from this input stream (average over the last few seconds).

invalidFps

Number

Number of invalid (not-decodable) progressive frames/interlaced fields per second for this input stream (average over the last few seconds).

messages[]

Array

Messages for this pipeline.

messages[].severity

String

Allowed values are "ERROR" or "WARNING".

messages[].message

String

Message text for this pipeline

elementaryStreams

Array<Elementary stream>

Array of detected/configured elementary streams.

outputs

Array<Output stream state>

Array of output stream states.

Relation Description

self

Link to current state of this pipeline.

pipeline

Link to this pipeline.

Pipeline state example:

{
  "id" : 0,
  "status" : "ERROR",
  "name" : "Pipeline 1",
  "source" : "rtp://0.0.0.0:5001:lo",
  "description" : "JPEG2000 1920x1080 4:4:4 10-bit",
  "decodedFps" : 0.0,
  "decodingLatency" : 0.0,
  "invalidFps" : 0.0,
  "elementaryStreams" : [ {
    "id" : 0,
    "pid" : 501,
    "type" : "UNKNOWN",
    "state" : "NEW"
  }, {
    "id" : 0,
    "pid" : 502,
    "type" : "VIDEO",
    "state" : "NEW",
    "format" : "J2K",
    "width" : 1920,
    "height" : 1080,
    "depth" : 10,
    "sampling" : "4:2:2",
    "scanRate" : "60000/1001",
    "scan" : "INTERLACED",
    "fieldOrder" : "BOTTOM_FIELD_FIRST",
    "messages" : [ {
      "severity" : "ERROR",
      "message" : "This video stream wasn't detected in source stream."
    } ]
  }, {
    "id" : 0,
    "pid" : 503,
    "type" : "AUDIO",
    "state" : "NEW",
    "format" : "AES3",
    "channelCount" : 2,
    "rate" : 48000,
    "bitrate" : 128000,
    "messages" : [ {
      "severity" : "ERROR",
      "message" : "This audio stream wasn't detected in source stream."
    } ]
  }, {
    "id" : 0,
    "pid" : 504,
    "type" : "CAPTIONS",
    "state" : "NEW",
    "format" : "SMPTE_2038"
  }, {
    "id" : 0,
    "pid" : 505,
    "type" : "METADATA",
    "state" : "NEW",
    "format" : "UNKNOWN",
    "info" : "INFO1INFO1INFO1INFO1INFO"
  } ],
  "outputs" : [ {
    "id" : 0,
    "status" : "ERROR",
    "name" : "Output Stream 1",
    "sink" : "rtp://0.0.0.0:6001:lo",
    "description" : "H.264 1920x1080 4:2:0 8-bit",
    "encodedFps" : 0.0,
    "encodingLatency" : 0.0,
    "transcodedFps" : 0.0,
    "transcodingLatency" : 0.0,
    "droppedFps" : 0.0,
    "messages" : [ {
      "severity" : "ERROR",
      "message" : "Output Stream 1: Not producing any output."
    } ]
  } ],
  "links" : [ {
    "rel" : "self",
    "href" : "https://127.0.0.1/api/pipeline/0/state"
  }, {
    "rel" : "pipeline",
    "href" : "https://127.0.0.1/api/pipeline/0"
  } ]
}

Elementary stream state

JSON object containing detected/configured elementary stream state.

Path Type Description

id

Number

Unique identifier of this elementary stream in a set of elementary streams with the same type.

type

String

Type of elementary stream.

Allowed values are "VIDEO", "AUDIO", "CAPTIONS", "METADATA" or "UNKNOWN".

state

String

Current state of elementary stream.

Allowed values are "NEW" (newly detected elementary stream), "MATCHED" (configured elementary stream which was found) or "ERROR" (configured elementary stream which wasn’t found).

pid

Number

Elementary stream identifier.

messages[]

Array

Messages for this elementary stream.

messages[].severity

String

Allowed values are "ERROR" or "WARNING".

messages[].message

String

Message text for this elementary stream

Elementary stream example:

{
  "id" : 0,
  "pid" : 501,
  "type" : "UNKNOWN",
  "state" : "NEW"
}

Video elementary stream state

JSON object containing detected/configured video elementary stream state (type = "VIDEO").

Path Type Description

format

String

Format of video.

Allowed values are "J2K", "H262", "H264" or "H265".

width

Number

Video frame width.

height

Number

Video frame height.

depth

Number

Video frame samples bit-depth.

sampling

String

Video frame subsampling.

Allowed values are "4:2:2", "4:2:0" or "4:4:4".

scanRate

String

Frame rate for progressive scan video (frames per second) or field rate for interlaced scan video (fields per second).

String value should be in format "<value>/<factor>" or "<value>".

Examples: "24000/1001" or "24".

scan

String

Allowed values are "PROGRESSIVE" (for progressive scan video) or "INTERLACED" (for interlaced scan video).

fieldOrder

String

Allowed values are "TOP_FIELD_FIRST" or "BOTTOM_FIELD_FIRST".

Video elementary stream example:

{
  "id" : 0,
  "pid" : 502,
  "type" : "VIDEO",
  "state" : "NEW",
  "format" : "J2K",
  "width" : 1920,
  "height" : 1080,
  "depth" : 10,
  "sampling" : "4:2:2",
  "scanRate" : "60000/1001",
  "scan" : "INTERLACED",
  "fieldOrder" : "BOTTOM_FIELD_FIRST",
  "messages" : [ {
    "severity" : "ERROR",
    "message" : "This video stream wasn't detected in source stream."
  } ]
}

Audio elementary stream state

JSON object containing detected/configured audio elementary stream state (type = "AUDIO").

Path Type Description

format

String

Format of audio.

Allowed values are "AC3", "AES3", "AAC" or "MPEG2".

channelCount

Number

Number of audio channels.

rate

Number

Audio sampling rate in Hz.

bitrate

Number

Bitrate of audio in bits per second.

Audio elementary stream example:

{
  "id" : 0,
  "pid" : 503,
  "type" : "AUDIO",
  "state" : "NEW",
  "format" : "AES3",
  "channelCount" : 2,
  "rate" : 48000,
  "bitrate" : 128000,
  "messages" : [ {
    "severity" : "ERROR",
    "message" : "This audio stream wasn't detected in source stream."
  } ]
}

Captions elementary stream state

JSON object containing detected/configured captions elementary stream state (type = "CAPTIONS").

Path Type Description

format

String

Format of captions.

Allowed values are "SMPTE_2038".

Captions elementary stream example:

{
  "id" : 0,
  "pid" : 504,
  "type" : "CAPTIONS",
  "state" : "NEW",
  "format" : "SMPTE_2038"
}

Metadata elementary stream state

JSON object containing detected/configured metadata elementary stream state (type = "METADATA").

Path Type Description

format

String

Format of metadata.

Allowed values are "UNKNOWN".

info

String

Metadata description.

Metadata elementary stream example:

{
  "id" : 0,
  "pid" : 505,
  "type" : "METADATA",
  "state" : "NEW",
  "format" : "UNKNOWN",
  "info" : "INFO1INFO1INFO1INFO1INFO"
}

Output stream state

JSON object containing current state for single output stream.

Path Type Description

id

Number

Unique identifier of this output stream.

status

String

Allowed values are "ERROR", "WARNING", "OK" or "UNKNOWN".

name

String

Name of this output stream.

sink

String|Array

Output stream sink(s).

description

String

Output stream description.

encodedFps

Number

Number of encoded progressive frames/interlaced fields per second for this output stream (average over the last few seconds).

encodingLatency

Number

Encoding latency of progressive frame/interlaced field in milliseconds for this output stream (average over the last few seconds).

transcodedFps

Number

Number of transcoded progressive frames/interlaced fields per second for this output stream (average over the last few seconds).

transcodingLatency

Number

Transcoding latency of progressive frame/interlaced field in milliseconds for this output stream (average over the last few seconds).

droppedFps

Number

Number of dropped progressive frames/interlaced fieldsdas per second for this output stream (average over the last few seconds).

messages[]

Array

Messages for this output stream.

messages[].severity

String

Allowed values are "ERROR" or "WARNING".

messages[].message

String

Message text for this output stream

Output stream state example:

{
  "id" : 0,
  "status" : "ERROR",
  "name" : "Output Stream 1",
  "sink" : "rtp://0.0.0.0:6001:lo",
  "description" : "H.264 1920x1080 4:2:0 8-bit",
  "encodedFps" : 0.0,
  "encodingLatency" : 0.0,
  "transcodedFps" : 0.0,
  "transcodingLatency" : 0.0,
  "droppedFps" : 0.0,
  "messages" : [ {
    "severity" : "ERROR",
    "message" : "Output Stream 1: Not producing any output."
  } ]
}

Configuration of All Pipelines

Allows you to list and replace configuration of all pipelines at once.

List All Existing Pipelines

You may list all existing pipelines by using this action. It returns JSON array containing all existing pipelines.

HTTP request

GET /api/pipelines HTTP/1.1
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Accept: application/json
Host: 127.0.0.1

Curl request

$ curl 'https://127.0.0.1/api/pipelines' -i -u 'admin:password' \
    -H 'Accept: application/json'

Response data

Path Type Description

[]

Array<Pipeline>

An array of all existing pipelines.

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 3061

[ {
  "version" : "0.6",
  "id" : 0,
  "name" : "Pipeline 1",
  "source" : {
    "streamType" : "MPEG_TS",
    "address" : "rtp://0.0.0.0:5001:lo",
    "complianceWith" : "AUTO",
    "addressPCR" : "udp://0.0.0.0:5000:lo"
  },
  "video" : {
    "format" : "J2K",
    "width" : 1920,
    "height" : 1080,
    "sampling" : "4:2:2",
    "depth" : 10,
    "scanRate" : "50",
    "scan" : "INTERLACED",
    "fieldOrder" : "TOP_FIELD_FIRST",
    "filters" : {
      "yOffset" : 16,
      "yGain" : 0.2,
      "rOffset" : 1,
      "rGain" : 0.01,
      "gOffset" : 2,
      "gGain" : 0.02,
      "bOffset" : 3,
      "bGain" : 0.03,
      "rgbClip" : true,
      "hue" : 4.5,
      "saturation" : 0.5
    }
  },
  "audio" : [ {
    "id" : 0,
    "pid" : 661,
    "format" : "AES3",
    "rate" : 48000,
    "channels" : 2,
    "filters" : {
      "volumeGain" : 2.5
    },
    "passthrough" : false
  } ],
  "captions" : [ {
    "id" : 0,
    "pid" : 662,
    "format" : "SMPTE_2038"
  } ],
  "metadata" : [ {
    "id" : 0,
    "pid" : 663,
    "format" : "UNKNOWN"
  } ],
  "outputs" : [ {
    "id" : 0,
    "name" : "Output Stream 1",
    "sink" : {
      "streamType" : "MPEG_TS",
      "address" : "rtp://0.0.0.0:6001:lo"
    },
    "service" : {
      "name" : "SERVICE",
      "providerName" : "PROVIDER"
    },
    "pcrStreamLocation" : "SEPARATE",
    "ebpLength" : 5,
    "ebpLengthUnit" : "SECONDS",
    "bitrate" : 10000000,
    "video" : {
      "pid" : 670,
      "format" : "H264",
      "width" : 720,
      "height" : 576,
      "sampling" : "4:2:0",
      "depth" : 8,
      "scanRate" : "50",
      "scan" : "INTERLACED",
      "fieldOrder" : "TOP_FIELD_FIRST",
      "h264" : {
        "coding" : "CABAC",
        "profile" : "HIGH",
        "gopSize" : 120,
        "bCount" : 0
      },
      "bitrate" : 8000000,
      "captions" : 0,
      "crop" : {
        "fit" : "PAD",
        "from" : [ 0, 10 ],
        "to" : [ -1, 1070 ]
      }
    },
    "audio" : [ {
      "id" : 0,
      "pid" : 671,
      "format" : "AAC",
      "rate" : 48000,
      "name" : "Output audio 1",
      "bitrate" : 1000000,
      "channels" : 2,
      "references" : [ {
        "id" : 0,
        "channel" : 0
      } ]
    } ],
    "metadata" : [ {
      "id" : 0,
      "pid" : 673,
      "format" : "UNKNOWN",
      "reference" : 0
    } ]
  } ],
  "links" : [ {
    "rel" : "self",
    "href" : "https://127.0.0.1/api/pipeline/0"
  }, {
    "rel" : "state",
    "href" : "https://127.0.0.1/api/pipeline/0/state"
  } ]
}, {
  "version" : "0.6",
  "id" : 1,
  "name" : "Pipeline 2",
  "source" : {
    "streamType" : "MPEG_TS",
    "address" : "rtp://0.0.0.0:5002:lo",
    "complianceWith" : "AUTO"
  },
  "video" : {
    "format" : "J2K",
    "width" : 1920,
    "height" : 1080,
    "sampling" : "4:2:2",
    "depth" : 10,
    "scanRate" : "60000/1001",
    "scan" : "PROGRESSIVE"
  },
  "links" : [ {
    "rel" : "self",
    "href" : "https://127.0.0.1/api/pipeline/1"
  }, {
    "rel" : "state",
    "href" : "https://127.0.0.1/api/pipeline/1/state"
  } ]
} ]

Replace All Pipelines

You may replace all existing pipelines by using this action. It removes all existing pipelines and creates all pipelines contained in given JSON array.

You can use the response JSON array from listing all existing pipelines as input for this action.

Request data

Path Type Description

[]

Array<Pipeline>

An array of pipelines to be replaced.

HTTP request

POST /api/pipelines HTTP/1.1
Content-Type: application/json
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Host: 127.0.0.1
Content-Length: 2669

[{
  "id" : 0,
  "name" : "Pipeline 1",
  "source" : {
    "address" : "rtp://0.0.0.0:5001:lo",
    "streamType" : "MPEG_TS",
    "complianceWith" : "AUTO",
    "addressPCR" : "udp://0.0.0.0:5000:lo"
  },
  "video" : {
    "format" : "J2K",
    "width" : 1920,
    "height" : 1080,
    "sampling" : "4:2:2",
    "depth" : 10,
    "scanRate" : "50",
    "scan" : "INTERLACED",
    "fieldOrder" : "TOP_FIELD_FIRST",
    "filters" : {
      "yOffset" : 16,
      "yGain" : 0.2,
      "rOffset" : 1,
      "rGain" : 0.01,
      "gOffset" : 2,
      "gGain" : 0.02,
      "bOffset" : 3,
      "bGain" : 0.03,
      "rgbClip" : true,
      "hue" : 4.5,
      "saturation" : 0.5
    }
  },
  "audio" : [ {
    "id" : 0,
    "pid" : 661,
    "format" : "AES3",
    "rate" : 48000,
    "channels" : 2,
    "filters" : {
      "volumeGain" : 2.5
    },
    "passthrough" : false
  } ],
  "captions" : [ {
    "id" : 0,
    "pid" : 662,
    "format" : "SMPTE_2038"
  } ],
  "metadata" : [ {
    "id" : 0,
    "pid" : 663,
    "format" : "UNKNOWN"
  } ],
  "outputs" : [ {
    "id" : 0,
    "name" : "Output Stream 1",
    "sink" : {
      "address" : "rtp://0.0.0.0:6001:lo",
      "streamType" : "MPEG_TS"
    },
    "service" : {
      "name" : "SERVICE",
      "providerName" : "PROVIDER"
    },
    "bitrate" : 10000000,
    "pcrStreamLocation" : "SEPARATE",
    "ebpLength" : 5,
    "ebpLengthUnit" : "SECONDS",
    "video" : {
      "pid" : 670,
      "format" : "H264",
      "width" : 720,
      "height" : 576,
      "crop" : {
        "fit" : "PAD",
        "from" : [0,10],
        "to" : [-1,1070]
      },
      "sampling" : "4:2:0",
      "depth" : 8,
      "scanRate" : "50",
      "scan" : "INTERLACED",
      "fieldOrder" : "TOP_FIELD_FIRST",
      "captions" : 0,
      "bitrate" : 8000000,
      "h264" : {
        "coding" : "CABAC",
        "profile" : "HIGH",
        "gopSize" : 120,
        "bCount" : 0
      }
    },
    "audio" : [ {
      "id" : 0,
      "pid" : 671,
      "format" : "AAC",
      "rate" : 48000,
      "name" : "Output audio 1",
      "bitrate" : 1000000,
      "references" : [ {
        "id" : 0,
        "channel" : 0
      } ],
      "channels" : 2
    } ],
    "metadata" : [ {
      "id" : 0,
      "pid" : 673,
      "format" : "UNKNOWN",
      "reference" : 0
    } ]
  } ]
}, {
  "id" : 1,
  "name" : "Pipeline 2",
  "source" : {
    "address" : "rtp://0.0.0.0:5002:lo",
    "streamType" : "MPEG_TS",
    "complianceWith" : "AUTO"
  },
  "video" : {
    "format" : "J2K",
    "width" : 1920,
    "height" : 1080,
    "sampling" : "4:2:2",
    "depth" : 10,
    "scanRate" : "60000/1001",
    "scan" : "PROGRESSIVE"
  }
}]

Curl request

$ curl 'https://127.0.0.1/api/pipelines' -i -u 'admin:password' -X POST \
    -H 'Content-Type: application/json' \
    -d '[{
  "id" : 0,
  "name" : "Pipeline 1",
  "source" : {
    "address" : "rtp://0.0.0.0:5001:lo",
    "streamType" : "MPEG_TS",
    "complianceWith" : "AUTO",
    "addressPCR" : "udp://0.0.0.0:5000:lo"
  },
  "video" : {
    "format" : "J2K",
    "width" : 1920,
    "height" : 1080,
    "sampling" : "4:2:2",
    "depth" : 10,
    "scanRate" : "50",
    "scan" : "INTERLACED",
    "fieldOrder" : "TOP_FIELD_FIRST",
    "filters" : {
      "yOffset" : 16,
      "yGain" : 0.2,
      "rOffset" : 1,
      "rGain" : 0.01,
      "gOffset" : 2,
      "gGain" : 0.02,
      "bOffset" : 3,
      "bGain" : 0.03,
      "rgbClip" : true,
      "hue" : 4.5,
      "saturation" : 0.5
    }
  },
  "audio" : [ {
    "id" : 0,
    "pid" : 661,
    "format" : "AES3",
    "rate" : 48000,
    "channels" : 2,
    "filters" : {
      "volumeGain" : 2.5
    },
    "passthrough" : false
  } ],
  "captions" : [ {
    "id" : 0,
    "pid" : 662,
    "format" : "SMPTE_2038"
  } ],
  "metadata" : [ {
    "id" : 0,
    "pid" : 663,
    "format" : "UNKNOWN"
  } ],
  "outputs" : [ {
    "id" : 0,
    "name" : "Output Stream 1",
    "sink" : {
      "address" : "rtp://0.0.0.0:6001:lo",
      "streamType" : "MPEG_TS"
    },
    "service" : {
      "name" : "SERVICE",
      "providerName" : "PROVIDER"
    },
    "bitrate" : 10000000,
    "pcrStreamLocation" : "SEPARATE",
    "ebpLength" : 5,
    "ebpLengthUnit" : "SECONDS",
    "video" : {
      "pid" : 670,
      "format" : "H264",
      "width" : 720,
      "height" : 576,
      "crop" : {
        "fit" : "PAD",
        "from" : [0,10],
        "to" : [-1,1070]
      },
      "sampling" : "4:2:0",
      "depth" : 8,
      "scanRate" : "50",
      "scan" : "INTERLACED",
      "fieldOrder" : "TOP_FIELD_FIRST",
      "captions" : 0,
      "bitrate" : 8000000,
      "h264" : {
        "coding" : "CABAC",
        "profile" : "HIGH",
        "gopSize" : 120,
        "bCount" : 0
      }
    },
    "audio" : [ {
      "id" : 0,
      "pid" : 671,
      "format" : "AAC",
      "rate" : 48000,
      "name" : "Output audio 1",
      "bitrate" : 1000000,
      "references" : [ {
        "id" : 0,
        "channel" : 0
      } ],
      "channels" : 2
    } ],
    "metadata" : [ {
      "id" : 0,
      "pid" : 673,
      "format" : "UNKNOWN",
      "reference" : 0
    } ]
  } ]
}, {
  "id" : 1,
  "name" : "Pipeline 2",
  "source" : {
    "address" : "rtp://0.0.0.0:5002:lo",
    "streamType" : "MPEG_TS",
    "complianceWith" : "AUTO"
  },
  "video" : {
    "format" : "J2K",
    "width" : 1920,
    "height" : 1080,
    "sampling" : "4:2:2",
    "depth" : 10,
    "scanRate" : "60000/1001",
    "scan" : "PROGRESSIVE"
  }
}]
'

HTTP response

HTTP/1.1 200 OK

Configuration of Pipelines

Allows you to create a new pipeline or get, modify or delete some existing pipeline.

Create a New Pipeline

You may create a new pipeline by using this action. It takes a JSON object containing the new pipeline configuration.

Request data

Path Type Description

{}

Pipeline

Configuration of new pipeline.

HTTP request

POST /api/pipeline HTTP/1.1
Content-Type: application/json
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Host: 127.0.0.1
Content-Length: 325

{
  "name" : "Pipeline 3",
  "source" : {
    "address" : "rtp://0.0.0.0:5003:lo",
    "streamType" : "MPEG_TS",
    "complianceWith" : "AUTO"
  },
  "video" : {
    "format" : "J2K",
    "width" : 1920,
    "height" : 1080,
    "sampling" : "4:2:2",
    "depth" : 10,
    "scanRate" : "24",
    "scan" : "PROGRESSIVE"
  }
}

Curl request

$ curl 'https://127.0.0.1/api/pipeline' -i -u 'admin:password' -X POST \
    -H 'Content-Type: application/json' \
    -d '{
  "name" : "Pipeline 3",
  "source" : {
    "address" : "rtp://0.0.0.0:5003:lo",
    "streamType" : "MPEG_TS",
    "complianceWith" : "AUTO"
  },
  "video" : {
    "format" : "J2K",
    "width" : 1920,
    "height" : 1080,
    "sampling" : "4:2:2",
    "depth" : 10,
    "scanRate" : "24",
    "scan" : "PROGRESSIVE"
  }
}'

HTTP response

HTTP/1.1 201 Created
Location: https://127.0.0.1/api/pipeline/2

Get an Existing Pipeline

You may get an existing pipeline by using this action. It takes pipeline identifier as a parameter and it returns JSON object with pipeline configuration.

HTTP request

GET /api/pipeline/0 HTTP/1.1
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Accept: application/json
Host: 127.0.0.1

Curl request

$ curl 'https://127.0.0.1/api/pipeline/0' -i -u 'admin:password' \
    -H 'Accept: application/json'

Response data

Path Type Description

{}

Pipeline

Configuration of existing pipeline.

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 2517

{
  "version" : "0.6",
  "id" : 0,
  "name" : "Pipeline 1",
  "source" : {
    "streamType" : "MPEG_TS",
    "address" : "rtp://0.0.0.0:5001:lo",
    "complianceWith" : "AUTO",
    "addressPCR" : "udp://0.0.0.0:5000:lo"
  },
  "video" : {
    "format" : "J2K",
    "width" : 1920,
    "height" : 1080,
    "sampling" : "4:2:2",
    "depth" : 10,
    "scanRate" : "50",
    "scan" : "INTERLACED",
    "fieldOrder" : "TOP_FIELD_FIRST",
    "filters" : {
      "yOffset" : 16,
      "yGain" : 0.2,
      "rOffset" : 1,
      "rGain" : 0.01,
      "gOffset" : 2,
      "gGain" : 0.02,
      "bOffset" : 3,
      "bGain" : 0.03,
      "rgbClip" : true,
      "hue" : 4.5,
      "saturation" : 0.5
    }
  },
  "audio" : [ {
    "id" : 0,
    "pid" : 661,
    "format" : "AES3",
    "rate" : 48000,
    "channels" : 2,
    "filters" : {
      "volumeGain" : 2.5
    },
    "passthrough" : false
  } ],
  "captions" : [ {
    "id" : 0,
    "pid" : 662,
    "format" : "SMPTE_2038"
  } ],
  "metadata" : [ {
    "id" : 0,
    "pid" : 663,
    "format" : "UNKNOWN"
  } ],
  "outputs" : [ {
    "id" : 0,
    "name" : "Output Stream 1",
    "sink" : {
      "streamType" : "MPEG_TS",
      "address" : "rtp://0.0.0.0:6001:lo"
    },
    "service" : {
      "name" : "SERVICE",
      "providerName" : "PROVIDER"
    },
    "pcrStreamLocation" : "SEPARATE",
    "ebpLength" : 5,
    "ebpLengthUnit" : "SECONDS",
    "bitrate" : 10000000,
    "video" : {
      "pid" : 670,
      "format" : "H264",
      "width" : 720,
      "height" : 576,
      "sampling" : "4:2:0",
      "depth" : 8,
      "scanRate" : "50",
      "scan" : "INTERLACED",
      "fieldOrder" : "TOP_FIELD_FIRST",
      "h264" : {
        "coding" : "CABAC",
        "profile" : "HIGH",
        "gopSize" : 120,
        "bCount" : 0
      },
      "bitrate" : 8000000,
      "captions" : 0,
      "crop" : {
        "fit" : "PAD",
        "from" : [ 0, 10 ],
        "to" : [ -1, 1070 ]
      }
    },
    "audio" : [ {
      "id" : 0,
      "pid" : 671,
      "format" : "AAC",
      "rate" : 48000,
      "name" : "Output audio 1",
      "bitrate" : 1000000,
      "channels" : 2,
      "references" : [ {
        "id" : 0,
        "channel" : 0
      } ]
    } ],
    "metadata" : [ {
      "id" : 0,
      "pid" : 673,
      "format" : "UNKNOWN",
      "reference" : 0
    } ]
  } ],
  "links" : [ {
    "rel" : "self",
    "href" : "https://127.0.0.1/api/pipeline/0"
  }, {
    "rel" : "state",
    "href" : "https://127.0.0.1/api/pipeline/0/state"
  } ]
}

Modify an Existing Pipeline

You may modify an existing pipeline configuration by using this action. It takes pipeline identifier and JSON object with new pipeline configuration as parameters.

Request data

Path Type Description

{}

Pipeline

Configuration of new pipeline.

HTTP request

PUT /api/pipeline/1 HTTP/1.1
Content-Type: application/json
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Host: 127.0.0.1
Content-Length: 333

{
  "name" : "Pipeline 2 Changed",
  "source" : {
    "address" : "rtp://0.0.0.0:5002:lo",
    "streamType" : "MPEG_TS",
    "complianceWith" : "AUTO"
  },
  "video" : {
    "format" : "J2K",
    "width" : 1920,
    "height" : 1080,
    "sampling" : "4:2:2",
    "depth" : 10,
    "scanRate" : "24",
    "scan" : "PROGRESSIVE"
  }
}

Curl request

$ curl 'https://127.0.0.1/api/pipeline/1' -i -u 'admin:password' -X PUT \
    -H 'Content-Type: application/json' \
    -d '{
  "name" : "Pipeline 2 Changed",
  "source" : {
    "address" : "rtp://0.0.0.0:5002:lo",
    "streamType" : "MPEG_TS",
    "complianceWith" : "AUTO"
  },
  "video" : {
    "format" : "J2K",
    "width" : 1920,
    "height" : 1080,
    "sampling" : "4:2:2",
    "depth" : 10,
    "scanRate" : "24",
    "scan" : "PROGRESSIVE"
  }
}'

HTTP response

HTTP/1.1 200 OK
Location: https://127.0.0.1/api/pipeline/1

Remove an Existing Pipeline

You may delete an existing pipeline by using this action. It takes pipeline identifier as a parameter.

HTTP request

DELETE /api/pipeline/1 HTTP/1.1
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Host: 127.0.0.1

Curl request

$ curl 'https://127.0.0.1/api/pipeline/1' -i -u 'admin:password' -X DELETE

HTTP response

HTTP/1.1 200 OK

Retrieving Pipeline State

Allows you to retrieve current state of all existing pipelines.

Get Pipeline State

You may retrieve current state of some existing pipeline by using this action. It takes pipeline identifier as a parameter and it returns JSON object containing the pipeline state.

HTTP request

GET /api/pipeline/0/state HTTP/1.1
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Accept: application/json
Host: 127.0.0.1

Curl request

$ curl 'https://127.0.0.1/api/pipeline/0/state' -i -u 'admin:password' \
    -H 'Accept: application/json'

Response data

Path Type Description

{}

Pipeline state

Current state of existing pipeline.

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 1928

{
  "id" : 0,
  "status" : "ERROR",
  "name" : "Pipeline 1",
  "source" : "rtp://0.0.0.0:5001:lo",
  "description" : "JPEG2000 1920x1080 4:4:4 10-bit",
  "decodedFps" : 0.0,
  "decodingLatency" : 0.0,
  "invalidFps" : 0.0,
  "elementaryStreams" : [ {
    "id" : 0,
    "pid" : 501,
    "type" : "UNKNOWN",
    "state" : "NEW"
  }, {
    "id" : 0,
    "pid" : 502,
    "type" : "VIDEO",
    "state" : "NEW",
    "format" : "J2K",
    "width" : 1920,
    "height" : 1080,
    "depth" : 10,
    "sampling" : "4:2:2",
    "scanRate" : "60000/1001",
    "scan" : "INTERLACED",
    "fieldOrder" : "BOTTOM_FIELD_FIRST",
    "messages" : [ {
      "severity" : "ERROR",
      "message" : "This video stream wasn't detected in source stream."
    } ]
  }, {
    "id" : 0,
    "pid" : 503,
    "type" : "AUDIO",
    "state" : "NEW",
    "format" : "AES3",
    "channelCount" : 2,
    "rate" : 48000,
    "bitrate" : 128000,
    "messages" : [ {
      "severity" : "ERROR",
      "message" : "This audio stream wasn't detected in source stream."
    } ]
  }, {
    "id" : 0,
    "pid" : 504,
    "type" : "CAPTIONS",
    "state" : "NEW",
    "format" : "SMPTE_2038"
  }, {
    "id" : 0,
    "pid" : 505,
    "type" : "METADATA",
    "state" : "NEW",
    "format" : "UNKNOWN",
    "info" : "INFO1INFO1INFO1INFO1INFO"
  } ],
  "outputs" : [ {
    "id" : 0,
    "status" : "ERROR",
    "name" : "Output Stream 1",
    "sink" : "rtp://0.0.0.0:6001:lo",
    "description" : "H.264 1920x1080 4:2:0 8-bit",
    "encodedFps" : 0.0,
    "encodingLatency" : 0.0,
    "transcodedFps" : 0.0,
    "transcodingLatency" : 0.0,
    "droppedFps" : 0.0,
    "messages" : [ {
      "severity" : "ERROR",
      "message" : "Output Stream 1: Not producing any output."
    } ]
  } ],
  "links" : [ {
    "rel" : "self",
    "href" : "https://127.0.0.1/api/pipeline/0/state"
  }, {
    "rel" : "pipeline",
    "href" : "https://127.0.0.1/api/pipeline/0"
  } ]
}

System info

Version info

Allows you to retrieve information about current running version of transcoder.

HTTP request

GET /api/system/version HTTP/1.1
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Accept: application/json
Host: 127.0.0.1

Curl request

$ curl 'https://127.0.0.1/api/system/version' -i -u 'admin:password' \
    -H 'Accept: application/json'

Response data

Path Type Description

transcoder

Object

Transcoder version info.

transcoder.version

String

Version in format <major>.<minor>.<maintenance>.

transcoder.date

String

Release date in format <year>-<month>-<day>.

transcoder.hash

String

Version hash (unique version identifier).

j2kDec

Object

JPEG2000 SDK decoder version info.

j2kDec.version

String

Version in format <major>.<minor>.<maintenance>.

j2kDec.date

String

Release date in format <year>-<month>-<day>.

j2kDec.hash

String

Version hash (unique version identifier).

j2kDec.stage

String

Version stage (e.g., release).

j2kDec.type

String

Version type (e.g., full or evaluation).

j2kDec.technology

Array

Array of supported technologies (cpu, cuda or opencl).

j2kEnc

Object

JPEG2000 SDK encoder version info.

j2kEnc.version

String

Version in format <major>.<minor>.<maintenance>.

j2kEnc.date

String

Release date in format <year>-<month>-<day>.

j2kEnc.hash

String

Version hash (unique version identifier).

j2kEnc.stage

String

Version stage (e.g., release).

j2kEnc.type

String

Version type (e.g., full or evaluation).

j2kEnc.technology

Array

Array of supported technologies (cpu, cuda or opencl).

j2kTrc

Object

JPEG2000 SDK transcoder version info.

j2kTrc.version

String

Version in format <major>.<minor>.<maintenance>.

j2kTrc.date

String

Release date in format <year>-<month>-<day>.

j2kTrc.hash

String

Version hash (unique version identifier).

j2kTrc.stage

String

Version stage (e.g., release).

j2kTrc.type

String

Version type (e.g., full or evaluation).

j2kTrc.technology

Array

Array of supported technologies (cpu, cuda or opencl).

nvidiaDriver

String

NVIDIA driver version in format <major>.<minor>.

cudaDriver

String

CUDA driver version in format <major>.<minor>.

cudaRuntime

String

CUDA runtime version in format <major>.<minor>.

HTTP response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 851

{
  "transcoder" : {
    "version" : "1.2.1",
    "date" : "2018-10-19",
    "hash" : "98e22d3292e8905a75f95b4da4153d6f627dc8c0"
  },
  "j2kDec" : {
    "version" : "2.5.10",
    "date" : "2018-03-27",
    "hash" : "a22b87f11d83cd7a610a91e38b7ec6c8cef33664",
    "stage" : "release",
    "type" : "full",
    "technology" : [ "cuda", "cpu" ]
  },
  "j2kEnc" : {
    "version" : "2.5.10",
    "date" : "2018-03-27",
    "hash" : "a22b87f11d83cd7a610a91e38b7ec6c8cef33664",
    "stage" : "release",
    "type" : "full",
    "technology" : [ "cuda", "cpu" ]
  },
  "j2kTrc" : {
    "version" : "2.5.10",
    "date" : "2018-03-27",
    "hash" : "a22b87f11d83cd7a610a91e38b7ec6c8cef33664",
    "stage" : "release",
    "type" : "full",
    "technology" : [ "cuda", "cpu" ]
  },
  "nvidiaDriver" : "384.98",
  "cudaDriver" : "9.0",
  "cudaRuntime" : "9.0"
}

Get list of available network interfaces

Allows you to retrieve list of all available network interfaces whose identifiers can be used in pipeline source or output stream sink.

HTTP request

GET /api/system/network-interfaces HTTP/1.1
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Accept: application/json
Host: 127.0.0.1

Curl request

$ curl 'https://127.0.0.1/api/system/network-interfaces' -i -u 'admin:password' \
    -H 'Accept: application/json'

Response data

Path Type Description

[]

Array

Array of available network interfaces.

[].id

String

Identifier of the network interface.

[].name

String

Display name of the network interface.

[].connected

Boolean

Indicates whether network interface is connected.

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 241

[ {
  "id" : "eth1",
  "name" : "Ethernet card 1 (eth1, 1 Gb/s)",
  "connected" : true
}, {
  "id" : "lo",
  "name" : "Loopback (lo)",
  "connected" : true
}, {
  "id" : "wlan1",
  "name" : "Ethernet card 2 (wlan1)",
  "connected" : true
} ]

Get list of available SDI devices

Allows you to retrieve list of all available SDI devices whose identifiers can be used in pipeline source or output stream sink.

HTTP request

GET /api/system/sdi-devices HTTP/1.1
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Accept: application/json
Host: 127.0.0.1

Curl request

$ curl 'https://127.0.0.1/api/system/sdi-devices' -i -u 'admin:password' \
    -H 'Accept: application/json'

Response data

Path Type Description

[]

Array

Array of available SDI devices.

[].id

String

Identifier of the SDI device.

[].name

String

Name of the SDI device.

[].ports

Array

Available ports in SDI device.

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 311

[ {
  "id" : "dektec-sdi-0",
  "name" : "DekTec SDI #0",
  "ports" : [ "1", "2", "3", "4" ]
}, {
  "id" : "dektec-sdi-1",
  "name" : "DekTec SDI #1",
  "ports" : [ "1", "2", "3", "4", "5", "6" ]
}, {
  "id" : "dektec-sdi-2",
  "name" : "DekTec SDI #2",
  "ports" : [ "1", "2", "3", "4", "5", "6", "7", "8" ]
} ]

Errors

Error response

Path Type Description

status

Number

Error status code.

error

String

Error message.

Example 1

DELETE /api/pipeline/7 HTTP/1.1
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Host: 127.0.0.1
HTTP/1.1 404 Not Found
Content-Type: application/json;charset=UTF-8
Content-Length: 71

{
  "status" : 404,
  "error" : "Pipeline with id = 7 doesn't exist."
}

Example 2

POST /api/pipeline HTTP/1.1
Content-Type: application/json
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Host: 127.0.0.1
Content-Length: 19

{
  "source" : {}
}
HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8
Content-Length: 90

{
  "status" : 400,
  "error" : "Missing required property 'address'. (in: '{}.source')"
}

Example 3

POST /api/pipeline HTTP/1.1
Content-Type: application/json
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Host: 127.0.0.1
Content-Length: 139

{
  "source" : {
    "address" : "rtp://0.0.0.0:5000:lo",
    "streamType" : "MPEG_TS",
    "complianceWith" : "AUTO"
  },
  "video": {}
}
HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8
Content-Length: 87

{
  "status" : 400,
  "error" : "Missing required property 'depth'. (in: '{}.video')"
}