NAV
General Flip
Timed Text Speech Quality Control Notifications

API

This is documentation of the new API for Telestream Cloud Flip transcoding service. It introduces a number of changes and updates that may affect your integration.

We still maintain documentation for API V3 and documentation for API V2 and you will be able to keep using it.

Flip API is REST based with responses in JSON and allows you to control whole transcoding process, from setting up and managing Factories, adding and customizing profiles, submitting jobs and monitoring their progress and status.

Using the REST API directly

If you don’t plan to use one of our SDKs you then you will need the following data to make calls to our API:

factories

factories

Code samples

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/factories.json',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.get('https://api.cloud.telestream.net/flip/3.1/factories.json', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/factories.json");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/factories.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /factories.json

Returns a collection of Factory objects.

Returns a collection of Factory objects.

Parameters

page
integer
In query
optional
A page to be fetched. Default is 1.
per_page
integer
In query
optional
A number of results per page. Default is 100.
with_storage_provider
boolean
In query
optional
if set to true, results will include a storage provider’s id

Example responses

200 Response

{
  "type": "object",
  "properties": {
    "factories": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "A unique identifier of a Factory."
          },
          "name": {
            "type": "string",
            "description": "Human-readable identifier of a Factory."
          },
          "factory_region": {
            "type": "string",
            "description": "A region where the factory is located."
          },
          "output_bucket_name": {
            "type": "string",
            "description": "A bucket where processed files will be stored."
          },
          "acl": {
            "type": "string",
            "enum": [
              "public",
              "private"
            ],
            "description": "Specify if your files are public or private (private files need authorization url to access). By default this is not set."
          },
          "created_at": {
            "type": "string",
            "format": "datetime",
            "description": "A date and time when a Factory has been created."
          },
          "updated_at": {
            "type": "string",
            "format": "datetime",
            "description": "A date and time when a Factory has been updated last time."
          },
          "url": {
            "type": "string",
            "description": "An URL pointing to the output_bucket_name."
          },
          "server_side_encryption": {
            "type": "boolean",
            "description": "Specify if you want to use multi-factor server-side 256-bit AES-256 data encryption with Amazon S3-managed encryption keys (SSE-S3). Each object is encrypted using a unique key which as an additional safeguard is encrypted itself with a master key that S3 regularly rotates. By default this is not set."
          },
          "input_bucket_name": {
            "type": "string",
            "description": "A name of an input bucket."
          },
          "input_bucket_watch": {
            "type": "boolean",
            "description": "Determines whether the Factory should be notified about new files added to the input bucket."
          },
          "input_bucket_files_map": {
            "type": "string"
          },
          "input_bucket_sync_every_n_min": {
            "type": "string",
            "description": "Determines how often the input bucket is synchronised."
          },
          "input_bucket_recursive": {
            "type": "string"
          },
          "input_bucket_file_pattern": {
            "type": "string",
            "description": "A pattern that will be used to locate files in the input bucket. Valid wildcards might be used."
          },
          "outputs_path_format": {
            "type": "string"
          },
          "storage_provider": {
            "type": "integer",
            "description": "Specifies which storage provider the factory should use. Available options: S3: 0, Google Cloud Storage: 1, FTP storage: 2, Google Cloud Interoperability Storage: 5, Flip storage: 7, FASP storage: 8, Azure Blob Storage: 9"
          },
          "provider_specific_settings": {
            "type": "object",
            "additionalProperties": null
          }
        }
      }
    },
    "page": {
      "type": "integer",
      "description": "A number of the fetched page."
    },
    "per_page": {
      "type": "integer",
      "description": "A number of factories per page."
    },
    "total": {
      "type": "integer",
      "description": "A number of all factories stored in the db."
    }
  }
}

Responses

Status Description Schema
200 OK
Successfully fetched a list of Factories.
PaginatedFactoryCollection

create factory

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.post 'https://api.cloud.telestream.net/flip/3.1/factories.json',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.post('https://api.cloud.telestream.net/flip/3.1/factories.json', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/factories.json");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://api.cloud.telestream.net/flip/3.1/factories.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /factories.json

Creates a new factory

Body parameter

{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "aws_access_key": {
      "type": "string",
      "description": "AWS access key."
    },
    "aws_secret_key": {
      "type": "string",
      "description": "AWS secret key."
    },
    "factory_region": {
      "type": "string",
      "description": "A region where the factory is located."
    },
    "input_bucket_file_pattern": {
      "type": "string",
      "description": "A pattern that will be used to locate files in the input bucket. Valid wildcards might be used."
    },
    "input_bucket_name": {
      "type": "string",
      "description": "A name of an input bucket."
    },
    "input_bucket_recursive": {
      "type": "boolean"
    },
    "input_bucket_sync_every_n_min": {
      "type": "integer",
      "description": "Determines how often the input bucket is synchronised."
    },
    "input_bucket_watch": {
      "type": "boolean",
      "description": "Determines whether the Factory should be notified about new files added to the input bucket."
    },
    "name": {
      "type": "string",
      "description": "Name of the Factory."
    },
    "outputs_path_format": {
      "type": "string",
      "description": "Specify the directory where the output files should be stored. By default it is not set. More info [here](https://cloud.telestream.net/docs#path-format---know-how)."
    },
    "provider_specific_settings": {
      "type": "object",
      "additionalProperties": null
    },
    "acl": {
      "type": "string",
      "enum": [
        "public",
        "private"
      ],
      "description": "Specify if your files are public or private (private files need authorization url to access). By default this is not set."
    },
    "output_bucket_name": {
      "type": "string",
      "description": "A bucket where processed files will be stored."
    },
    "server_side_encryption": {
      "type": "boolean",
      "description": "Specify if you want to use multi-factor server-side 256-bit AES-256 data encryption with Amazon S3-managed encryption keys (SSE-S3). Each object is encrypted using a unique key which as an additional safeguard is encrypted itself with a master key that S3 regularly rotates. By default this is not set."
    },
    "storage_credential_attributes": {
      "type": "object",
      "properties": {
        "host": {
          "type": "string"
        },
        "username": {
          "type": "string"
        },
        "password": {
          "type": "string"
        },
        "port": {
          "type": "integer"
        }
      }
    },
    "storage_provider": {
      "type": "integer",
      "description": "Specifies which storage provider the factory should use. Available options: S3: 0, Google Cloud Storage: 1, FTP storage: 2, Google Cloud Interoperability Storage: 5, Flip storage: 7, FASP storage: 8, Azure Blob Storage: 9"
    }
  }
}

Parameters

with_storage_provider
boolean
In query
optional
if set to true, results will include a storage provider’s id
body
In body
required
none

Example responses

201 Response

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "A unique identifier of a Factory."
    },
    "name": {
      "type": "string",
      "description": "Human-readable identifier of a Factory."
    },
    "factory_region": {
      "type": "string",
      "description": "A region where the factory is located."
    },
    "output_bucket_name": {
      "type": "string",
      "description": "A bucket where processed files will be stored."
    },
    "acl": {
      "type": "string",
      "enum": [
        "public",
        "private"
      ],
      "description": "Specify if your files are public or private (private files need authorization url to access). By default this is not set."
    },
    "created_at": {
      "type": "string",
      "format": "datetime",
      "description": "A date and time when a Factory has been created."
    },
    "updated_at": {
      "type": "string",
      "format": "datetime",
      "description": "A date and time when a Factory has been updated last time."
    },
    "url": {
      "type": "string",
      "description": "An URL pointing to the output_bucket_name."
    },
    "server_side_encryption": {
      "type": "boolean",
      "description": "Specify if you want to use multi-factor server-side 256-bit AES-256 data encryption with Amazon S3-managed encryption keys (SSE-S3). Each object is encrypted using a unique key which as an additional safeguard is encrypted itself with a master key that S3 regularly rotates. By default this is not set."
    },
    "input_bucket_name": {
      "type": "string",
      "description": "A name of an input bucket."
    },
    "input_bucket_watch": {
      "type": "boolean",
      "description": "Determines whether the Factory should be notified about new files added to the input bucket."
    },
    "input_bucket_files_map": {
      "type": "string"
    },
    "input_bucket_sync_every_n_min": {
      "type": "string",
      "description": "Determines how often the input bucket is synchronised."
    },
    "input_bucket_recursive": {
      "type": "string"
    },
    "input_bucket_file_pattern": {
      "type": "string",
      "description": "A pattern that will be used to locate files in the input bucket. Valid wildcards might be used."
    },
    "outputs_path_format": {
      "type": "string"
    },
    "storage_provider": {
      "type": "integer",
      "description": "Specifies which storage provider the factory should use. Available options: S3: 0, Google Cloud Storage: 1, FTP storage: 2, Google Cloud Interoperability Storage: 5, Flip storage: 7, FASP storage: 8, Azure Blob Storage: 9"
    },
    "provider_specific_settings": {
      "type": "object",
      "additionalProperties": null
    }
  }
}

400 Response

{
  "error": "string",
  "message": "string"
}

403 Response

{
  "error": "string",
  "message": "string"
}

Responses

Status Description Schema
201 Created
Successfully created a Factory
Factory
400 Bad Request
Failed to create a Factory
Error
403 Forbidden
Not authorized to create a Factory
Error

factory

Code samples

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/factories/{id}.json',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.get('https://api.cloud.telestream.net/flip/3.1/factories/{id}.json', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/factories/{id}.json");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/factories/{id}.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /factories/{id}.json

Returns a Factory object.

Returns a Factory object.

Parameters

id
string
In path
required
id of a factory
with_storage_provider
boolean
In query
optional
if set to true, results will include a storage provider’s id

Example responses

200 Response

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "A unique identifier of a Factory."
    },
    "name": {
      "type": "string",
      "description": "Human-readable identifier of a Factory."
    },
    "factory_region": {
      "type": "string",
      "description": "A region where the factory is located."
    },
    "output_bucket_name": {
      "type": "string",
      "description": "A bucket where processed files will be stored."
    },
    "acl": {
      "type": "string",
      "enum": [
        "public",
        "private"
      ],
      "description": "Specify if your files are public or private (private files need authorization url to access). By default this is not set."
    },
    "created_at": {
      "type": "string",
      "format": "datetime",
      "description": "A date and time when a Factory has been created."
    },
    "updated_at": {
      "type": "string",
      "format": "datetime",
      "description": "A date and time when a Factory has been updated last time."
    },
    "url": {
      "type": "string",
      "description": "An URL pointing to the output_bucket_name."
    },
    "server_side_encryption": {
      "type": "boolean",
      "description": "Specify if you want to use multi-factor server-side 256-bit AES-256 data encryption with Amazon S3-managed encryption keys (SSE-S3). Each object is encrypted using a unique key which as an additional safeguard is encrypted itself with a master key that S3 regularly rotates. By default this is not set."
    },
    "input_bucket_name": {
      "type": "string",
      "description": "A name of an input bucket."
    },
    "input_bucket_watch": {
      "type": "boolean",
      "description": "Determines whether the Factory should be notified about new files added to the input bucket."
    },
    "input_bucket_files_map": {
      "type": "string"
    },
    "input_bucket_sync_every_n_min": {
      "type": "string",
      "description": "Determines how often the input bucket is synchronised."
    },
    "input_bucket_recursive": {
      "type": "string"
    },
    "input_bucket_file_pattern": {
      "type": "string",
      "description": "A pattern that will be used to locate files in the input bucket. Valid wildcards might be used."
    },
    "outputs_path_format": {
      "type": "string"
    },
    "storage_provider": {
      "type": "integer",
      "description": "Specifies which storage provider the factory should use. Available options: S3: 0, Google Cloud Storage: 1, FTP storage: 2, Google Cloud Interoperability Storage: 5, Flip storage: 7, FASP storage: 8, Azure Blob Storage: 9"
    },
    "provider_specific_settings": {
      "type": "object",
      "additionalProperties": null
    }
  }
}

403 Response

{
  "error": "string",
  "message": "string"
}

404 Response

{
  "error": "string",
  "message": "string"
}

Responses

Status Description Schema
200 OK
Successfully fetched the Factory
Factory
403 Forbidden
Unauthorized to access the Factory
Error
404 Not Found
Factory not found
Error

update factory

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.patch 'https://api.cloud.telestream.net/flip/3.1/factories/{id}.json',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.patch('https://api.cloud.telestream.net/flip/3.1/factories/{id}.json', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/factories/{id}.json");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PATCH");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "https://api.cloud.telestream.net/flip/3.1/factories/{id}.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH /factories/{id}.json

Updates a Factory’s settings. Returns a Factory object.

Body parameter

{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "aws_access_key": {
      "type": "string",
      "description": "AWS access key."
    },
    "aws_secret_key": {
      "type": "string",
      "description": "AWS secret key."
    },
    "factory_region": {
      "type": "string",
      "description": "A region where the factory is located."
    },
    "input_bucket_file_pattern": {
      "type": "string",
      "description": "A pattern that will be used to locate files in the input bucket. Valid wildcards might be used."
    },
    "input_bucket_name": {
      "type": "string",
      "description": "A name of an input bucket."
    },
    "input_bucket_recursive": {
      "type": "boolean"
    },
    "input_bucket_sync_every_n_min": {
      "type": "integer",
      "description": "Determines how often the input bucket is synchronised."
    },
    "input_bucket_watch": {
      "type": "boolean",
      "description": "Determines whether the Factory should be notified about new files added to the input bucket."
    },
    "name": {
      "type": "string",
      "description": "Name of the Factory."
    },
    "outputs_path_format": {
      "type": "string",
      "description": "Specify the directory where the output files should be stored. By default it is not set. More info [here](https://cloud.telestream.net/docs#path-format---know-how)."
    },
    "provider_specific_settings": {
      "type": "object",
      "additionalProperties": null
    },
    "acl": {
      "type": "string",
      "enum": [
        "public",
        "private"
      ],
      "description": "Specify if your files are public or private (private files need authorization url to access). By default this is not set."
    },
    "output_bucket_name": {
      "type": "string",
      "description": "A bucket where processed files will be stored."
    },
    "server_side_encryption": {
      "type": "boolean",
      "description": "Specify if you want to use multi-factor server-side 256-bit AES-256 data encryption with Amazon S3-managed encryption keys (SSE-S3). Each object is encrypted using a unique key which as an additional safeguard is encrypted itself with a master key that S3 regularly rotates. By default this is not set."
    },
    "storage_credential_attributes": {
      "type": "object",
      "properties": {
        "host": {
          "type": "string"
        },
        "username": {
          "type": "string"
        },
        "password": {
          "type": "string"
        },
        "port": {
          "type": "integer"
        }
      }
    },
    "storage_provider": {
      "type": "integer",
      "description": "Specifies which storage provider the factory should use. Available options: S3: 0, Google Cloud Storage: 1, FTP storage: 2, Google Cloud Interoperability Storage: 5, Flip storage: 7, FASP storage: 8, Azure Blob Storage: 9"
    }
  }
}

Parameters

id
string
In path
required
id of the factory
with_storage_provider
boolean
In query
optional
if set to true, results will include a storage provider’s id
body
In body
required
none

Example responses

200 Response

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "A unique identifier of a Factory."
    },
    "name": {
      "type": "string",
      "description": "Human-readable identifier of a Factory."
    },
    "factory_region": {
      "type": "string",
      "description": "A region where the factory is located."
    },
    "output_bucket_name": {
      "type": "string",
      "description": "A bucket where processed files will be stored."
    },
    "acl": {
      "type": "string",
      "enum": [
        "public",
        "private"
      ],
      "description": "Specify if your files are public or private (private files need authorization url to access). By default this is not set."
    },
    "created_at": {
      "type": "string",
      "format": "datetime",
      "description": "A date and time when a Factory has been created."
    },
    "updated_at": {
      "type": "string",
      "format": "datetime",
      "description": "A date and time when a Factory has been updated last time."
    },
    "url": {
      "type": "string",
      "description": "An URL pointing to the output_bucket_name."
    },
    "server_side_encryption": {
      "type": "boolean",
      "description": "Specify if you want to use multi-factor server-side 256-bit AES-256 data encryption with Amazon S3-managed encryption keys (SSE-S3). Each object is encrypted using a unique key which as an additional safeguard is encrypted itself with a master key that S3 regularly rotates. By default this is not set."
    },
    "input_bucket_name": {
      "type": "string",
      "description": "A name of an input bucket."
    },
    "input_bucket_watch": {
      "type": "boolean",
      "description": "Determines whether the Factory should be notified about new files added to the input bucket."
    },
    "input_bucket_files_map": {
      "type": "string"
    },
    "input_bucket_sync_every_n_min": {
      "type": "string",
      "description": "Determines how often the input bucket is synchronised."
    },
    "input_bucket_recursive": {
      "type": "string"
    },
    "input_bucket_file_pattern": {
      "type": "string",
      "description": "A pattern that will be used to locate files in the input bucket. Valid wildcards might be used."
    },
    "outputs_path_format": {
      "type": "string"
    },
    "storage_provider": {
      "type": "integer",
      "description": "Specifies which storage provider the factory should use. Available options: S3: 0, Google Cloud Storage: 1, FTP storage: 2, Google Cloud Interoperability Storage: 5, Flip storage: 7, FASP storage: 8, Azure Blob Storage: 9"
    },
    "provider_specific_settings": {
      "type": "object",
      "additionalProperties": null
    }
  }
}

400 Response

{
  "error": "string",
  "message": "string"
}

403 Response

{
  "error": "string",
  "message": "string"
}

404 Response

{
  "error": "string",
  "message": "string"
}

Responses

Status Description Schema
200 OK
OK
Factory
400 Bad Request
failed to update the Factory
Error
403 Forbidden
Unauthorized to update the Factory
Error
404 Not Found
Factory not found
Error

toggle factory sync

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.post 'https://api.cloud.telestream.net/flip/3.1/factories/{id}/sync.json',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.post('https://api.cloud.telestream.net/flip/3.1/factories/{id}/sync.json', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/factories/{id}/sync.json");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://api.cloud.telestream.net/flip/3.1/factories/{id}/sync.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /factories/{id}/sync.json

Toggles synchronisation settings.

Body parameter

{
  "sync": "true"
}

Parameters

id
string
In path
required
id of the factory
body
In body
required
none

Example responses

200 Response

{
  "syncing": false
}

403 Response

{
  "error": "string",
  "message": "string"
}

404 Response

{
  "error": "string",
  "message": "string"
}

Responses

Status Description Schema
200 OK
Successfully updated synchronisation settings.
FactorySync
403 Forbidden
Unauthorized to access the Factory.
Error
404 Not Found
Factory not found.
Error

videos

videos

Code samples

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/videos.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.get('https://api.cloud.telestream.net/flip/3.1/videos.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/videos.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/videos.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /videos.json

Returns a collection of Video objects.

Parameters

factory_id
string
In query
required
Id of a Factory.
page
integer
In query
optional
A page to be fetched. Default is 1.
per_page
integer
In query
optional
A number of results per page. Default is 100.

Example responses

200 Response

{
  "videos": [
    {
      "id": "string",
      "audio_bitrate": 128,
      "audio_channels": 0,
      "audio_codec": "string",
      "audio_sample_rate": 0,
      "created_at": "string",
      "duration": 0,
      "encodings_count": 0,
      "error_class": "string",
      "error_message": "string",
      "extname": "string",
      "file_size": 0,
      "fps": 0,
      "height": 0,
      "width": 0,
      "mime_type": "string",
      "original_filename": "string",
      "path": "string",
      "payload": "string",
      "source_url": "string",
      "status": "string",
      "updated_at": "string",
      "video_bitrate": "string",
      "video_codec": "string"
    }
  ],
  "page": 0,
  "per_page": 0,
  "total": 0
}

Responses

Status Description Schema
200 OK
Videos successfully fetched.
PaginatedVideoCollection

create video

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.post 'https://api.cloud.telestream.net/flip/3.1/videos.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.post('https://api.cloud.telestream.net/flip/3.1/videos.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/videos.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://api.cloud.telestream.net/flip/3.1/videos.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /videos.json

Creates a Video from a provided source_url.

Body parameter

{
  "source_url": "string",
  "profiles": "string",
  "payload": "string",
  "pipeline": "string",
  "subtitle_files": [
    "string"
  ],
  "extra_files": {
    "property1": [
      "string"
    ],
    "property2": [
      "string"
    ]
  },
  "extra_variables": {
    "property1": "string",
    "property2": "string"
  },
  "path_format": "string",
  "clip_end": "00:32:16",
  "clip_length": "00:20:00",
  "clip_offset": "00:00:10"
}

Parameters

factory_id
string
In query
required
Id of a Factory.
body
object
In body
required
none
» source_url
string
In body
optional
An URL pointing to a source file.
» profiles
string
In body
optional
Comma-separated list of profile names or IDs to be used during encoding. Alternatively, specify none so no encodings are created yet.
» payload
string
In body
optional
Arbitrary string stored along the Video object.
» pipeline
string
In body
optional
String-encoded JSON describing profiles pipeline.
» subtitle_files
[string]
In body
optional
A list of urls pointing to remote subtitle files.
» extra_files
object
In body
optional
none
»» additionalProperties
[string]
In body
optional
none
» extra_variables
object
In body
optional
none
»» additionalProperties
string
In body
optional
none
» path_format
string
In body
optional
none
» clip_end
string
In body
optional
Clip ends at a specific time.
» clip_length
string
In body
optional
A clip’s duration.
» clip_offset
string
In body
optional
Clip starts at a specific offset.

Example responses

201 Response

{
  "id": "string",
  "audio_bitrate": 128,
  "audio_channels": 0,
  "audio_codec": "string",
  "audio_sample_rate": 0,
  "created_at": "string",
  "duration": 0,
  "encodings_count": 0,
  "error_class": "string",
  "error_message": "string",
  "extname": "string",
  "file_size": 0,
  "fps": 0,
  "height": 0,
  "width": 0,
  "mime_type": "string",
  "original_filename": "string",
  "path": "string",
  "payload": "string",
  "source_url": "string",
  "status": "string",
  "updated_at": "string",
  "video_bitrate": "string",
  "video_codec": "string"
}

403 Response

{
  "error": "string",
  "message": "string"
}

Responses

Status Description Schema
201 Created
Video successfully created.
Video
403 Forbidden
User not allowed to create videos.
Error
500 Internal Server Error
Failed to create a video.
None

Payload

Payload is an arbitrary text of length 256 or shorter that you can store along the Video. It is typically used to retain an association with one of your own DB record ID.

queued videos

Code samples

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/videos/queued.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.get('https://api.cloud.telestream.net/flip/3.1/videos/queued.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/videos/queued.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/videos/queued.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /videos/queued.json

Returns a collection of Video objects queued for encoding.

Parameters

factory_id
string
In query
required
Id of a Factory.
page
integer
In query
optional
A page to be fetched. Default is 1.
per_page
integer
In query
optional
A number of results per page. Default is 100.

Example responses

200 Response

{
  "videos": [
    {
      "id": "string",
      "audio_bitrate": 128,
      "audio_channels": 0,
      "audio_codec": "string",
      "audio_sample_rate": 0,
      "created_at": "string",
      "duration": 0,
      "encodings_count": 0,
      "error_class": "string",
      "error_message": "string",
      "extname": "string",
      "file_size": 0,
      "fps": 0,
      "height": 0,
      "width": 0,
      "mime_type": "string",
      "original_filename": "string",
      "path": "string",
      "payload": "string",
      "source_url": "string",
      "status": "string",
      "updated_at": "string",
      "video_bitrate": "string",
      "video_codec": "string"
    }
  ],
  "page": 0,
  "per_page": 0,
  "total": 0
}

Responses

Status Description Schema
200 OK
Returns a collection of Video objects queued for encoding.
PaginatedVideoCollection

resubmit video

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.post 'https://api.cloud.telestream.net/flip/3.1/videos/resubmit.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.post('https://api.cloud.telestream.net/flip/3.1/videos/resubmit.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/videos/resubmit.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://api.cloud.telestream.net/flip/3.1/videos/resubmit.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /videos/resubmit.json

Resubmits a video to encode.

Resubmits the video to encode. Please note that this option will work only for videos in success status.

Body parameter

{
  "video_id": "string"
}

Parameters

factory_id
string
In query
required
Id of a Factory.
body
object
In body
required
none
» video_id
string
In body
optional
Id of the video.

Example responses

400 Response

{
  "error": "string",
  "message": "string"
}

404 Response

{
  "error": "string",
  "message": "string"
}

Responses

Status Description Schema
200 OK
Video successfully resubmitted.
None
400 Bad Request
Invalid input.
Error
404 Not Found
Video or Factory not found
Error

video

Code samples

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/videos/{id}.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.get('https://api.cloud.telestream.net/flip/3.1/videos/{id}.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/videos/{id}.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/videos/{id}.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /videos/{id}.json

Returns a Video object.

Parameters

id
string
In path
required
Id of a Video.
factory_id
string
In query
required
Id of a Factory.

Example responses

200 Response

{
  "id": "string",
  "audio_bitrate": 128,
  "audio_channels": 0,
  "audio_codec": "string",
  "audio_sample_rate": 0,
  "created_at": "string",
  "duration": 0,
  "encodings_count": 0,
  "error_class": "string",
  "error_message": "string",
  "extname": "string",
  "file_size": 0,
  "fps": 0,
  "height": 0,
  "width": 0,
  "mime_type": "string",
  "original_filename": "string",
  "path": "string",
  "payload": "string",
  "source_url": "string",
  "status": "string",
  "updated_at": "string",
  "video_bitrate": "string",
  "video_codec": "string"
}

403 Response

{
  "error": "string",
  "message": "string"
}

404 Response

{
  "error": "string",
  "message": "string"
}

Responses

Status Description Schema
200 OK
Successfully fetched the Video
Video
403 Forbidden
Unauthorized to access the Video
Error
404 Not Found
Video or Factory not found
Error

delete video

Code samples

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.delete 'https://api.cloud.telestream.net/flip/3.1/videos/{id}.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.delete('https://api.cloud.telestream.net/flip/3.1/videos/{id}.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/videos/{id}.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://api.cloud.telestream.net/flip/3.1/videos/{id}.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /videos/{id}.json

Deletes a Video object.

Parameters

id
string
In path
required
Id of a Video.
factory_id
string
In query
required
Id of a Factory.

Example responses

200 Response

{
  "deleted": true
}

403 Response

{
  "error": "string",
  "message": "string"
}

404 Response

{
  "error": "string",
  "message": "string"
}

Responses

Status Description Schema
200 OK
The Video object has been successfully deleted.
DeletedResponse
403 Forbidden
Unauthorized to delete the Video.
Error
404 Not Found
Video or Factory not found.
Error

signed video url

Code samples

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/videos/{id}/signed-url.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.get('https://api.cloud.telestream.net/flip/3.1/videos/{id}/signed-url.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/videos/{id}/signed-url.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/videos/{id}/signed-url.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /videos/{id}/signed-url.json

Returns a signed url pointing to a Video.

Parameters

id
string
In path
required
Id of a Video.
factory_id
string
In query
required
Id of a Factory.

Example responses

200 Response

{
  "signed_url": "string"
}

404 Response

{
  "error": "string",
  "message": "string"
}

Responses

Status Description Schema
200 OK
Successfully fetched a signed video url.
SignedVideoUrl
404 Not Found
Video of Factory not found.
Error

video metadata

Code samples

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/videos/{id}/metadata.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.get('https://api.cloud.telestream.net/flip/3.1/videos/{id}/metadata.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/videos/{id}/metadata.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/videos/{id}/metadata.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /videos/{id}/metadata.json

Returns a Video’s metadata

Parameters

id
string
In path
required
Id of a Video.
factory_id
string
In query
required
Id of a Factory.

Example responses

200 Response

{
  "type": "object",
  "additionalProperties": null
}

404 Response

{
  "error": "string",
  "message": "string"
}

Responses

Status Description Schema
200 OK
Successfully fetched the Video’s metadata
VideoMetadata
404 Not Found
Video or Factory not found
Error

video encodings

Code samples

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/videos/{id}/encodings.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.get('https://api.cloud.telestream.net/flip/3.1/videos/{id}/encodings.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/videos/{id}/encodings.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/videos/{id}/encodings.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /videos/{id}/encodings.json

Returns a list of Encodings that belong to a Video.

Parameters

id
string
In path
required
Id of a Video.
factory_id
string
In query
required
Id of a Factory.
page
integer
In query
optional
A page to be fetched. Default is 1.
per_page
integer
In query
optional
A number of results per page. Default is 100.
screenshots
boolean
In query
optional
Determines whether the response will include screenshots. By default this is not set.
precise_status
boolean
In query
optional
Determines whether the response will include a precise status. By default this is not set.

Example responses

200 Response

{
  "encodings": [
    {
      "id": "string",
      "audio_bitrate": 128,
      "audio_channels": 0,
      "audio_codec": "string",
      "audio_sample_rate": 44100,
      "created_at": "string",
      "duration": 0,
      "encoding_progress": 0,
      "encoding_time": 0,
      "error_class": "string",
      "error_message": "string",
      "external_id": "string",
      "extname": "string",
      "file_size": 0,
      "files": [
        "string"
      ],
      "fps": 0,
      "height": 0,
      "width": 0,
      "logfile_url": "string",
      "mime_type": "string",
      "parent_encoding_id": "string",
      "path": "string",
      "profile_id": "string",
      "profile_name": "string",
      "screenshots": [
        "string"
      ],
      "started_encoding_at": "string",
      "status": "string",
      "updated_at": "string",
      "video_bitrate": 0,
      "video_codec": "string",
      "video_id": "string"
    }
  ],
  "page": 0,
  "per_page": 0,
  "total": 0
}

404 Response

{
  "error": "string",
  "message": "string"
}

Responses

Status Description Schema
200 OK
Successfully fetched a collection of Encodings.
PaginatedEncodingsCollection
404 Not Found
Video or Factory not found
Error

upload video

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.post 'https://api.cloud.telestream.net/flip/3.1/videos/upload.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.post('https://api.cloud.telestream.net/flip/3.1/videos/upload.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/videos/upload.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://api.cloud.telestream.net/flip/3.1/videos/upload.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /videos/upload.json

Creates an upload session.

Body parameter

{
  "file_size": 0,
  "file_name": "string",
  "extra_files": [
    {
      "tag": "string",
      "file_size": 0,
      "file_name": "string"
    }
  ],
  "profiles": "string",
  "path_format": "string",
  "payload": "string",
  "extra_variables": {
    "property1": "string",
    "property2": "string"
  },
  "watermark_url": "string",
  "watermark_left": "100px",
  "watermark_top": "100%",
  "watermark_right": "string",
  "watermark_bottom": "string",
  "watermark_width": "string",
  "watermark_height": "string",
  "clip_length": "string",
  "clip_offset": "00:00:10",
  "multi_chunk": true
}

Parameters

factory_id
string
In query
required
Id of a Factory.
body
object
In body
required
none
» file_size
integer(int64)
In body
required
Size of the file that will be uploaded in bytes.
» file_name
string
In body
required
Name of the file that will be uploaded.
» extra_files
In body
optional
A list of names of additional files that will be uploaded.
»» tag
string
In body
required
none
»» file_size
integer(int64)
In body
required
none
»» file_name
string
In body
required
none
» profiles
string
In body
optional
A comma-separated list of profile names or IDs to be used during encoding. Alternatively, specify none so no encodings will created right away.
» path_format
string
In body
optional
none
» payload
string
In body
optional
Payload is an arbitrary text of length 256 or shorter that you can store along the Video. It is typically used to retain an association with one of your own DB record ID.
» extra_variables
object
In body
optional
none
»» additionalProperties
string
In body
optional
none
» watermark_url
string
In body
optional
URL pointing to an image that will be used asa watermark.
» watermark_left
string
In body
optional
Determines distance between the left edge of a video and the left edge of a watermark image. Can be specified in pixels or percents. This parameter can be set only if watermark_right is not.
» watermark_top
string
In body
optional
Determines distance between the top edge of a video and the top edge of a watermark image. Can be specified in pixels or percents. This parameter can be set only if watermark_bottom is not.
» watermark_right
string
In body
optional
Determines distance between the right edge of a video and the right edge of a watermark image. Can be specified in pixels or percents. This parameter can be set only if watermark_left is not.
» watermark_bottom
string
In body
optional
Determines distance between the bottom edge of a video and the bottom edge of a watermark image. Can be specified in pixels or percents. This parameter can be set only if watermark_top is not.
» watermark_width
string
In body
optional
Determines width of the watermark image. Should be specified in pixels.
» watermark_height
string
In body
optional
Determines width of the watermark image. Should be specified in pixels.
» clip_length
string
In body
optional
Length of the uploaded video. Should be formatted as follows: HH:MM:SS
» clip_offset
string
In body
optional
Clip starts at a specific offset.
» multi_chunk
boolean
In body
optional
none

Example responses

201 Response

{
  "type": "object",
  "required": [
    "id",
    "location"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "An unique identifier of the UploadSession."
    },
    "location": {
      "type": "string",
      "description": "An URL to which chunks of the uploaded file should be sent"
    },
    "parts": {
      "type": "integer",
      "description": "A number of chunks that are expected by the upstream."
    },
    "part_size": {
      "type": "integer",
      "description": "An expected size of uploaded chunks."
    },
    "max_connections": {
      "type": "integer",
      "description": "A maximum number of concurrent connections."
    },
    "extra_files": {
      "type": "object",
      "additionalProperties": null,
      "description": "An object containing additional files uploaded using the session."
    }
  }
}

403 Response

{
  "error": "string",
  "message": "string"
}

Responses

Status Description Schema
201 Created
Upload session successfully created.
UploadSession
403 Forbidden
User not allowed to create an upload session.
Error
500 Internal Server Error
Failed to create an upload session.
None

delete video source

Code samples

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.delete 'https://api.cloud.telestream.net/flip/3.1/videos/{id}/source.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.delete('https://api.cloud.telestream.net/flip/3.1/videos/{id}/source.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/videos/{id}/source.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://api.cloud.telestream.net/flip/3.1/videos/{id}/source.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /videos/{id}/source.json

Delete a video’s source file.

Parameters

id
string
In path
required
Id of a Video.
factory_id
string
In query
required
Id of a Factory.

Example responses

200 Response

{
  "deleted": true
}

403 Response

{
  "error": "string",
  "message": "string"
}

404 Response

{
  "error": "string",
  "message": "string"
}

Responses

Status Description Schema
200 OK
Successfully deleted the Video’s source file.
DeletedResponse
403 Forbidden
Not authorized to delete the Video’s source file.
Error
404 Not Found
Video or Factory not found.
Error

encodings

encodings

Code samples

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/encodings.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.get('https://api.cloud.telestream.net/flip/3.1/encodings.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/encodings.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/encodings.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /encodings.json

Returns a list of Encoding objects

Parameters

factory_id
string
In query
required
Id of a Factory.
video_id
string
In query
optional
Id of a Video. When specified, the resulting list will contain videos that belong to the Video.
status
string
In query
optional
One of success, fail, processing. When specified, the resulting list will contain ecodings filtered by status.
profile_id
string
In query
optional
Filter by profile_id.
profile_name
string
In query
optional
Filter by profile_name.
page
integer
In query
optional
A page to be fetched. Default is 1.
per_page
integer
In query
optional
A number of results per page. Default is 100.
screenshots
boolean
In query
optional
Determines whether the response will include screenshots. By default this is not set.
precise_status
boolean
In query
optional
Determines whether the response will include a precise status. By default this is not set.

Example responses

200 Response

{
  "encodings": [
    {
      "id": "string",
      "audio_bitrate": 128,
      "audio_channels": 0,
      "audio_codec": "string",
      "audio_sample_rate": 44100,
      "created_at": "string",
      "duration": 0,
      "encoding_progress": 0,
      "encoding_time": 0,
      "error_class": "string",
      "error_message": "string",
      "external_id": "string",
      "extname": "string",
      "file_size": 0,
      "files": [
        "string"
      ],
      "fps": 0,
      "height": 0,
      "width": 0,
      "logfile_url": "string",
      "mime_type": "string",
      "parent_encoding_id": "string",
      "path": "string",
      "profile_id": "string",
      "profile_name": "string",
      "screenshots": [
        "string"
      ],
      "started_encoding_at": "string",
      "status": "string",
      "updated_at": "string",
      "video_bitrate": 0,
      "video_codec": "string",
      "video_id": "string"
    }
  ],
  "page": 0,
  "per_page": 0,
  "total": 0
}

Responses

Status Description Schema
200 OK
Successfully fetched a list of Video’s encodings.
PaginatedEncodingsCollection

create encoding

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.post 'https://api.cloud.telestream.net/flip/3.1/encodings.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.post('https://api.cloud.telestream.net/flip/3.1/encodings.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/encodings.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://api.cloud.telestream.net/flip/3.1/encodings.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /encodings.json

Creates an Encoding

Body parameter

{
  "video_id": "string",
  "profile_id": "string",
  "profile_name": "string"
}

Parameters

factory_id
string
In query
required
Id of a Factory.
screenshots
boolean
In query
optional
Determines whether the response will include screenshots. By default this is not set.
precise_status
boolean
In query
optional
Determines whether the response will include a precise status. By default this is not set.
body
object
In body
required
none
» video_id
string
In body
required
Id of a Video that will be encoded.
» profile_id
string
In body
optional
Id of a Profile that will be used for encoding.
» profile_name
string
In body
optional
A name of a Profile that will be used for encoding.

Example responses

200 Response

{
  "id": "string",
  "audio_bitrate": 128,
  "audio_channels": 0,
  "audio_codec": "string",
  "audio_sample_rate": 44100,
  "created_at": "string",
  "duration": 0,
  "encoding_progress": 0,
  "encoding_time": 0,
  "error_class": "string",
  "error_message": "string",
  "external_id": "string",
  "extname": "string",
  "file_size": 0,
  "files": [
    "string"
  ],
  "fps": 0,
  "height": 0,
  "width": 0,
  "logfile_url": "string",
  "mime_type": "string",
  "parent_encoding_id": "string",
  "path": "string",
  "profile_id": "string",
  "profile_name": "string",
  "screenshots": [
    "string"
  ],
  "started_encoding_at": "string",
  "status": "string",
  "updated_at": "string",
  "video_bitrate": 0,
  "video_codec": "string",
  "video_id": "string"
}

400 Response

{
  "error": "string",
  "message": "string"
}

403 Response

{
  "error": "string",
  "message": "string"
}

Responses

Status Description Schema
200 OK
Successfully created an Encoding.
Encoding
400 Bad Request
Failed to create an Encoding using the provided data or tried to add an Encoding for a failed Video or a Video older than 30 days
Error
403 Forbidden
Not authorized to create an Encoding
Error

encodings count

Code samples

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/encodings/count.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.get('https://api.cloud.telestream.net/flip/3.1/encodings/count.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/encodings/count.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/encodings/count.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /encodings/count.json

Returns a number of Encoding objects created using a given factory.

Parameters

factory_id
string
In query
required
Id of a Factory.

Example responses

200 Response

{
  "total": 0
}

404 Response

{
  "error": "string",
  "message": "string"
}

Responses

Status Description Schema
200 OK
Successfully fetched a number of encodings.
CountResponse
404 Not Found
Factory not found.
Error

encoding

Code samples

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/encodings/{id}.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.get('https://api.cloud.telestream.net/flip/3.1/encodings/{id}.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/encodings/{id}.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/encodings/{id}.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /encodings/{id}.json

Returns an Encoding object.

Parameters

id
string
In path
required
Id of an Encoding.
factory_id
string
In query
required
Id of a Factory.
screenshots
boolean
In query
optional
Determines whether the response will include screenshots. By default this is not set.
precise_status
boolean
In query
optional
Determines whether the response will include a precise status. By default this is not set.

Example responses

200 Response

{
  "id": "string",
  "audio_bitrate": 128,
  "audio_channels": 0,
  "audio_codec": "string",
  "audio_sample_rate": 44100,
  "created_at": "string",
  "duration": 0,
  "encoding_progress": 0,
  "encoding_time": 0,
  "error_class": "string",
  "error_message": "string",
  "external_id": "string",
  "extname": "string",
  "file_size": 0,
  "files": [
    "string"
  ],
  "fps": 0,
  "height": 0,
  "width": 0,
  "logfile_url": "string",
  "mime_type": "string",
  "parent_encoding_id": "string",
  "path": "string",
  "profile_id": "string",
  "profile_name": "string",
  "screenshots": [
    "string"
  ],
  "started_encoding_at": "string",
  "status": "string",
  "updated_at": "string",
  "video_bitrate": 0,
  "video_codec": "string",
  "video_id": "string"
}

404 Response

{
  "error": "string",
  "message": "string"
}

Responses

Status Description Schema
200 OK
Successfully fetched the Encoding
Encoding
404 Not Found
Encoding or Factory not found
Error

update encoding

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.put 'https://api.cloud.telestream.net/flip/3.1/encodings/{id}.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.put('https://api.cloud.telestream.net/flip/3.1/encodings/{id}.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/encodings/{id}.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "https://api.cloud.telestream.net/flip/3.1/encodings/{id}.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /encodings/{id}.json

Updates an Encoding

Body parameter

{
  "profile_id": "string",
  "profile_name": "string"
}

Parameters

id
string
In path
required
Id of an Encoding.
factory_id
string
In query
required
Id of a Factory.
screenshots
boolean
In query
optional
Determines whether the response will include screenshots. By default this is not set.
precise_status
boolean
In query
optional
Determines whether the response will include a precise status. By default this is not set.
body
object
In body
required
none
» profile_id
string
In body
optional
Id of a Profile that will be used for encoding.
» profile_name
string
In body
optional
A name of a Profile that will be used for encoding.

Example responses

200 Response

{
  "id": "string",
  "audio_bitrate": 128,
  "audio_channels": 0,
  "audio_codec": "string",
  "audio_sample_rate": 44100,
  "created_at": "string",
  "duration": 0,
  "encoding_progress": 0,
  "encoding_time": 0,
  "error_class": "string",
  "error_message": "string",
  "external_id": "string",
  "extname": "string",
  "file_size": 0,
  "files": [
    "string"
  ],
  "fps": 0,
  "height": 0,
  "width": 0,
  "logfile_url": "string",
  "mime_type": "string",
  "parent_encoding_id": "string",
  "path": "string",
  "profile_id": "string",
  "profile_name": "string",
  "screenshots": [
    "string"
  ],
  "started_encoding_at": "string",
  "status": "string",
  "updated_at": "string",
  "video_bitrate": 0,
  "video_codec": "string",
  "video_id": "string"
}

400 Response

{
  "error": "string",
  "message": "string"
}

403 Response

{
  "error": "string",
  "message": "string"
}

404 Response

{
  "error": "string",
  "message": "string"
}

Responses

Status Description Schema
200 OK
Encoding successfully updated.
Encoding
400 Bad Request
Tried to update an Encoding older than 30 days.
Error
403 Forbidden
Not authorized to update the Encoding.
Error
404 Not Found
Encoding or Factory not found.
Error

delete encoding

Code samples

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.delete 'https://api.cloud.telestream.net/flip/3.1/encodings/{id}.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.delete('https://api.cloud.telestream.net/flip/3.1/encodings/{id}.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/encodings/{id}.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://api.cloud.telestream.net/flip/3.1/encodings/{id}.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /encodings/{id}.json

Deletes an Encoding from both Telestream Cloud and your storage. Returns an information whether the operation was successful.

Parameters

id
string
In path
required
Id of an Encoding.
factory_id
string
In query
required
Id of a Factory.

Example responses

200 Response

{
  "deleted": true
}

400 Response

{
  "error": "string",
  "message": "string"
}

403 Response

{
  "error": "string",
  "message": "string"
}

404 Response

{
  "error": "string",
  "message": "string"
}

Responses

Status Description Schema
200 OK
Encoding has been successfully deleted.
DeletedResponse
400 Bad Request
Tried to delete an Encoding older than 30 days.
Error
403 Forbidden
Not authorized to delete the Encoding.
Error
404 Not Found
Encoding or Factory not found.
Error

signed encoding url

Code samples

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/encodings/{id}/signed-url.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.get('https://api.cloud.telestream.net/flip/3.1/encodings/{id}/signed-url.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/encodings/{id}/signed-url.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/encodings/{id}/signed-url.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /encodings/{id}/signed-url.json

Returns a signed url pointing to an Encoding.

Parameters

id
string
In path
required
Id of an Encoding.
factory_id
string
In query
required
Id of a Factory.

Example responses

200 Response

{
  "signed_url": "string"
}

404 Response

{
  "error": "string",
  "message": "string"
}

Responses

Status Description Schema
200 OK
Successfully fetched a signed url.
EncodingSignedUrl
404 Not Found
Encoding or Factory not found.
Error

signed encoding urls

Code samples

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/encodings/{id}/signed-urls.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.get('https://api.cloud.telestream.net/flip/3.1/encodings/{id}/signed-urls.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/encodings/{id}/signed-urls.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/encodings/{id}/signed-urls.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /encodings/{id}/signed-urls.json

Returns a list of signed urls pointing to an Encoding’s outputs.

Parameters

id
string
In path
required
Id of an Encoding.
factory_id
string
In query
required
Id of a Factory.

Example responses

200 Response

{
  "signed_urls": [
    "string"
  ]
}

404 Response

{
  "error": "string",
  "message": "string"
}

Responses

Status Description Schema
200 OK
Successfully fetched a list of signed urls.
EncodingSignedUrls
404 Not Found
Encoding or Factory not found
Error

retry encoding

Code samples

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.post 'https://api.cloud.telestream.net/flip/3.1/encodings/{id}/retry.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.post('https://api.cloud.telestream.net/flip/3.1/encodings/{id}/retry.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/encodings/{id}/retry.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://api.cloud.telestream.net/flip/3.1/encodings/{id}/retry.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /encodings/{id}/retry.json

Retries a failed encoding.

Parameters

id
string
In path
required
Id of an Encoding.
factory_id
string
In query
required
Id of a Factory.

Example responses

200 Response

{
  "retried": true
}

403 Response

{
  "error": "string",
  "message": "string"
}

404 Response

{
  "error": "string",
  "message": "string"
}

Responses

Status Description Schema
200 OK
Successfully requested reprocessing of the Encoding.
RetriedResponse
403 Forbidden
Not authorized to retry the Encoding.
Error
404 Not Found
Encoding or Factory not found.
Error

cancel encoding

Code samples

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.post 'https://api.cloud.telestream.net/flip/3.1/encodings/{id}/cancel.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.post('https://api.cloud.telestream.net/flip/3.1/encodings/{id}/cancel.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/encodings/{id}/cancel.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://api.cloud.telestream.net/flip/3.1/encodings/{id}/cancel.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /encodings/{id}/cancel.json

Cancels an Encoding.

Parameters

id
string
In path
required
Id of an Encoding.
factory_id
string
In query
required
Id of a Factory.

Example responses

200 Response

{
  "canceled": true
}

400 Response

{
  "error": "string",
  "message": "string"
}

403 Response

{
  "error": "string",
  "message": "string"
}

404 Response

{
  "error": "string",
  "message": "string"
}

Responses

Status Description Schema
200 OK
Encoding has been successfully canceled.
CanceledResponse
400 Bad Request
Tried to cancel an Encoding older than 30 days.
Error
403 Forbidden
Not authorized to cancel the Encoding.
Error
404 Not Found
Encoding or Factory not found.
Error

profiles

profiles

Code samples

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/profiles.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.get('https://api.cloud.telestream.net/flip/3.1/profiles.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/profiles.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/profiles.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /profiles.json

Returns a collection of Profile objects.

Parameters

factory_id
string
In query
required
Id of a Factory.
exclude_advanced_services
boolean
In query
optional
Determine whether exclude Advanced Services profiles from the results. By default this is not set.
expand
boolean
In query
optional
If expand option is set Profile objects will contain all command parameters, even if their value is default. By default this is not set.
page
integer
In query
optional
A page to be fetched. Default is 1.
per_page
integer
In query
optional
A number of results per page. Default is 100.

Example responses

200 Response

{
  "profiles": [
    {
      "advanced_fps_conversion": "telestream",
      "aspect_mode": "preserve",
      "aspect_ratio": "16:9",
      "audio_bitrate": 128,
      "audio_channels": 0,
      "audio_channels_layout": 1,
      "audio_channels_per_track": 0,
      "audio_codec": "string",
      "audio_format": "pcm_s24le",
      "audio_map": "string",
      "audio_pid": "string",
      "audio_profile": "string",
      "audio_sample_rate": 44100,
      "audio_stream_id": 0,
      "audio_streams": 0,
      "avcintra_class": 50,
      "buffer_size": "string",
      "buffer_size_in_packets": "string",
      "bumpers": "string",
      "byte_range_requests": true,
      "clip_end": "00:32:16",
      "clip_length": "00:20:00",
      "clip_offset": "00:00:10",
      "closed_captions": "add",
      "color_metadata": true,
      "created_at": "string",
      "crop_input_bottom": "string",
      "crop_input_height": "string",
      "crop_input_left": "string",
      "crop_input_right": "string",
      "crop_input_top": "string",
      "crop_input_width": "string",
      "dash_profile": "string",
      "deinterlace": "keep_fps",
      "deinterlace_frames": "string",
      "description": "string",
      "dnxhd_type": 36,
      "encryption": true,
      "extname": ".mp4",
      "fps": 29.97,
      "frame_count": "string",
      "frame_interval": "1000f",
      "frame_offsets": "2s, 10s, 250f, 400f",
      "h264_level": 1,
      "h264_profile": "baseline",
      "h264_tune": "film",
      "height": 720,
      "id": "string",
      "imx_type": "string",
      "inputs": "string",
      "interlace": "string",
      "keyframe_interval": "string",
      "keyframe_rate": "string",
      "lang": "string",
      "max_rate": "string",
      "merge_audio_streams": "string",
      "mute_audio_tracks": true,
      "name": "string",
      "outputs": "string",
      "outputs_path_format": "string",
      "playlist_type": "iframe",
      "pmt_pid": "string",
      "preset_name": "string",
      "prores_format": "string",
      "segment_time": 0,
      "stack": "string",
      "telestream_block_size": "16x16",
      "telestream_blur_scaler": 0,
      "telestream_cost_scaler": 0,
      "telestream_search_length_scaler": 0,
      "telestream_subpel_mode": true,
      "time_code": "string",
      "title": "string",
      "trailers": "string",
      "transport_rate": "string",
      "ts_pids": "string",
      "updated_at": "string",
      "upscale": true,
      "use_editlist": true,
      "variants": "string",
      "video_bitrate": 3000,
      "video_pid": "string",
      "watermark_bottom": "string",
      "watermark_bumpers": true,
      "watermark_height": "string",
      "watermark_left": "string",
      "watermark_right": "string",
      "watermark_top": "string",
      "watermark_trailers": true,
      "watermark_url": "string",
      "watermark_width": "string",
      "width": 1080,
      "x264_options": "string",
      "x265_options": "string",
      "xdcam_format": "string",
      "tachyon_allow_remove_pulldown": true,
      "tachyon_enable_post_pulldown_filter": true,
      "tachyon_media_hint_is_cartoon": true,
      "tachyon_media_hint_has_chroma_noise": true,
      "tachyon_more_sensitive_remove_pulldown": true,
      "tachyon_allow_add_standard_pd": true,
      "tachyon_allow_add_2_2pd": true,
      "tachyon_allow_add_4_4pd": true,
      "tachyon_allow_add_4_6pd": true,
      "tachyon_allow_add_euro_pd": true,
      "tachyon_allow_add_adaptive_pd": true,
      "tachyon_motion_amount": "xlow",
      "tachyon_fallback_size": "small",
      "tachyon_mblock_size": "mb16",
      "tachyon_cut_detection_sensitivity": 0,
      "eac3_evolution_enable": true,
      "eac3_bitstream_mode": "m0",
      "eac3_ninety_degree_phase_shift": true,
      "eac3_three_decibel_attenuation": true,
      "eac3_enable_lfe_low_pass_filter": true,
      "eac3_analog_to_digital_converter_type": "standard",
      "eac3_stereo_downmix_preference": "m0",
      "eac3_lt_rt_center_mix_level": "c0",
      "eac3_lt_rt_surround_mix_level": "c3",
      "eac3_lo_ro_center_mix_level": "c0",
      "eac3_lo_ro_surround_mix_level": "c3",
      "eac3_surround_ex_mode": "m0",
      "eac3_drc_line_mode_profile": "p0",
      "eac3_drc_rf_mode_profile": "p0",
      "eac3_dialog_normalization": 0,
      "eac3_room_type": "m0",
      "eac3_mixing_level": 0,
      "eac3_copyright_protected": true,
      "eac3_original_bitstream": true
    }
  ],
  "page": 0,
  "per_page": 0,
  "total": 0
}

Responses

Status Description Schema
200 OK
Successfully fetched a collection of Profiles
PaginatedProfilesCollection
404 Not Found
Factory not found
None

create profile

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.post 'https://api.cloud.telestream.net/flip/3.1/profiles.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.post('https://api.cloud.telestream.net/flip/3.1/profiles.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/profiles.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://api.cloud.telestream.net/flip/3.1/profiles.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /profiles.json

Creates a Profile

Body parameter

{
  "preset_name": "aac",
  "advanced_fps_conversion": "telestream",
  "aspect_mode": "preserve",
  "aspect_ratio": "16:9",
  "audio_bitrate": 128,
  "audio_channels": 0,
  "audio_channels_layout": 1,
  "audio_channels_per_track": "string",
  "audio_codec": "string",
  "audio_format": "string",
  "audio_pid": "string",
  "audio_profile": "string",
  "audio_sample_rate": 44100,
  "audio_streams": 0,
  "avcintra_class": 50,
  "buffer_size": "string",
  "buffer_size_in_packets": "string",
  "clip_length": "00:20:00",
  "clip_offset": "00:00:10",
  "closed_captions": "add",
  "dash_profile": "string",
  "deinterlace": "keep_fps",
  "deinterlace_frames": "string",
  "dnxhd_type": "string",
  "encryption": true,
  "extname": ".mp4",
  "fps": 29.97,
  "frame_offsets": "2s, 10s, 250f, 400f",
  "frame_interval": "1000f",
  "frame_count": 0,
  "h264_level": 1,
  "h264_profile": "baseline",
  "h264_tune": "film",
  "height": 720,
  "imx_type": "string",
  "interlace": "string",
  "keyframe_interval": 0,
  "keyframe_rate": 0,
  "max_rate": 0,
  "merge_audio_streams": "string",
  "name": "string",
  "outputs_path_format": "string",
  "pmt_pid": "string",
  "prores_format": "string",
  "segment_time": "string",
  "size": "string",
  "tar": true,
  "transport_rate": "string",
  "ts_pids": "string",
  "upscale": true,
  "variants": "string",
  "video_bitrate": 3000,
  "video_pid": "string",
  "watermark_bottom": "string",
  "watermark_height": "string",
  "watermark_left": "string",
  "watermark_right": "string",
  "watermark_top": "string",
  "watermark_url": "string",
  "watermark_width": "string",
  "width": 1080,
  "x264_options": "string",
  "x265_options": "string",
  "xdcam_format": "string",
  "mute_audio_tracks": true,
  "byte_range_requests": "string",
  "lang": "string",
  "use_editlist": "string",
  "audio_map": "string",
  "audio_stream_id": "string",
  "bumpers": "string",
  "codec_preset": "ultrafast",
  "color_metadata": "string",
  "crop_input_bottom": "string",
  "crop_input_height": "string",
  "crop_input_left": "string",
  "crop_input_right": "string",
  "crop_input_top": "string",
  "crop_input_width": "string",
  "dynamic_recipe": "string",
  "playlist_type": "string",
  "preset_version": "string",
  "segment_delimiter": "string",
  "sws_flags": "string",
  "telestream_block_size": "16x16",
  "telestream_blur_scaler": "string",
  "telestream_cost_scaler": "string",
  "telestream_search_length_scaler": "string",
  "telestream_subpel_mode": "string",
  "trailers": "string",
  "vantage_group_id": "string",
  "watermark_bumpers": "string",
  "watermark_trailers": "string",
  "workorder_criteria": {
    "additionalProperties": null
  },
  "tachyon_allow_remove_pulldown": true,
  "tachyon_enable_post_pulldown_filter": true,
  "tachyon_media_hint_is_cartoon": true,
  "tachyon_media_hint_has_chroma_noise": true,
  "tachyon_more_sensitive_remove_pulldown": true,
  "tachyon_allow_add_standard_pd": true,
  "tachyon_allow_add_2_2pd": true,
  "tachyon_allow_add_4_4pd": true,
  "tachyon_allow_add_4_6pd": true,
  "tachyon_allow_add_euro_pd": true,
  "tachyon_allow_add_adaptive_pd": true,
  "tachyon_motion_amount": "xlow",
  "tachyon_fallback_size": "small",
  "tachyon_mblock_size": "mb16",
  "tachyon_cut_detection_sensitivity": 0,
  "eac3_evolution_enable": true,
  "eac3_bitstream_mode": "m0",
  "eac3_ninety_degree_phase_shift": true,
  "eac3_three_decibel_attenuation": true,
  "eac3_enable_lfe_low_pass_filter": true,
  "eac3_analog_to_digital_converter_type": "string",
  "eac3_stereo_downmix_preference": "m0",
  "eac3_lt_rt_center_mix_level": "c0",
  "eac3_lt_rt_surround_mix_level": "c3",
  "eac3_lo_ro_center_mix_level": "c0",
  "eac3_lo_ro_surround_mix_level": "c3",
  "eac3_surround_ex_mode": "m0",
  "eac3_drc_line_mode_profile": "p0",
  "eac3_drc_rf_mode_profile": "p0",
  "eac3_dialog_normalization": 0,
  "eac3_room_type": "m0",
  "eac3_mixing_level": 0,
  "eac3_copyright_protected": true,
  "eac3_original_bitstream": true,
  "title": "string",
  "time_code": true
}

Parameters

factory_id
string
In query
required
Id of a Factory.
exclude_advanced_services
boolean
In query
optional
none
expand
boolean
In query
optional
If expand option is set Profile objects will contain all command parameters, even if their value is default. By default it is not set.
body
In body
required
none

Example responses

200 Response

{
  "advanced_fps_conversion": "telestream",
  "aspect_mode": "preserve",
  "aspect_ratio": "16:9",
  "audio_bitrate": 128,
  "audio_channels": 0,
  "audio_channels_layout": 1,
  "audio_channels_per_track": 0,
  "audio_codec": "string",
  "audio_format": "pcm_s24le",
  "audio_map": "string",
  "audio_pid": "string",
  "audio_profile": "string",
  "audio_sample_rate": 44100,
  "audio_stream_id": 0,
  "audio_streams": 0,
  "avcintra_class": 50,
  "buffer_size": "string",
  "buffer_size_in_packets": "string",
  "bumpers": "string",
  "byte_range_requests": true,
  "clip_end": "00:32:16",
  "clip_length": "00:20:00",
  "clip_offset": "00:00:10",
  "closed_captions": "add",
  "color_metadata": true,
  "created_at": "string",
  "crop_input_bottom": "string",
  "crop_input_height": "string",
  "crop_input_left": "string",
  "crop_input_right": "string",
  "crop_input_top": "string",
  "crop_input_width": "string",
  "dash_profile": "string",
  "deinterlace": "keep_fps",
  "deinterlace_frames": "string",
  "description": "string",
  "dnxhd_type": 36,
  "encryption": true,
  "extname": ".mp4",
  "fps": 29.97,
  "frame_count": "string",
  "frame_interval": "1000f",
  "frame_offsets": "2s, 10s, 250f, 400f",
  "h264_level": 1,
  "h264_profile": "baseline",
  "h264_tune": "film",
  "height": 720,
  "id": "string",
  "imx_type": "string",
  "inputs": "string",
  "interlace": "string",
  "keyframe_interval": "string",
  "keyframe_rate": "string",
  "lang": "string",
  "max_rate": "string",
  "merge_audio_streams": "string",
  "mute_audio_tracks": true,
  "name": "string",
  "outputs": "string",
  "outputs_path_format": "string",
  "playlist_type": "iframe",
  "pmt_pid": "string",
  "preset_name": "string",
  "prores_format": "string",
  "segment_time": 0,
  "stack": "string",
  "telestream_block_size": "16x16",
  "telestream_blur_scaler": 0,
  "telestream_cost_scaler": 0,
  "telestream_search_length_scaler": 0,
  "telestream_subpel_mode": true,
  "time_code": "string",
  "title": "string",
  "trailers": "string",
  "transport_rate": "string",
  "ts_pids": "string",
  "updated_at": "string",
  "upscale": true,
  "use_editlist": true,
  "variants": "string",
  "video_bitrate": 3000,
  "video_pid": "string",
  "watermark_bottom": "string",
  "watermark_bumpers": true,
  "watermark_height": "string",
  "watermark_left": "string",
  "watermark_right": "string",
  "watermark_top": "string",
  "watermark_trailers": true,
  "watermark_url": "string",
  "watermark_width": "string",
  "width": 1080,
  "x264_options": "string",
  "x265_options": "string",
  "xdcam_format": "string",
  "tachyon_allow_remove_pulldown": true,
  "tachyon_enable_post_pulldown_filter": true,
  "tachyon_media_hint_is_cartoon": true,
  "tachyon_media_hint_has_chroma_noise": true,
  "tachyon_more_sensitive_remove_pulldown": true,
  "tachyon_allow_add_standard_pd": true,
  "tachyon_allow_add_2_2pd": true,
  "tachyon_allow_add_4_4pd": true,
  "tachyon_allow_add_4_6pd": true,
  "tachyon_allow_add_euro_pd": true,
  "tachyon_allow_add_adaptive_pd": true,
  "tachyon_motion_amount": "xlow",
  "tachyon_fallback_size": "small",
  "tachyon_mblock_size": "mb16",
  "tachyon_cut_detection_sensitivity": 0,
  "eac3_evolution_enable": true,
  "eac3_bitstream_mode": "m0",
  "eac3_ninety_degree_phase_shift": true,
  "eac3_three_decibel_attenuation": true,
  "eac3_enable_lfe_low_pass_filter": true,
  "eac3_analog_to_digital_converter_type": "standard",
  "eac3_stereo_downmix_preference": "m0",
  "eac3_lt_rt_center_mix_level": "c0",
  "eac3_lt_rt_surround_mix_level": "c3",
  "eac3_lo_ro_center_mix_level": "c0",
  "eac3_lo_ro_surround_mix_level": "c3",
  "eac3_surround_ex_mode": "m0",
  "eac3_drc_line_mode_profile": "p0",
  "eac3_drc_rf_mode_profile": "p0",
  "eac3_dialog_normalization": 0,
  "eac3_room_type": "m0",
  "eac3_mixing_level": 0,
  "eac3_copyright_protected": true,
  "eac3_original_bitstream": true
}

400 Response

{
  "error": "string",
  "message": "string"
}

403 Response

{
  "error": "string",
  "message": "string"
}

404 Response

{
  "error": "string",
  "message": "string"
}

Responses

Status Description Schema
200 OK
Successfully created a Profile
Profile
400 Bad Request
Posted incorrect parameters
Error
403 Forbidden
Not authorized to create a Profile
Error
404 Not Found
Factory not found
Error

update profile

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.put 'https://api.cloud.telestream.net/flip/3.1/profiles/{id}.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.put('https://api.cloud.telestream.net/flip/3.1/profiles/{id}.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/profiles/{id}.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "https://api.cloud.telestream.net/flip/3.1/profiles/{id}.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /profiles/{id}.json

Updates a given Profile

Body parameter

{
  "preset_name": "aac",
  "advanced_fps_conversion": "telestream",
  "aspect_mode": "preserve",
  "aspect_ratio": "16:9",
  "audio_bitrate": 128,
  "audio_channels": 0,
  "audio_channels_layout": 1,
  "audio_channels_per_track": "string",
  "audio_codec": "string",
  "audio_format": "string",
  "audio_pid": "string",
  "audio_profile": "string",
  "audio_sample_rate": 44100,
  "audio_streams": 0,
  "avcintra_class": 50,
  "buffer_size": "string",
  "buffer_size_in_packets": "string",
  "clip_length": "00:20:00",
  "clip_offset": "00:00:10",
  "closed_captions": "add",
  "dash_profile": "string",
  "deinterlace": "keep_fps",
  "deinterlace_frames": "string",
  "dnxhd_type": "string",
  "encryption": true,
  "extname": ".mp4",
  "fps": 29.97,
  "frame_offsets": "2s, 10s, 250f, 400f",
  "frame_interval": "1000f",
  "frame_count": 0,
  "h264_level": 1,
  "h264_profile": "baseline",
  "h264_tune": "film",
  "height": 720,
  "imx_type": "string",
  "interlace": "string",
  "keyframe_interval": 0,
  "keyframe_rate": 0,
  "max_rate": 0,
  "merge_audio_streams": "string",
  "name": "string",
  "outputs_path_format": "string",
  "pmt_pid": "string",
  "prores_format": "string",
  "segment_time": "string",
  "size": "string",
  "tar": true,
  "transport_rate": "string",
  "ts_pids": "string",
  "upscale": true,
  "variants": "string",
  "video_bitrate": 3000,
  "video_pid": "string",
  "watermark_bottom": "string",
  "watermark_height": "string",
  "watermark_left": "string",
  "watermark_right": "string",
  "watermark_top": "string",
  "watermark_url": "string",
  "watermark_width": "string",
  "width": 1080,
  "x264_options": "string",
  "x265_options": "string",
  "xdcam_format": "string",
  "mute_audio_tracks": true,
  "byte_range_requests": "string",
  "lang": "string",
  "use_editlist": "string",
  "audio_map": "string",
  "audio_stream_id": "string",
  "bumpers": "string",
  "codec_preset": "ultrafast",
  "color_metadata": "string",
  "crop_input_bottom": "string",
  "crop_input_height": "string",
  "crop_input_left": "string",
  "crop_input_right": "string",
  "crop_input_top": "string",
  "crop_input_width": "string",
  "dynamic_recipe": "string",
  "playlist_type": "string",
  "preset_version": "string",
  "segment_delimiter": "string",
  "sws_flags": "string",
  "telestream_block_size": "16x16",
  "telestream_blur_scaler": "string",
  "telestream_cost_scaler": "string",
  "telestream_search_length_scaler": "string",
  "telestream_subpel_mode": "string",
  "trailers": "string",
  "vantage_group_id": "string",
  "watermark_bumpers": "string",
  "watermark_trailers": "string",
  "workorder_criteria": {
    "additionalProperties": null
  },
  "tachyon_allow_remove_pulldown": true,
  "tachyon_enable_post_pulldown_filter": true,
  "tachyon_media_hint_is_cartoon": true,
  "tachyon_media_hint_has_chroma_noise": true,
  "tachyon_more_sensitive_remove_pulldown": true,
  "tachyon_allow_add_standard_pd": true,
  "tachyon_allow_add_2_2pd": true,
  "tachyon_allow_add_4_4pd": true,
  "tachyon_allow_add_4_6pd": true,
  "tachyon_allow_add_euro_pd": true,
  "tachyon_allow_add_adaptive_pd": true,
  "tachyon_motion_amount": "xlow",
  "tachyon_fallback_size": "small",
  "tachyon_mblock_size": "mb16",
  "tachyon_cut_detection_sensitivity": 0,
  "eac3_evolution_enable": true,
  "eac3_bitstream_mode": "m0",
  "eac3_ninety_degree_phase_shift": true,
  "eac3_three_decibel_attenuation": true,
  "eac3_enable_lfe_low_pass_filter": true,
  "eac3_analog_to_digital_converter_type": "string",
  "eac3_stereo_downmix_preference": "m0",
  "eac3_lt_rt_center_mix_level": "c0",
  "eac3_lt_rt_surround_mix_level": "c3",
  "eac3_lo_ro_center_mix_level": "c0",
  "eac3_lo_ro_surround_mix_level": "c3",
  "eac3_surround_ex_mode": "m0",
  "eac3_drc_line_mode_profile": "p0",
  "eac3_drc_rf_mode_profile": "p0",
  "eac3_dialog_normalization": 0,
  "eac3_room_type": "m0",
  "eac3_mixing_level": 0,
  "eac3_copyright_protected": true,
  "eac3_original_bitstream": true,
  "title": "string",
  "time_code": true
}

Parameters

id
string
In path
required
none
factory_id
string
In query
required
Id of a Factory.
exclude_advanced_services
boolean
In query
optional
none
expand
boolean
In query
optional
If expand option is set Profile objects will contain all command parameters, even if their value is default. By default this is not set.
body
In body
required
none

Example responses

200 Response

{
  "advanced_fps_conversion": "telestream",
  "aspect_mode": "preserve",
  "aspect_ratio": "16:9",
  "audio_bitrate": 128,
  "audio_channels": 0,
  "audio_channels_layout": 1,
  "audio_channels_per_track": 0,
  "audio_codec": "string",
  "audio_format": "pcm_s24le",
  "audio_map": "string",
  "audio_pid": "string",
  "audio_profile": "string",
  "audio_sample_rate": 44100,
  "audio_stream_id": 0,
  "audio_streams": 0,
  "avcintra_class": 50,
  "buffer_size": "string",
  "buffer_size_in_packets": "string",
  "bumpers": "string",
  "byte_range_requests": true,
  "clip_end": "00:32:16",
  "clip_length": "00:20:00",
  "clip_offset": "00:00:10",
  "closed_captions": "add",
  "color_metadata": true,
  "created_at": "string",
  "crop_input_bottom": "string",
  "crop_input_height": "string",
  "crop_input_left": "string",
  "crop_input_right": "string",
  "crop_input_top": "string",
  "crop_input_width": "string",
  "dash_profile": "string",
  "deinterlace": "keep_fps",
  "deinterlace_frames": "string",
  "description": "string",
  "dnxhd_type": 36,
  "encryption": true,
  "extname": ".mp4",
  "fps": 29.97,
  "frame_count": "string",
  "frame_interval": "1000f",
  "frame_offsets": "2s, 10s, 250f, 400f",
  "h264_level": 1,
  "h264_profile": "baseline",
  "h264_tune": "film",
  "height": 720,
  "id": "string",
  "imx_type": "string",
  "inputs": "string",
  "interlace": "string",
  "keyframe_interval": "string",
  "keyframe_rate": "string",
  "lang": "string",
  "max_rate": "string",
  "merge_audio_streams": "string",
  "mute_audio_tracks": true,
  "name": "string",
  "outputs": "string",
  "outputs_path_format": "string",
  "playlist_type": "iframe",
  "pmt_pid": "string",
  "preset_name": "string",
  "prores_format": "string",
  "segment_time": 0,
  "stack": "string",
  "telestream_block_size": "16x16",
  "telestream_blur_scaler": 0,
  "telestream_cost_scaler": 0,
  "telestream_search_length_scaler": 0,
  "telestream_subpel_mode": true,
  "time_code": "string",
  "title": "string",
  "trailers": "string",
  "transport_rate": "string",
  "ts_pids": "string",
  "updated_at": "string",
  "upscale": true,
  "use_editlist": true,
  "variants": "string",
  "video_bitrate": 3000,
  "video_pid": "string",
  "watermark_bottom": "string",
  "watermark_bumpers": true,
  "watermark_height": "string",
  "watermark_left": "string",
  "watermark_right": "string",
  "watermark_top": "string",
  "watermark_trailers": true,
  "watermark_url": "string",
  "watermark_width": "string",
  "width": 1080,
  "x264_options": "string",
  "x265_options": "string",
  "xdcam_format": "string",
  "tachyon_allow_remove_pulldown": true,
  "tachyon_enable_post_pulldown_filter": true,
  "tachyon_media_hint_is_cartoon": true,
  "tachyon_media_hint_has_chroma_noise": true,
  "tachyon_more_sensitive_remove_pulldown": true,
  "tachyon_allow_add_standard_pd": true,
  "tachyon_allow_add_2_2pd": true,
  "tachyon_allow_add_4_4pd": true,
  "tachyon_allow_add_4_6pd": true,
  "tachyon_allow_add_euro_pd": true,
  "tachyon_allow_add_adaptive_pd": true,
  "tachyon_motion_amount": "xlow",
  "tachyon_fallback_size": "small",
  "tachyon_mblock_size": "mb16",
  "tachyon_cut_detection_sensitivity": 0,
  "eac3_evolution_enable": true,
  "eac3_bitstream_mode": "m0",
  "eac3_ninety_degree_phase_shift": true,
  "eac3_three_decibel_attenuation": true,
  "eac3_enable_lfe_low_pass_filter": true,
  "eac3_analog_to_digital_converter_type": "standard",
  "eac3_stereo_downmix_preference": "m0",
  "eac3_lt_rt_center_mix_level": "c0",
  "eac3_lt_rt_surround_mix_level": "c3",
  "eac3_lo_ro_center_mix_level": "c0",
  "eac3_lo_ro_surround_mix_level": "c3",
  "eac3_surround_ex_mode": "m0",
  "eac3_drc_line_mode_profile": "p0",
  "eac3_drc_rf_mode_profile": "p0",
  "eac3_dialog_normalization": 0,
  "eac3_room_type": "m0",
  "eac3_mixing_level": 0,
  "eac3_copyright_protected": true,
  "eac3_original_bitstream": true
}

400 Response

{
  "error": "string",
  "message": "string"
}

403 Response

{
  "error": "string",
  "message": "string"
}

404 Response

{
  "error": "string",
  "message": "string"
}

Responses

Status Description Schema
200 OK
Successfully updated the Profile
Profile
400 Bad Request
Posted incorrect parameters
Error
403 Forbidden
Not authorized to update the Profile
Error
404 Not Found
Profile or Factory not found
Error

delete profile

Code samples

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.delete 'https://api.cloud.telestream.net/flip/3.1/profiles/{id}.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.delete('https://api.cloud.telestream.net/flip/3.1/profiles/{id}.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/profiles/{id}.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://api.cloud.telestream.net/flip/3.1/profiles/{id}.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /profiles/{id}.json

Deletes a given Profile

Parameters

id
string
In path
required
Id of a Profile
factory_id
string
In query
required
Id of a Factory.

Example responses

200 Response

{
  "deleted": true
}

403 Response

{
  "error": "string",
  "message": "string"
}

404 Response

{
  "error": "string",
  "message": "string"
}

Responses

Status Description Schema
200 OK
the Profile object has been successfully deleted
DeletedResponse
403 Forbidden
Unauthorized to delete the Profile
Error
404 Not Found
Profile or Factory not found
Error

copy profile

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.post 'https://api.cloud.telestream.net/flip/3.1/profiles/{id}/copy.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.post('https://api.cloud.telestream.net/flip/3.1/profiles/{id}/copy.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/profiles/{id}/copy.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://api.cloud.telestream.net/flip/3.1/profiles/{id}/copy.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /profiles/{id}/copy.json

Copies a given Profile

Body parameter

{
  "dest_factory_id": "string",
  "profile_name": "string"
}

Parameters

id
string
In path
required
Id of a Profile.
factory_id
string
In query
required
Id of a Factory.
expand
boolean
In query
optional
If expand option is set Profile objects will contain all command parameters, even if their value is default. By default this is not set.
body
object
In body
required
none
» dest_factory_id
string
In body
required
an id of a target Factory that will own a copy of the Profile
» profile_name
string
In body
required
a name for a copy of the Profile

Example responses

200 Response

{
  "advanced_fps_conversion": "telestream",
  "aspect_mode": "preserve",
  "aspect_ratio": "16:9",
  "audio_bitrate": 128,
  "audio_channels": 0,
  "audio_channels_layout": 1,
  "audio_channels_per_track": 0,
  "audio_codec": "string",
  "audio_format": "pcm_s24le",
  "audio_map": "string",
  "audio_pid": "string",
  "audio_profile": "string",
  "audio_sample_rate": 44100,
  "audio_stream_id": 0,
  "audio_streams": 0,
  "avcintra_class": 50,
  "buffer_size": "string",
  "buffer_size_in_packets": "string",
  "bumpers": "string",
  "byte_range_requests": true,
  "clip_end": "00:32:16",
  "clip_length": "00:20:00",
  "clip_offset": "00:00:10",
  "closed_captions": "add",
  "color_metadata": true,
  "created_at": "string",
  "crop_input_bottom": "string",
  "crop_input_height": "string",
  "crop_input_left": "string",
  "crop_input_right": "string",
  "crop_input_top": "string",
  "crop_input_width": "string",
  "dash_profile": "string",
  "deinterlace": "keep_fps",
  "deinterlace_frames": "string",
  "description": "string",
  "dnxhd_type": 36,
  "encryption": true,
  "extname": ".mp4",
  "fps": 29.97,
  "frame_count": "string",
  "frame_interval": "1000f",
  "frame_offsets": "2s, 10s, 250f, 400f",
  "h264_level": 1,
  "h264_profile": "baseline",
  "h264_tune": "film",
  "height": 720,
  "id": "string",
  "imx_type": "string",
  "inputs": "string",
  "interlace": "string",
  "keyframe_interval": "string",
  "keyframe_rate": "string",
  "lang": "string",
  "max_rate": "string",
  "merge_audio_streams": "string",
  "mute_audio_tracks": true,
  "name": "string",
  "outputs": "string",
  "outputs_path_format": "string",
  "playlist_type": "iframe",
  "pmt_pid": "string",
  "preset_name": "string",
  "prores_format": "string",
  "segment_time": 0,
  "stack": "string",
  "telestream_block_size": "16x16",
  "telestream_blur_scaler": 0,
  "telestream_cost_scaler": 0,
  "telestream_search_length_scaler": 0,
  "telestream_subpel_mode": true,
  "time_code": "string",
  "title": "string",
  "trailers": "string",
  "transport_rate": "string",
  "ts_pids": "string",
  "updated_at": "string",
  "upscale": true,
  "use_editlist": true,
  "variants": "string",
  "video_bitrate": 3000,
  "video_pid": "string",
  "watermark_bottom": "string",
  "watermark_bumpers": true,
  "watermark_height": "string",
  "watermark_left": "string",
  "watermark_right": "string",
  "watermark_top": "string",
  "watermark_trailers": true,
  "watermark_url": "string",
  "watermark_width": "string",
  "width": 1080,
  "x264_options": "string",
  "x265_options": "string",
  "xdcam_format": "string",
  "tachyon_allow_remove_pulldown": true,
  "tachyon_enable_post_pulldown_filter": true,
  "tachyon_media_hint_is_cartoon": true,
  "tachyon_media_hint_has_chroma_noise": true,
  "tachyon_more_sensitive_remove_pulldown": true,
  "tachyon_allow_add_standard_pd": true,
  "tachyon_allow_add_2_2pd": true,
  "tachyon_allow_add_4_4pd": true,
  "tachyon_allow_add_4_6pd": true,
  "tachyon_allow_add_euro_pd": true,
  "tachyon_allow_add_adaptive_pd": true,
  "tachyon_motion_amount": "xlow",
  "tachyon_fallback_size": "small",
  "tachyon_mblock_size": "mb16",
  "tachyon_cut_detection_sensitivity": 0,
  "eac3_evolution_enable": true,
  "eac3_bitstream_mode": "m0",
  "eac3_ninety_degree_phase_shift": true,
  "eac3_three_decibel_attenuation": true,
  "eac3_enable_lfe_low_pass_filter": true,
  "eac3_analog_to_digital_converter_type": "standard",
  "eac3_stereo_downmix_preference": "m0",
  "eac3_lt_rt_center_mix_level": "c0",
  "eac3_lt_rt_surround_mix_level": "c3",
  "eac3_lo_ro_center_mix_level": "c0",
  "eac3_lo_ro_surround_mix_level": "c3",
  "eac3_surround_ex_mode": "m0",
  "eac3_drc_line_mode_profile": "p0",
  "eac3_drc_rf_mode_profile": "p0",
  "eac3_dialog_normalization": 0,
  "eac3_room_type": "m0",
  "eac3_mixing_level": 0,
  "eac3_copyright_protected": true,
  "eac3_original_bitstream": true
}

403 Response

{
  "error": "string",
  "message": "string"
}

404 Response

{
  "error": "string",
  "message": "string"
}

Responses

Status Description Schema
200 OK
Successfully copied the Profile
Profile
403 Forbidden
Unauthorized to copy the Profile
Error
404 Not Found
Profile, the old Factory, or the new Factory not found
Error

profile

Code samples

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/profiles/{id_or_name}.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.get('https://api.cloud.telestream.net/flip/3.1/profiles/{id_or_name}.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/profiles/{id_or_name}.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/profiles/{id_or_name}.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /profiles/{id_or_name}.json

Returns a Profile object.

Parameters

id_or_name
string
In path
required
A name or an id of a Profile.
factory_id
string
In query
required
Id of a Factory.
expand
boolean
In query
optional
If expand option is set Profile objects will contain all command parameters, even if their value is default. By default this is not set.

Example responses

200 Response

{
  "advanced_fps_conversion": "telestream",
  "aspect_mode": "preserve",
  "aspect_ratio": "16:9",
  "audio_bitrate": 128,
  "audio_channels": 0,
  "audio_channels_layout": 1,
  "audio_channels_per_track": 0,
  "audio_codec": "string",
  "audio_format": "pcm_s24le",
  "audio_map": "string",
  "audio_pid": "string",
  "audio_profile": "string",
  "audio_sample_rate": 44100,
  "audio_stream_id": 0,
  "audio_streams": 0,
  "avcintra_class": 50,
  "buffer_size": "string",
  "buffer_size_in_packets": "string",
  "bumpers": "string",
  "byte_range_requests": true,
  "clip_end": "00:32:16",
  "clip_length": "00:20:00",
  "clip_offset": "00:00:10",
  "closed_captions": "add",
  "color_metadata": true,
  "created_at": "string",
  "crop_input_bottom": "string",
  "crop_input_height": "string",
  "crop_input_left": "string",
  "crop_input_right": "string",
  "crop_input_top": "string",
  "crop_input_width": "string",
  "dash_profile": "string",
  "deinterlace": "keep_fps",
  "deinterlace_frames": "string",
  "description": "string",
  "dnxhd_type": 36,
  "encryption": true,
  "extname": ".mp4",
  "fps": 29.97,
  "frame_count": "string",
  "frame_interval": "1000f",
  "frame_offsets": "2s, 10s, 250f, 400f",
  "h264_level": 1,
  "h264_profile": "baseline",
  "h264_tune": "film",
  "height": 720,
  "id": "string",
  "imx_type": "string",
  "inputs": "string",
  "interlace": "string",
  "keyframe_interval": "string",
  "keyframe_rate": "string",
  "lang": "string",
  "max_rate": "string",
  "merge_audio_streams": "string",
  "mute_audio_tracks": true,
  "name": "string",
  "outputs": "string",
  "outputs_path_format": "string",
  "playlist_type": "iframe",
  "pmt_pid": "string",
  "preset_name": "string",
  "prores_format": "string",
  "segment_time": 0,
  "stack": "string",
  "telestream_block_size": "16x16",
  "telestream_blur_scaler": 0,
  "telestream_cost_scaler": 0,
  "telestream_search_length_scaler": 0,
  "telestream_subpel_mode": true,
  "time_code": "string",
  "title": "string",
  "trailers": "string",
  "transport_rate": "string",
  "ts_pids": "string",
  "updated_at": "string",
  "upscale": true,
  "use_editlist": true,
  "variants": "string",
  "video_bitrate": 3000,
  "video_pid": "string",
  "watermark_bottom": "string",
  "watermark_bumpers": true,
  "watermark_height": "string",
  "watermark_left": "string",
  "watermark_right": "string",
  "watermark_top": "string",
  "watermark_trailers": true,
  "watermark_url": "string",
  "watermark_width": "string",
  "width": 1080,
  "x264_options": "string",
  "x265_options": "string",
  "xdcam_format": "string",
  "tachyon_allow_remove_pulldown": true,
  "tachyon_enable_post_pulldown_filter": true,
  "tachyon_media_hint_is_cartoon": true,
  "tachyon_media_hint_has_chroma_noise": true,
  "tachyon_more_sensitive_remove_pulldown": true,
  "tachyon_allow_add_standard_pd": true,
  "tachyon_allow_add_2_2pd": true,
  "tachyon_allow_add_4_4pd": true,
  "tachyon_allow_add_4_6pd": true,
  "tachyon_allow_add_euro_pd": true,
  "tachyon_allow_add_adaptive_pd": true,
  "tachyon_motion_amount": "xlow",
  "tachyon_fallback_size": "small",
  "tachyon_mblock_size": "mb16",
  "tachyon_cut_detection_sensitivity": 0,
  "eac3_evolution_enable": true,
  "eac3_bitstream_mode": "m0",
  "eac3_ninety_degree_phase_shift": true,
  "eac3_three_decibel_attenuation": true,
  "eac3_enable_lfe_low_pass_filter": true,
  "eac3_analog_to_digital_converter_type": "standard",
  "eac3_stereo_downmix_preference": "m0",
  "eac3_lt_rt_center_mix_level": "c0",
  "eac3_lt_rt_surround_mix_level": "c3",
  "eac3_lo_ro_center_mix_level": "c0",
  "eac3_lo_ro_surround_mix_level": "c3",
  "eac3_surround_ex_mode": "m0",
  "eac3_drc_line_mode_profile": "p0",
  "eac3_drc_rf_mode_profile": "p0",
  "eac3_dialog_normalization": 0,
  "eac3_room_type": "m0",
  "eac3_mixing_level": 0,
  "eac3_copyright_protected": true,
  "eac3_original_bitstream": true
}

404 Response

{
  "error": "string",
  "message": "string"
}

Responses

Status Description Schema
200 OK
Successfully fetched the Profile.
Profile
404 Not Found
Profile or Factory not found.
Error

profile encodings

Code samples

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/profiles/{id_or_name}/encodings.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.get('https://api.cloud.telestream.net/flip/3.1/profiles/{id_or_name}/encodings.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/profiles/{id_or_name}/encodings.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/profiles/{id_or_name}/encodings.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /profiles/{id_or_name}/encodings.json

Returns a list of Encodings that belong to a Profile.

Parameters

id_or_name
string
In path
required
Id or name of a Profile.
factory_id
string
In query
required
Id of a Factory.

Example responses

200 Response

{
  "encodings": [
    {
      "id": "string",
      "audio_bitrate": 128,
      "audio_channels": 0,
      "audio_codec": "string",
      "audio_sample_rate": 44100,
      "created_at": "string",
      "duration": 0,
      "encoding_progress": 0,
      "encoding_time": 0,
      "error_class": "string",
      "error_message": "string",
      "external_id": "string",
      "extname": "string",
      "file_size": 0,
      "files": [
        "string"
      ],
      "fps": 0,
      "height": 0,
      "width": 0,
      "logfile_url": "string",
      "mime_type": "string",
      "parent_encoding_id": "string",
      "path": "string",
      "profile_id": "string",
      "profile_name": "string",
      "screenshots": [
        "string"
      ],
      "started_encoding_at": "string",
      "status": "string",
      "updated_at": "string",
      "video_bitrate": 0,
      "video_codec": "string",
      "video_id": "string"
    }
  ],
  "page": 0,
  "per_page": 0,
  "total": 0
}

404 Response

{
  "error": "string",
  "message": "string"
}

Responses

Status Description Schema
200 OK
Successfully fetched a collection of Encodings.
PaginatedEncodingsCollection
404 Not Found
Profile or Factory not found.
Error

Presets

Encoding profile presets

Telestream Cloud provides several encoding profile presets which make it easy to setup the correct output formats for your videos.

To manage your profiles

  1. Log into your Telestream Cloud Dashboard
  2. Select your Factory
  3. Click on the Profiles Tab
  4. Click Add profile and you’ll be able to select from one of the recommended presets.


Encoding profiles

Available presets

Below you’ll find details about the presets available:

Web

MP4 (H.265)

H.265 video with AAC audio for playback on HTML5 browsers, desktop players, Flash, Apple iPhone (3GS and above) and iPad. Currently it’s premium feature.

parameter standard quality
preset_name h265
audio bitrate 128kbps (by default)
resolution 640x480 (by default)

MP4 (H.264)

H.264 video with AAC audio for playback on HTML5 browsers, desktop players, Flash, iPhone (3GS and above) and iPad. Use H264 baseline to support most of phones like first Apple iPhone’s and Blackberry’s.

parameter standard quality
preset_name h264
audio bitrate 128kbps (by default)
resolution 640x480 (by default)

WebM (VP8)

VP8 video with Ogg Vorbis audio for playback in HTML5 compatible browsers.

paramater standard quality
preset_name webm.vp8
audio bitrate 128kbps (by default)
resolution 640x480 (by default)

OGG (Theora)

Theora video with Ogg Vorbis audio for playback in HTML5 compatible browsers.

parameter standard quality
preset_name ogg
audio bitrate 128kbps (by default)
resolution 640x480 (by default)

WebM (VP9)

VP9 video with Opus audio for playback in HTML5 compatible browsers.

paramater standard quality
preset_name webm.vp9
audio bitrate 192kbps (by default)
resolution 640x360 (by default)

Multiscreen

HTTP Live Streaming (iOS Adaptive Streaming)

## Sub streams
TelestreamCloud::Profile.create!(
  :name => "hls.iphone.400k",
  :preset_name => "hls.variant",
  :video_bitrate => 400,
  :segment_time => 5
)
TelestreamCloud::Profile.create!(
  :name => "hls.iphone.600k",
  :preset_name => "hls.variant",
  :video_bitrate => 600,
  :segment_time => 5
)
TelestreamCloud::Profile.create!(
  :name => "hls.ipad.1200k",
  :preset_name => "hls.variant",
  :video_bitrate => 1200,
  :segment_time => 5
)
TelestreamCloud::Profile.create!(
  :name => "hls.audio",
  :preset_name => "hls.variant.audio",
  :segment_time => 5
)

## iPhone and iPad Playlist
TelestreamCloud::Profile.create!(
  :name => "iphone",
  :preset_name => "hls.variant.playlist",
  :variants => "hls.iphone*,hls.audio",
  :extname => ".tar"
)
TelestreamCloud::Profile.create!(
  :name => "ipad",
  :preset_name => "hls.variant.playlist",
  :variants => "hls.iphone*,hls.ipad*,hls.audio",
  :extname => ".tar"
)

Special multi-bitrate segmented video for streaming to Apple devices.

Create a Master playlist profile that will list all sub-streams into one file.

parameter HLS playlist HLS variants
preset_name hls.variant.playlist hls.variant

Then create a profile for each sub-stream of your Master Playlist. Each profile sub-stream (EXT-X-STREAM-INF) contains RESOLUTION, BANDWIDTH tags to help the client to choose an appropriate stream.

iOS devices will stream the best variant depending on the quality of the network connection. See Apple’s recommendation for more details.

You can create different playlists (one for iPhone one for iPad). Only the profiles with their names matching the variant attribute will be added to the playlist.

optional parameters

parameter attributes
extname Setting extname to .tar for the playlist profile will create a .tar file that contain all variants that match HLS master playlist format instead of creating separate file for each variant.
segment_time Specify the segment duration in seconds. By default it is set to 10 seconds.

We strongly recommend sending the video object with full list of profiles at once.

There is another way to do so by adding encodings to video previously sent (by POST /encodings.json) - if you prefer this approach then you need to remember to send the playlist file first! If you mess up the order, you may receive NoFilesToUpload : Files list for upload is empty error.

(new) AES-128 encryption

It is possible to ecrypt video using AES-128. More info in our guides.

MPEG DASH

MPEG standard HTTP based adaptive bitrate streaming solution (supported by YouTube, Netflix).

parameter MPEG DASH playlist MPEG DASH variants
preset_name dash.variant.playlist dash.variant

optional parameters

parameter attributes
extname Setting extname to .tar for the playlist profile will create a .tar file that contain all variants that match MPEG-DASH master playlist format instead of creating separate file for each variant.
segment_time Specify the segment duration in seconds. By default it is set to 10 seconds.

We strongly recommend sending the video object with full list of profiles at once.

There is another way to do so by adding encodings to video previously sent (by POST /encodings.json) - if you prefer this approach then you need to remember to send the playlist file first! If you mess up the order, you may receive NoFilesToUpload : Files list for upload is empty error.

(new) Common Encryption (CENC)

CENC is now available for DASH. More info here.

Professional

MPEG Program Stream (MPEG-2)

Creates an MPEG Program Stream (PS) file containing MPEG-2 video and MPEG Layer 2 audio.

paramater MPEG PS
preset_name mpegps

MPEG Transport Stream (MPEG-2)

Creates an MPEG Transport Stream (TS) file containing MPEG-2 video and MPEG Layer 2 audio.

paramater MPEGTS (MPEG-2)
preset_name mpegts.mpeg2

MPEG Transport Stream (H264)

Creates an MPEG Transport Stream (TS) file containing H.264 video and AAC audio.

paramater MPEG TS (H264)
preset_name mpegts.h264

XDCAM

Creates an MXF file containing MPEG-2 video and PCM audio. A common format used for broadcast program distribution.

paramater XDCAM
preset_name xdcam

Apple ProRes

Creates a QuickTime movie containing Apple ProRes 422 video and PCM audio. A common format used for post-production and delivery to the iTunes store.

paramater Apple Prores
preset_name prores422

AVC-Intra

Creates an MXF file containing AVC-Intra 50 or 100 video and PCM audio. It’s 10-bit intra-frame compression format used for post-production and archiving while preserving maximum quality.

paramater AVC-Intra
preset_name avc.intra

IMX

Creates an MXF file containing MPEG-2 IMX 30/40/50 video and PCM audio. Sony developed format used for broadcast program distribution that uses intra-frame compression for better editing capabilities.

paramater IMX
preset_name imx

Extras

MP3

MP3 audio preset.

parameter MP3
preset_name mp3
audio bitrate 192kbps (by default)

M4A (AAC)

MP4 audio preset.

parameter M4A (AAC)
preset_name aac
audio bitrate 192kbps (by default)

OGA (Vorbis)

Ogg Vorbis audio preset.

parameter OGA (Vorbis)
preset_name vorbis
audio bitrate 192kbps (by default)

Thumbnails

Special preset for creating thumbnails from video.

parameter Thumbnail
preset_name thumbnail

Ruby example

TelestreamCloud::Profile.create!(
  :preset_name => "h264", # A valid preset name, as per the tables above
  :name => "my-h264", # Unique name for this profile
  :h264_crf => 23,
  :h264_profile => "baseline",
  :h264_level => "3.0",
  :width => "480",
  :height => "320"
)

Add an H264 profile

Telestream Cloud gives you complete control of presets using the API and the available libraries. For this, simply pass the preset_name attribute instead of the command attribute.

Ruby example

TelestreamCloud::Profile.create!(
  :name => "h264",
  :preset_name => "h264",
  :width => 480,
  :height => 320,
  :watermark_url => "https://cloud.telestream.net/images/cloud-logo.png",
  :watermark_bottom => 5,
  :watermark_right => 5
)

Add Watermarking

You may want to add watermarking to your encodings. Use the api to set the url and the position of a remote image to use as a watermark.

Ruby example

TelestreamCloud::Profile.create!(
  :preset_name => "h264",
  ....
  :frame_count => 5
)

Create Thumbnails

You have two ways of creating thumbnails.

Screenshots will be generated and uploaded to the S3 bucket with the name using the following convention: $path$_$screenshot_number$.jpg e.g. (my-path/2f8760b7e0d4c7dbe609b5872be9bc3b_4.jpg).

Ruby example

TelestreamCloud::Profile.create!(
  :preset_name => "thumbnail",
  ....
  :extname => '.jpg', # or .png
  :frame_interval => "300f",
  :width => 90,
  :height => 60,
)

The resulting encoding will have all the thumbnails listed inside the files attribute

Ruby example

TelestreamCloud::Profile.create!(
  # h264 profile
  :preset_name => "h264",

  # sets your profile name to h264
  :name => "h264",

  # 2 pass encoding
  :two_pass => true,

  # 30 fps
  :fps => 30,

  # mp4 format and .mp4 extname
  :extname => ".mp4"

  # 48k sample rate
  :audio_sample_rate => 48000,

  # Resolution 1080x720
  :height => 720,
  :width => 1080,

  # set the s3 destination
  :outputs_path_format => "my/path/:id",

  # don't upscale the video if the input is smaller than your profile resolution
  :upscale => false,

  # starts the clip after 10 seconds
  :clip_offset => "00:00:10",

  # Cut the clip after 20 minutes
  :clip_length => "00:20:00",

  # Keep aspect ratio
  :aspect_mode => 'letterbox',

  # Bitrates
  :video_bitrate => 2200,
  :audio_bitrate => 128,
)

Complete settings

You can set numerous of options to make your encoding just right.

FFmpeg Neckbeard

Telestream Cloud provides complete control over the commands used to convert video. You can log in to your Telestream Cloud Dashboard and choose from our presets, or you can use the API to access the bare metal.

Stacks

As ffmpeg API changes, we can’t always update ffmpeg without breaking your commands. That’s where presets become handy. To make sure your commands are backward compatible with the encoding API and ffmpeg’s API, we are using separate stacks of tools. The default stack is corepack-shifu. There is also corepack-2, corepack-3 and corepack-4.

If you use API to create your profiles and want to stay on the old stack, make sure you specify ‘stack’ => 'name_of_the_deprecated_stack_here’.

We highly recommend to switch to presets or to the newest stack (corepack-shifu). It improves encoding/decoding speed and formats/codecs support.

API

All of the fields below are required when creating an advanced profile.

parameters attributes
extname File extension, beginning with ’.’, of the output video.
command Video conversion command (in most cases an ffmpeg command).
name Which is a unique name inside your Factory to reference your profile.

Telestream Cloud provides full access to a suite of powerful video conversion tools. These tools can be used together in one profile to output a variety of formats.

To execute multiple commands in one profile, you must separate each with a \n (newline) or ; (semicolon).

Telestream Cloud provides a few api tokens you can use in your commands:

parameters attributes
$input_file$ input filename
$output_file$ output filename
$width$ width defined in your profile
$height$ height defined in your profile
$record_id$ encoding ID
$filters$ scale your video considering the aspect mode and resolution attributes of your profile.
$audio_sample_rate$ audio sample rate
$audio_channels$ audio channels (default is copy)
$audio_bitrate$ audio_bitrate
$video_quality$ video bitrate or h264 crf
$video_bitrate$ video_bitrate only
$max_audio_bitrate$ audio bitrate threshold
$max_video_bitrate$ video bitrate threshold
$fps$ frame rate (default is copy)
$clip$ subset of the video to be encoded

Examples

Ruby example

TelestreamCloud::Profile.create!(
  :stack => "corepack-3",
  :name => "h264.SD",
  :width => 480,
  :height => 320,
  :h264_crf => 23,
  :audio_bitrate => 128,
  :extname => ".mp4",
  :audio_sample_rate => 44100,
  :keyframe_interval => 250,
  :command => "ffmpeg -i $input_file$ -threads 0 -c:a libfaac -c:v libx264 -preset medium $video_quality$ $audio_bitrate$ $audio_sample_rate$ $keyframes$ $fps$ -y video_tmp_noqt.mp4\nqt-faststart video_tmp_noqt.mp4 $output_file$"
)

PHP example

<?php
$panda->post('/profiles.json', array(
    'stack' => "corepack-3",
    'name' => "h264.SD",
    'width' => 480,
    'height' => 320,
    'h264_crf' => 23,
    'audio_bitrate' => 128,
    'extname' => ".mp4",
    'audio_sample_rate' => 44100,
    'keyframe_interval' => 250,
    'command' => 'ffmpeg -i $input_file$ -threads 0 -c:a libfaac -c:v libx264 -preset medium $video_quality$ $audio_bitrate$ $audio_sample_rate$ $keyframes$ $fps$ -y video_tmp_noqt.mp4\nqt-faststart video_tmp_noqt.mp4 $output_file$'
));
?>

Let’s create a custom h.264 profile.

You may not find a preset for your exactly need but the following examples should help you to encode videos into some popular formats.

FLV
TelestreamCloud::Profile.create!(
  :stack => "corepack-3",
  :name => "flv",
  :width => 480,
  :height => 320,
  :video_bitrate => 500,
  :audio_bitrate => 128,
  :extname => ".flv",
  :command => "ffmpeg -i $input_file$ -threads 0 $audio_sample_rate$ $video_bitrate$ $audio_bitrate$ $fps$ $filters$ -y $output_file$"
)
AVI
TelestreamCloud::Profile.create!(
  :stack => "corepack-3",
  :name => "avi",
  :width => 480,
  :height => 320,
  :video_bitrate => 500,
  :audio_bitrate => 128,
  :extname => ".avi",
  :command => "ffmpeg -i $input_file$ -threads 0 -c:v msmpeg4 -c:a libmp3lame -tag:v MP43 $audio_sample_rate$ $audio_sample_rate$ $video_bitrate$ $audio_bitrate$ $fps$ $filters$ -y $output_file$"
)
WMV
TelestreamCloud::Profile.create!(
  :stack => "corepack-3",
  :name => "wmv",
  :width => 480,
  :height => 320,
  :video_bitrate => 500,
  :audio_bitrate => 128,
  :extname => ".wmv",
  :command => "ffmpeg -i $input_file$ -threads 0 -c:v wmv2 -c:a wmav2 $audio_sample_rate$ $video_bitrate$ $audio_bitrate$ $fps$ $filters$ -y $output_file$"
)
OGG - 2 pass
TelestreamCloud::Profile.create!(
    :stack => "corepack-3",
    :name => "ogg.2pass",
    :width => 480,
    :height => 320,
    :video_bitrate => 500,
    :audio_bitrate => 128,
    :extname => ".ogg",
    :command => "ffmpeg -i $input_file$ -f ogg -pass 1 -threads 0 -c:v libtheora -c:a libvorbis $audio_sample_rate$ $video_bitrate$ $audio_bitrate$ $fps$ $filters$ -y /dev/null\nffmpeg -i $input_file$ -f ogg -pass 2 -threads 0 -c:v libtheora -c:a libvorbis $audio_sample_rate$ $video_bitrate$ $audio_bitrate$ $fps$ $filters$ -y $output_file$"
  )

Our presets support two pass encoding but if you need the command, here is the way to do it:

Available conversion tools

Here is the list of conversion tools available in Telestream Cloud.

FFmpeg

See https://ffmpeg.org

FFmpeg is a complete, cross-platform solution to record, convert and stream audio and video. It includes libavcodec - the leading audio/video codec library.

We provide a recent version of ffmpeg, compiled from the git repository with as many codecs as we could get our hands on (See full list of Supported File Formats and Codecs).

command name: ffmpeg
command version: Ffmpeg 0.10

Lame

See http://lame.sourceforge.net/

LAME is a high quality MPEG Audio Layer III (MP3) encoder.

command name: lame
command version: Lame 3.99

MEncoder

See https://www.mplayerhq.hu/

An other video encoder built from the same code as MPlayer.

command name: mencoder

Segmenter

Segmenter divides input file into smaller parts for HLS playlists.

command name: segmenter

Manifester

Manifester is a tool to create m3u8 manifest file.

command name: manifester

QtFaststart

See https://multimedia.cx/eggs/improving-qt-faststart/

Moves the moov atom in front of the data to improve network streaming.

command name: qt-faststart

QtRotate

See https://github.com/danielgtaylor/qtrotate

QtRotate is a tool to work with rotated files.

command name: qtrotate

Yamdi

See http://yamdi.sourceforge.net/

Yamdi is a metadata injector for FLV files.

command name: yamdi

MP4Box

See https://gpac.wp.mines-telecom.fr/mp4box/

Mp4Box is a tool for manipulating multimedia files.

command name: MP4Box

notifications

notifications

Code samples

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/notifications.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.get('https://api.cloud.telestream.net/flip/3.1/notifications.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/notifications.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/notifications.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /notifications.json

Returns a Factory’s notification settings.

Parameters

factory_id
string
In query
required
Id of a Factory.

Example responses

200 Response

{
  "url": "string",
  "delay": 0,
  "send_video_payload": true,
  "events": {
    "encoding_completed": true,
    "encoding_progress": true,
    "video_created": true,
    "video_encoded": true
  }
}

404 Response

{
  "error": "string",
  "message": "string"
}

Responses

Status Description Schema
200 OK
Successfully fetched the Factory’s notification settings
CloudNotificationSettings
404 Not Found
Factory not found.
Error

update notifications

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.put 'https://api.cloud.telestream.net/flip/3.1/notifications.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.put('https://api.cloud.telestream.net/flip/3.1/notifications.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/notifications.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "https://api.cloud.telestream.net/flip/3.1/notifications.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /notifications.json

Updates a Factory’s notification settings.

Body parameter

{
  "url": "string",
  "delay": 0,
  "send_video_payload": true,
  "events": {
    "encoding_completed": true,
    "encoding_progress": true,
    "video_created": true,
    "video_encoded": true
  }
}

Parameters

factory_id
string
In query
required
Id of a Factory.
required
none

Example responses

200 Response

{
  "url": "string",
  "delay": 0,
  "send_video_payload": true,
  "events": {
    "encoding_completed": true,
    "encoding_progress": true,
    "video_created": true,
    "video_encoded": true
  }
}

400 Response

{
  "error": "string",
  "message": "string"
}

403 Response

{
  "error": "string",
  "message": "string"
}

404 Response

{
  "error": "string",
  "message": "string"
}

Responses

Status Description Schema
200 OK
Successfully updated the Factory’s notification settings.
CloudNotificationSettings
400 Bad Request
Failed to update notification settings using the provided parameters.
Error
403 Forbidden
Not authorized to update the Factory’s notification settings.
Error
404 Not Found
Factory not found.
Error

workflows

workflows

Code samples

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/workflows.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'X-Api-Key': 'API_KEY'
}

r = requests.get('https://api.cloud.telestream.net/flip/3.1/workflows.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/workflows.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/workflows.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /workflows.json

Returns a collection of Workflows that belong to a Factory.

Parameters

factory_id
string
In query
required
Id of a Factory.
page
integer
In query
optional
A page to be fetched. Default is 1.
per_page
integer
In query
optional
A number of results per page. Default is 100.

Example responses

200 Response

{
  "workflows": [
    {
      "advanced_fps_conversion": "telestream",
      "aspect_mode": "preserve",
      "aspect_ratio": "16:9",
      "audio_bitrate": 128,
      "audio_channels": 0,
      "audio_channels_layout": 1,
      "audio_channels_per_track": 0,
      "audio_codec": "string",
      "audio_format": "pcm_s24le",
      "audio_map": "string",
      "audio_pid": "string",
      "audio_profile": "string",
      "audio_sample_rate": 44100,
      "audio_stream_id": 0,
      "audio_streams": 0,
      "avcintra_class": 50,
      "buffer_size": "string",
      "buffer_size_in_packets": "string",
      "bumpers": "string",
      "byte_range_requests": true,
      "clip_end": "00:32:16",
      "clip_length": "00:20:00",
      "clip_offset": "00:00:10",
      "closed_captions": "add",
      "color_metadata": true,
      "created_at": "string",
      "crop_input_bottom": "string",
      "crop_input_height": "string",
      "crop_input_left": "string",
      "crop_input_right": "string",
      "crop_input_top": "string",
      "crop_input_width": "string",
      "dash_profile": "string",
      "deinterlace": "keep_fps",
      "deinterlace_frames": "string",
      "description": "string",
      "dnxhd_type": 36,
      "encryption": true,
      "extname": ".mp4",
      "fps": 29.97,
      "frame_count": "string",
      "frame_interval": "1000f",
      "frame_offsets": "2s, 10s, 250f, 400f",
      "h264_level": 1,
      "h264_profile": "baseline",
      "h264_tune": "film",
      "height": 720,
      "id": "string",
      "imx_type": "string",
      "inputs": "string",
      "interlace": "string",
      "keyframe_interval": "string",
      "keyframe_rate": "string",
      "lang": "string",
      "max_rate": "string",
      "merge_audio_streams": "string",
      "mute_audio_tracks": true,
      "name": "string",
      "outputs": "string",
      "outputs_path_format": "string",
      "playlist_type": "iframe",
      "pmt_pid": "string",
      "preset_name": "string",
      "prores_format": "string",
      "segment_time": 0,
      "stack": "string",
      "telestream_block_size": "16x16",
      "telestream_blur_scaler": 0,
      "telestream_cost_scaler": 0,
      "telestream_search_length_scaler": 0,
      "telestream_subpel_mode": true,
      "time_code": "string",
      "title": "string",
      "trailers": "string",
      "transport_rate": "string",
      "ts_pids": "string",
      "updated_at": "string",
      "upscale": true,
      "use_editlist": true,
      "variants": "string",
      "video_bitrate": 3000,
      "video_pid": "string",
      "watermark_bottom": "string",
      "watermark_bumpers": true,
      "watermark_height": "string",
      "watermark_left": "string",
      "watermark_right": "string",
      "watermark_top": "string",
      "watermark_trailers": true,
      "watermark_url": "string",
      "watermark_width": "string",
      "width": 1080,
      "x264_options": "string",
      "x265_options": "string",
      "xdcam_format": "string",
      "tachyon_allow_remove_pulldown": true,
      "tachyon_enable_post_pulldown_filter": true,
      "tachyon_media_hint_is_cartoon": true,
      "tachyon_media_hint_has_chroma_noise": true,
      "tachyon_more_sensitive_remove_pulldown": true,
      "tachyon_allow_add_standard_pd": true,
      "tachyon_allow_add_2_2pd": true,
      "tachyon_allow_add_4_4pd": true,
      "tachyon_allow_add_4_6pd": true,
      "tachyon_allow_add_euro_pd": true,
      "tachyon_allow_add_adaptive_pd": true,
      "tachyon_motion_amount": "xlow",
      "tachyon_fallback_size": "small",
      "tachyon_mblock_size": "mb16",
      "tachyon_cut_detection_sensitivity": 0,
      "eac3_evolution_enable": true,
      "eac3_bitstream_mode": "m0",
      "eac3_ninety_degree_phase_shift": true,
      "eac3_three_decibel_attenuation": true,
      "eac3_enable_lfe_low_pass_filter": true,
      "eac3_analog_to_digital_converter_type": "standard",
      "eac3_stereo_downmix_preference": "m0",
      "eac3_lt_rt_center_mix_level": "c0",
      "eac3_lt_rt_surround_mix_level": "c3",
      "eac3_lo_ro_center_mix_level": "c0",
      "eac3_lo_ro_surround_mix_level": "c3",
      "eac3_surround_ex_mode": "m0",
      "eac3_drc_line_mode_profile": "p0",
      "eac3_drc_rf_mode_profile": "p0",
      "eac3_dialog_normalization": 0,
      "eac3_room_type": "m0",
      "eac3_mixing_level": 0,
      "eac3_copyright_protected": true,
      "eac3_original_bitstream": true
    }
  ],
  "page": 0,
  "per_page": 0,
  "total": 0
}

404 Response

{
  "error": "string",
  "message": "string"
}

Responses

Status Description Schema
200 OK
Successfully fetched a collection of Workflows that belong to the Factory
PaginatedWorkflowsCollection
404 Not Found
Factory not found.
Error

workorders

create workorder

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'multipart/form-data',
  'X-Api-Key' => 'API_KEY'
}

result = RestClient.post 'https://api.cloud.telestream.net/flip/3.1/workorders.json',
  params: {
  'factory_id' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'multipart/form-data',
  'X-Api-Key': 'API_KEY'
}

r = requests.post('https://api.cloud.telestream.net/flip/3.1/workorders.json', params={
  'factory_id': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/workorders.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"multipart/form-data"},
        "X-Api-Key": []string{"API_KEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://api.cloud.telestream.net/flip/3.1/workorders.json", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /workorders.json

Creates a Workorder.

Body parameter

profile_id: string
file: string
source_url: string

Parameters

factory_id
string
In query
required
Id of a Factory.
body
object
In body
optional
none
» profile_id
string
In body
optional
Id of a Profile.
» file
string(binary)
In body
optional
Input file.
» source_url
string
In body
optional
URL pointing to an input file.

Responses

Status Description Schema
200 OK
Successfully created a Workorder.
None
400 Bad Request
Failed to create a Workorder.
None

Schemas

Factory

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "A unique identifier of a Factory."
    },
    "name": {
      "type": "string",
      "description": "Human-readable identifier of a Factory."
    },
    "factory_region": {
      "type": "string",
      "description": "A region where the factory is located."
    },
    "output_bucket_name": {
      "type": "string",
      "description": "A bucket where processed files will be stored."
    },
    "acl": {
      "type": "string",
      "enum": [
        "public",
        "private"
      ],
      "description": "Specify if your files are public or private (private files need authorization url to access). By default this is not set."
    },
    "created_at": {
      "type": "string",
      "format": "datetime",
      "description": "A date and time when a Factory has been created."
    },
    "updated_at": {
      "type": "string",
      "format": "datetime",
      "description": "A date and time when a Factory has been updated last time."
    },
    "url": {
      "type": "string",
      "description": "An URL pointing to the output_bucket_name."
    },
    "server_side_encryption": {
      "type": "boolean",
      "description": "Specify if you want to use multi-factor server-side 256-bit AES-256 data encryption with Amazon S3-managed encryption keys (SSE-S3). Each object is encrypted using a unique key which as an additional safeguard is encrypted itself with a master key that S3 regularly rotates. By default this is not set."
    },
    "input_bucket_name": {
      "type": "string",
      "description": "A name of an input bucket."
    },
    "input_bucket_watch": {
      "type": "boolean",
      "description": "Determines whether the Factory should be notified about new files added to the input bucket."
    },
    "input_bucket_files_map": {
      "type": "string"
    },
    "input_bucket_sync_every_n_min": {
      "type": "string",
      "description": "Determines how often the input bucket is synchronised."
    },
    "input_bucket_recursive": {
      "type": "string"
    },
    "input_bucket_file_pattern": {
      "type": "string",
      "description": "A pattern that will be used to locate files in the input bucket. Valid wildcards might be used."
    },
    "outputs_path_format": {
      "type": "string"
    },
    "storage_provider": {
      "type": "integer",
      "description": "Specifies which storage provider the factory should use. Available options: S3: 0, Google Cloud Storage: 1, FTP storage: 2, Google Cloud Interoperability Storage: 5, Flip storage: 7, FASP storage: 8, Azure Blob Storage: 9"
    },
    "provider_specific_settings": {
      "type": "object",
      "additionalProperties": null
    }
  }
}

Properties

id
string
optional
A unique identifier of a Factory.
name
string
optional
Human-readable identifier of a Factory.
factory_region
string
optional
A region where the factory is located.
output_bucket_name
string
optional
A bucket where processed files will be stored.
acl
string
optional
Specify if your files are public or private (private files need authorization url to access). By default this is not set.
created_at
string(datetime)
optional
A date and time when a Factory has been created.
updated_at
string(datetime)
optional
A date and time when a Factory has been updated last time.
url
string
optional
An URL pointing to the output_bucket_name.
server_side_encryption
boolean
optional
Specify if you want to use multi-factor server-side 256-bit AES-256 data encryption with Amazon S3-managed encryption keys (SSE-S3). Each object is encrypted using a unique key which as an additional safeguard is encrypted itself with a master key that S3 regularly rotates. By default this is not set.
input_bucket_name
string
optional
A name of an input bucket.
input_bucket_watch
boolean
optional
Determines whether the Factory should be notified about new files added to the input bucket.
input_bucket_files_map
string
optional
none
input_bucket_sync_every_n_min
string
optional
Determines how often the input bucket is synchronised.
input_bucket_recursive
string
optional
none
input_bucket_file_pattern
string
optional
A pattern that will be used to locate files in the input bucket. Valid wildcards might be used.
outputs_path_format
string
optional
none
storage_provider
integer
optional
Specifies which storage provider the factory should use. Available options: S3: 0, Google Cloud Storage: 1, FTP storage: 2, Google Cloud Interoperability Storage: 5, Flip storage: 7, FASP storage: 8, Azure Blob Storage: 9
provider_specific_settings
object
optional
none

Enumerated Values

acl
public
acl
private

PaginatedFactoryCollection

{
  "type": "object",
  "properties": {
    "factories": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "A unique identifier of a Factory."
          },
          "name": {
            "type": "string",
            "description": "Human-readable identifier of a Factory."
          },
          "factory_region": {
            "type": "string",
            "description": "A region where the factory is located."
          },
          "output_bucket_name": {
            "type": "string",
            "description": "A bucket where processed files will be stored."
          },
          "acl": {
            "type": "string",
            "enum": [
              "public",
              "private"
            ],
            "description": "Specify if your files are public or private (private files need authorization url to access). By default this is not set."
          },
          "created_at": {
            "type": "string",
            "format": "datetime",
            "description": "A date and time when a Factory has been created."
          },
          "updated_at": {
            "type": "string",
            "format": "datetime",
            "description": "A date and time when a Factory has been updated last time."
          },
          "url": {
            "type": "string",
            "description": "An URL pointing to the output_bucket_name."
          },
          "server_side_encryption": {
            "type": "boolean",
            "description": "Specify if you want to use multi-factor server-side 256-bit AES-256 data encryption with Amazon S3-managed encryption keys (SSE-S3). Each object is encrypted using a unique key which as an additional safeguard is encrypted itself with a master key that S3 regularly rotates. By default this is not set."
          },
          "input_bucket_name": {
            "type": "string",
            "description": "A name of an input bucket."
          },
          "input_bucket_watch": {
            "type": "boolean",
            "description": "Determines whether the Factory should be notified about new files added to the input bucket."
          },
          "input_bucket_files_map": {
            "type": "string"
          },
          "input_bucket_sync_every_n_min": {
            "type": "string",
            "description": "Determines how often the input bucket is synchronised."
          },
          "input_bucket_recursive": {
            "type": "string"
          },
          "input_bucket_file_pattern": {
            "type": "string",
            "description": "A pattern that will be used to locate files in the input bucket. Valid wildcards might be used."
          },
          "outputs_path_format": {
            "type": "string"
          },
          "storage_provider": {
            "type": "integer",
            "description": "Specifies which storage provider the factory should use. Available options: S3: 0, Google Cloud Storage: 1, FTP storage: 2, Google Cloud Interoperability Storage: 5, Flip storage: 7, FASP storage: 8, Azure Blob Storage: 9"
          },
          "provider_specific_settings": {
            "type": "object",
            "additionalProperties": null
          }
        }
      }
    },
    "page": {
      "type": "integer",
      "description": "A number of the fetched page."
    },
    "per_page": {
      "type": "integer",
      "description": "A number of factories per page."
    },
    "total": {
      "type": "integer",
      "description": "A number of all factories stored in the db."
    }
  }
}

Properties

factories
optional
none
page
integer
optional
A number of the fetched page.
per_page
integer
optional
A number of factories per page.
total
integer
optional
A number of all factories stored in the db.

FactorySync

{
  "syncing": false
}

Properties

syncing
string
optional
Determines whether a Factory will be synchronised with an input bucket.

Enumerated Values

syncing
false
syncing
starting
syncing
already_started

Profile

{
  "advanced_fps_conversion": "telestream",
  "aspect_mode": "preserve",
  "aspect_ratio": "16:9",
  "audio_bitrate": 128,
  "audio_channels": 0,
  "audio_channels_layout": 1,
  "audio_channels_per_track": 0,
  "audio_codec": "string",
  "audio_format": "pcm_s24le",
  "audio_map": "string",
  "audio_pid": "string",
  "audio_profile": "string",
  "audio_sample_rate": 44100,
  "audio_stream_id": 0,
  "audio_streams": 0,
  "avcintra_class": 50,
  "buffer_size": "string",
  "buffer_size_in_packets": "string",
  "bumpers": "string",
  "byte_range_requests": true,
  "clip_end": "00:32:16",
  "clip_length": "00:20:00",
  "clip_offset": "00:00:10",
  "closed_captions": "add",
  "color_metadata": true,
  "created_at": "string",
  "crop_input_bottom": "string",
  "crop_input_height": "string",
  "crop_input_left": "string",
  "crop_input_right": "string",
  "crop_input_top": "string",
  "crop_input_width": "string",
  "dash_profile": "string",
  "deinterlace": "keep_fps",
  "deinterlace_frames": "string",
  "description": "string",
  "dnxhd_type": 36,
  "encryption": true,
  "extname": ".mp4",
  "fps": 29.97,
  "frame_count": "string",
  "frame_interval": "1000f",
  "frame_offsets": "2s, 10s, 250f, 400f",
  "h264_level": 1,
  "h264_profile": "baseline",
  "h264_tune": "film",
  "height": 720,
  "id": "string",
  "imx_type": "string",
  "inputs": "string",
  "interlace": "string",
  "keyframe_interval": "string",
  "keyframe_rate": "string",
  "lang": "string",
  "max_rate": "string",
  "merge_audio_streams": "string",
  "mute_audio_tracks": true,
  "name": "string",
  "outputs": "string",
  "outputs_path_format": "string",
  "playlist_type": "iframe",
  "pmt_pid": "string",
  "preset_name": "string",
  "prores_format": "string",
  "segment_time": 0,
  "stack": "string",
  "telestream_block_size": "16x16",
  "telestream_blur_scaler": 0,
  "telestream_cost_scaler": 0,
  "telestream_search_length_scaler": 0,
  "telestream_subpel_mode": true,
  "time_code": "string",
  "title": "string",
  "trailers": "string",
  "transport_rate": "string",
  "ts_pids": "string",
  "updated_at": "string",
  "upscale": true,
  "use_editlist": true,
  "variants": "string",
  "video_bitrate": 3000,
  "video_pid": "string",
  "watermark_bottom": "string",
  "watermark_bumpers": true,
  "watermark_height": "string",
  "watermark_left": "string",
  "watermark_right": "string",
  "watermark_top": "string",
  "watermark_trailers": true,
  "watermark_url": "string",
  "watermark_width": "string",
  "width": 1080,
  "x264_options": "string",
  "x265_options": "string",
  "xdcam_format": "string",
  "tachyon_allow_remove_pulldown": true,
  "tachyon_enable_post_pulldown_filter": true,
  "tachyon_media_hint_is_cartoon": true,
  "tachyon_media_hint_has_chroma_noise": true,
  "tachyon_more_sensitive_remove_pulldown": true,
  "tachyon_allow_add_standard_pd": true,
  "tachyon_allow_add_2_2pd": true,
  "tachyon_allow_add_4_4pd": true,
  "tachyon_allow_add_4_6pd": true,
  "tachyon_allow_add_euro_pd": true,
  "tachyon_allow_add_adaptive_pd": true,
  "tachyon_motion_amount": "xlow",
  "tachyon_fallback_size": "small",
  "tachyon_mblock_size": "mb16",
  "tachyon_cut_detection_sensitivity": 0,
  "eac3_evolution_enable": true,
  "eac3_bitstream_mode": "m0",
  "eac3_ninety_degree_phase_shift": true,
  "eac3_three_decibel_attenuation": true,
  "eac3_enable_lfe_low_pass_filter": true,
  "eac3_analog_to_digital_converter_type": "standard",
  "eac3_stereo_downmix_preference": "m0",
  "eac3_lt_rt_center_mix_level": "c0",
  "eac3_lt_rt_surround_mix_level": "c3",
  "eac3_lo_ro_center_mix_level": "c0",
  "eac3_lo_ro_surround_mix_level": "c3",
  "eac3_surround_ex_mode": "m0",
  "eac3_drc_line_mode_profile": "p0",
  "eac3_drc_rf_mode_profile": "p0",
  "eac3_dialog_normalization": 0,
  "eac3_room_type": "m0",
  "eac3_mixing_level": 0,
  "eac3_copyright_protected": true,
  "eac3_original_bitstream": true
}

Properties

advanced_fps_conversion
string
optional
todo
aspect_mode
string
optional
Specifies an aspect mode for output videos. The following options are available: - letterbox: - pad: Add paddings to the input image. Default is “letterbox”.
aspect_ratio
string
optional
A display aspect ratio. By default it is not set.
audio_bitrate
integer
optional
audio bitrate (in bits/s)
audio_channels
integer
optional
A number of audio channels. By default it is not set.
audio_channels_layout
string
optional
A channel layout specifies the spatial disposition of the channels in a multi-channel audio stream.
audio_channels_per_track
integer
optional
A number of audio channels per track.
audio_codec
string
optional
Audio codec that will be used by the profile. Available codecs are: libmp3lame, libvorbis, libfdk_aac, dib_ac3,pcm_s16le,mp2,ac3,eac3`.
audio_format
string
optional
Specifies an audio container.
audio_map
string
optional
none
audio_pid
string
optional
Packet identifier used by MPEG formats.
audio_profile
string
optional
Specifies an audio profile.
audio_sample_rate
string
optional
The number of samples of audio carried per second.
audio_stream_id
integer
optional
none
audio_streams
integer
optional
A number of audio streams.
avcintra_class
string
optional
A class of the AVC-Intra video coding.
buffer_size
string
optional
Determines the size of the PulseAudio buffer. by default it is not set.
buffer_size_in_packets
string
optional
todo
bumpers
string
optional
none
byte_range_requests
boolean
optional
none
clip_end
string
optional
Clip ends at a specific time.
clip_length
string
optional
A clip’s duration.
clip_offset
string
optional
Clip starts at a specific offset.
closed_captions
string
optional
One of add (adds captions as a separate streams) or burn (burns captions on video stream using the first subtitle file). By default it is not set.
color_metadata
boolean
optional
none
created_at
string(datetime)
optional
A date and time when the Profile has been created.
crop_input_bottom
string
optional
Distance (in pixels) from the bottom edge of the screen from which you want your crop to be done.
crop_input_height
string
optional
Width of the cropped image in pixels.
crop_input_left
string
optional
Distance (in pixels) from the left edge of the screen from which you want your crop to be done.
crop_input_right
string
optional
Distance (in pixels) from the right edge of the screen from which you want your crop to be done.
crop_input_top
string
optional
Distance (in pixels) from the top edge of the screen from which you want your crop to be done.
crop_input_width
string
optional
Height of the cropped image in pixels.
dash_profile
string
optional
none
deinterlace
string
optional
One of keep_fps or double_fps. By default it is not set.
deinterlace_frames
string
optional
none
description
string
optional
Description of the profile.
dnxhd_type
string
optional
none
encryption
boolean
optional
none
extname
string
optional
File extension.
fps
string
optional
Null value copy the original fps. By default it is not set.
frame_count
string
optional
Evenly spaced number of generated screenshots. By default it is not set.
frame_interval
string
optional
Thumbnail interval (Frames or seconds).
frame_offsets
string
optional
Array of offsets (Frames or seconds).
h264_level
string
optional
A specified set of constraints that indicate a degree of required decoder performance for a profile.
h264_profile
string
optional
Profiles represent a sub-set of the encoding techniques available in H.264.
h264_tune
string
optional
Specifies a h264 tuning option.
height
string
optional
Height in pixels.
id
string
optional
none
imx_type
string
optional
none
inputs
string
optional
none
interlace
string
optional
none
keyframe_interval
string
optional
Adds a key frame every N frames. Default is 250, adds a key frame every 250 frames.
keyframe_rate
string
optional
todo
lang
string
optional
none
max_rate
string
optional
A max bitrate tolerance (in bits/s). By default this is not set.
merge_audio_streams
string
optional
none
mute_audio_tracks
boolean
optional
Remove audio from input video file. By default it is set to false.
name
string
optional
A unique machine-readable name that will identify the profile. Helpful later on for filtering encodings by profile.
outputs
string
optional
none
outputs_path_format
string
optional
Specify the directory where the output files should be stored. By default it is not set. More information about this here.
playlist_type
string
optional
none
pmt_pid
string
optional
none
preset_name
string
optional
a name of a preset that a profile will use.
prores_format
string
optional
none
segment_time
integer
optional
Minimum value is 2, maximum is 60.
stack
string
optional
none
telestream_block_size
string
optional
none
telestream_blur_scaler
number
optional
Minimum value is 0, maximum is 4.
telestream_cost_scaler
number
optional
Minimum value is 0, maximum is 4.
telestream_search_length_scaler
integer
optional
Minimum value is 0, maximum is 2.
telestream_subpel_mode
boolean
optional
none
time_code
string
optional
If set, timestamps will be added to your videos. By default this is not set.
title
string
optional
Human-readable name.
trailers
string
optional
none
transport_rate
string
optional
none
ts_pids
string
optional
none
updated_at
string(datetime)
optional
none
upscale
boolean
optional
Upscale the video resolution to match your profile. Default is true.
use_editlist
boolean
optional
none
variants
string
optional
Pattern utilised to match HLS.Variant presets by name. Default is hls.*.
video_bitrate
string
optional
none
video_pid
string
optional
none
watermark_bottom
string
optional
Distance from the bottom of the video frame in pixels or percentage of video frame height. Works like CSS. Default is 0.
watermark_bumpers
boolean
optional
none
watermark_height
string
optional
Height of the watermark image in pixels or percentage of video frame height. Default is no resizing
watermark_left
string
optional
Distance from the left of the video frame in pixels or percentage of video frame width. Works like CSS. Default is 0.
watermark_right
string
optional
Distance from the right of the video frame in pixels or percentage of video frame width. Works like CSS. Default is 0.
watermark_top
string
optional
Distance from the top of the video frame in pixels or percentage of video frame height. Works like CSS. Default is 0.
watermark_trailers
boolean
optional
none
watermark_url
string
optional
Url of a watermark image.
watermark_width
string
optional
Width of the watermark image in pixels or percentage of video frame width. Default is no resizing.
width
string
optional
Width in pixels.
x264_options
string
optional
none
x265_options
string
optional
none
xdcam_format
string
optional
none
tachyon_allow_remove_pulldown
boolean
optional
Enable more sensitive pulldown removal algorithm.
tachyon_enable_post_pulldown_filter
boolean
optional
If the images you are converting are composited 29.976, but the pulldown pattern was not adhered to when performing the composite, this setting is required to remove combing artifacts. It will also remove combing artifacts related to very poor 3:2 cadence.
tachyon_media_hint_is_cartoon
boolean
optional
none
tachyon_media_hint_has_chroma_noise
boolean
optional
Remove chroma noise during the analysis of a video.
tachyon_more_sensitive_remove_pulldown
boolean
optional
When pulldown is not achieved due to extremely broken cadence, or other factors like highly mixed content or if chroma noise masks motion, the pulldown engine may fall back to de-interlacing rather than removing telecine. If that’s a case, a more sensitive pulldown pattern can be used. This algorithm favors inverse telecine and with lower thresholds for triggering pulldown identification, will maximize the number of progressive frames created from the video.
tachyon_allow_add_standard_pd
boolean
optional
none
tachyon_allow_add_2_2pd
boolean
optional
Allows 2:2 (PSF) Insertion. Creates a new series of frames which are based on duplicating the field an interlacing it into top/bottom field. Maintains a film-look.
tachyon_allow_add_4_4pd
boolean
optional
Allows 4:4 Insertion. Repeats each progressive frame twice on output (motion rate is halved). This setting is used when you want to convert to high progressive frame rates (i.e. 50p/59.94p/60p) but want to preserve film qualities (low motion rate, such as 24p).
tachyon_allow_add_4_6pd
boolean
optional
2:3 Insertion. inserts a standard 2:3 telecine pattern to 23.976p video stream to achieve a 29.97i frame rate
tachyon_allow_add_euro_pd
boolean
optional
Allows Euro Insertion. For field based interpolation rather than pixel-based. This is designed for interlaced or progressive integer frame rate conversions that are being converted to interlaced outputs. This method is valid for 24p to 50i conversions only.
tachyon_allow_add_adaptive_pd
boolean
optional
Allows Adaptive Insertion. For field-based interpolation rather than using pixel-based interpolation. This algorithm is designed for both integer and non-integer frame rate conversion targets - as long as one of them is a non-integer rate (23.976, 29.97, 59.94, etc). This creates NTSC-PAL conversions clean of motion artifacts at the expense of potential slight stutter. Stutter is most noticeable with material that has smooth and uniform motion.
tachyon_motion_amount
string
optional
This setting determines how much Tachyon will trust motion vectors in the creation of new images
tachyon_fallback_size
string
optional
This option specifies the transition region size between fallback areas and motion compensated areas. A larger fallback size allows more blending (feathering) to occur between the regions.
tachyon_mblock_size
string
optional
This option specifies the size of a motion block.
tachyon_cut_detection_sensitivity
number
optional
none
eac3_evolution_enable
boolean
optional
Enables the trusted metadata framework.
eac3_bitstream_mode
string
optional
Selects the type of audio service. **For 1/0 Voiceover will be used when Voiceover/Karaoke is selected. For 2/0 and above Karaoke will be used.
eac3_ninety_degree_phase_shift
boolean
optional
Applies a 90-degree phase shift to the surround channels; necessary if the output file is being decoded by a Dolby Surround Pro Logic or Pro Logic II decoder.
eac3_three_decibel_attenuation
boolean
optional
Attenuates the surround channels by 3 dB before encoding.
eac3_enable_lfe_low_pass_filter
boolean
optional
Applies a 120 Hz eighth order lowpass filter to the LFE input prior to encoding.
eac3_analog_to_digital_converter_type
string
optional
Allows audio that has passed through an A/D conversion stage to be marked as such.
eac3_stereo_downmix_preference
string
optional
none
eac3_lt_rt_center_mix_level
string
optional
Indicates the level shift applied to the center channel when adding to the left and right outputs during a downmix to a Lt/Rt output.
eac3_lt_rt_surround_mix_level
string
optional
Indicates the level shift applied to the surround channel when adding to the left and right outputs during a downmix to a Lt/Rt output.
eac3_lo_ro_center_mix_level
string
optional
Indicates the level shift applied to the center channel when adding to the left and right outputs during a downmix to a Lo/Ro output.
eac3_lo_ro_surround_mix_level
string
optional
Indicates the level shift applied to the surround channel when adding to the left and right outputs during a downmix to a Lo/Ro output.
eac3_surround_ex_mode
string
optional
Indicates whether the audio stream was encoded using Dolby EX.
eac3_drc_line_mode_profile
string
optional
Dynamic Range Control for Line Mode.
eac3_drc_rf_mode_profile
string
optional
Dynamic Range Control for RF Mode.
eac3_dialog_normalization
integer
optional
Represents the volume level of dialog in the audio stream which can be used by a Dolby Digital decoder. This aids the decoder in matching volume between program sources. Minimum value is 1, maximum is 31.
eac3_room_type
string
optional
none
eac3_mixing_level
integer
optional
Minimum value is 80, maximum is 111.
eac3_copyright_protected
boolean
optional
Indicates whether the encoded bitstream is copyright protected.
eac3_original_bitstream
boolean
optional
Indicates whether the encoded bitstream is the master version, or a copy.

Enumerated Values

advanced_fps_conversion
telestream
advanced_fps_conversion
tachyon
aspect_mode
preserve
aspect_mode
constrain
aspect_mode
letterbox
aspect_mode
pad
aspect_mode
fill (crop)
aspect_mode
stretch
aspect_mode
center
audio_channels_layout
1
audio_channels_layout
2
audio_channels_layout
2.1
audio_channels_layout
3
audio_channels_layout
3.0(back)
audio_channels_layout
3.1
audio_channels_layout
4
audio_channels_layout
4.1
audio_channels_layout
quad
audio_channels_layout
5
audio_channels_layout
5.0(side)
audio_channels_layout
5.1(side)
audio_channels_layout
6
audio_channels_layout
6.1
audio_channels_layout
7
audio_channels_layout
7.1
audio_channels_layout
mono
audio_channels_layout
stereo
audio_format
pcm_s24le
audio_format
pcm_s16le
avcintra_class
50
avcintra_class
100
closed_captions
add
closed_captions
burn
deinterlace
keep_fps
deinterlace
double_fps
dnxhd_type
36
dnxhd_type
45
dnxhd_type
60
dnxhd_type
75
dnxhd_type
90
dnxhd_type
90x
dnxhd_type
110
dnxhd_type
115
dnxhd_type
120
dnxhd_type
145
dnxhd_type
175x
dnxhd_type
175
dnxhd_type
185x
dnxhd_type
185
dnxhd_type
220x
dnxhd_type
220
h264_level
1
h264_level
1b
h264_level
1.1
h264_level
1.2
h264_level
1.3
h264_level
2
h264_level
2.1
h264_level
2.2
h264_level
3
h264_level
3.1
h264_level
3.2
h264_level
4
h264_level
4.1
h264_level
4.2
h264_level
5
h264_level
5.1
h264_profile
baseline
h264_profile
main
h264_profile
high
h264_profile
high10
h264_profile
high422
h264_profile
high444
h264_tune
film
h264_tune
animation
h264_tune
grain
h264_tune
psnr
h264_tune
ssim
h264_tune
fastdecode
h264_tune
zerolatency
playlist_type
iframe
playlist_type
iframe-only
telestream_block_size
16x16
telestream_block_size
24x24
telestream_block_size
32x32
tachyon_motion_amount
xlow
tachyon_motion_amount
low
tachyon_motion_amount
medium
tachyon_motion_amount
high
tachyon_motion_amount
xhigh
tachyon_motion_amount
auto
tachyon_fallback_size
small
tachyon_fallback_size
medium
tachyon_fallback_size
large
tachyon_fallback_size
xlarge
tachyon_fallback_size
auto
tachyon_mblock_size
mb16
tachyon_mblock_size
mb32
tachyon_mblock_size
mb64
tachyon_mblock_size
mb128
tachyon_mblock_size
mb256
tachyon_mblock_size
auto
eac3_bitstream_mode
m0
eac3_bitstream_mode
m1
eac3_bitstream_mode
m2
eac3_bitstream_mode
m3
eac3_bitstream_mode
m4
eac3_bitstream_mode
m5
eac3_bitstream_mode
m6
eac3_bitstream_mode
m7
eac3_analog_to_digital_converter_type
standard
eac3_analog_to_digital_converter_type
hdcd
eac3_stereo_downmix_preference
m0
eac3_stereo_downmix_preference
m1
eac3_stereo_downmix_preference
m2
eac3_stereo_downmix_preference
m3
eac3_lt_rt_center_mix_level
c0
eac3_lt_rt_center_mix_level
c1
eac3_lt_rt_center_mix_level
c2
eac3_lt_rt_center_mix_level
c3
eac3_lt_rt_center_mix_level
c4
eac3_lt_rt_center_mix_level
c5
eac3_lt_rt_center_mix_level
c6
eac3_lt_rt_center_mix_level
c7
eac3_lt_rt_surround_mix_level
c3
eac3_lt_rt_surround_mix_level
c4
eac3_lt_rt_surround_mix_level
c5
eac3_lt_rt_surround_mix_level
c6
eac3_lt_rt_surround_mix_level
c7
eac3_lo_ro_center_mix_level
c0
eac3_lo_ro_center_mix_level
c1
eac3_lo_ro_center_mix_level
c2
eac3_lo_ro_center_mix_level
c3
eac3_lo_ro_center_mix_level
c4
eac3_lo_ro_center_mix_level
c5
eac3_lo_ro_center_mix_level
c6
eac3_lo_ro_center_mix_level
c7
eac3_lo_ro_surround_mix_level
c3
eac3_lo_ro_surround_mix_level
c4
eac3_lo_ro_surround_mix_level
c5
eac3_lo_ro_surround_mix_level
c6
eac3_lo_ro_surround_mix_level
c7
eac3_surround_ex_mode
m0
eac3_surround_ex_mode
m1
eac3_surround_ex_mode
m2
eac3_drc_line_mode_profile
p0
eac3_drc_line_mode_profile
p1
eac3_drc_line_mode_profile
p2
eac3_drc_line_mode_profile
p3
eac3_drc_line_mode_profile
p4
eac3_drc_line_mode_profile
p5
eac3_drc_rf_mode_profile
p0
eac3_drc_rf_mode_profile
p1
eac3_drc_rf_mode_profile
p2
eac3_drc_rf_mode_profile
p3
eac3_drc_rf_mode_profile
p4
eac3_drc_rf_mode_profile
p5
eac3_room_type
m0
eac3_room_type
m1
eac3_room_type
m2

Encoding

{
  "id": "string",
  "audio_bitrate": 128,
  "audio_channels": 0,
  "audio_codec": "string",
  "audio_sample_rate": 44100,
  "created_at": "string",
  "duration": 0,
  "encoding_progress": 0,
  "encoding_time": 0,
  "error_class": "string",
  "error_message": "string",
  "external_id": "string",
  "extname": "string",
  "file_size": 0,
  "files": [
    "string"
  ],
  "fps": 0,
  "height": 0,
  "width": 0,
  "logfile_url": "string",
  "mime_type": "string",
  "parent_encoding_id": "string",
  "path": "string",
  "profile_id": "string",
  "profile_name": "string",
  "screenshots": [
    "string"
  ],
  "started_encoding_at": "string",
  "status": "string",
  "updated_at": "string",
  "video_bitrate": 0,
  "video_codec": "string",
  "video_id": "string"
}

Properties

id
string
optional
A unique identifier of an Encoding.
audio_bitrate
integer
optional
Audio bitrate (in bits/s).
audio_channels
integer
optional
A number of audio channels.
audio_codec
string
optional
A codec that is used to encode audio streams.
audio_sample_rate
integer
optional
A number of samples of audio carried per second.
created_at
string(datetime)
optional
A date and time when the Encoding has been created.
duration
integer
optional
none
encoding_progress
integer
optional
none
encoding_time
integer
optional
none
error_class
string
optional
A class of an error that has occurred during the encoding process. It is present only if the encoding status is equal to fail.
error_message
string
optional
A message that explains why the encoding process has resulted in an error. It is present only if the encoding status is equal to fail.
external_id
string
optional
none
extname
string
optional
Extension of the output file.
file_size
integer
optional
A size of the output file.
files
[string]
optional
An array of output file names.
fps
number
optional
Number of frames per second.
height
integer
optional
Height of the output video.
width
integer
optional
Width of the output video.
logfile_url
string
optional
An URL pointing to a logfile.
mime_type
string
optional
A mime type of the encoded file.
parent_encoding_id
string
optional
none
path
string
optional
none
profile_id
string
optional
An id of a related Profile.
profile_name
string
optional
A name of the used Profile.
screenshots
[string]
optional
none
started_encoding_at
string(datetime)
optional
A date and time when the encoding process has been started
status
string
optional
Determines at what stage the encoding process is at the moment.
updated_at
string(datetime)
optional
A date and time when a Encoding has been updated last time.
video_bitrate
integer
optional
video bitrate (in bits/s)
video_codec
string
optional
A codec that is used to encode video streams.
video_id
string
optional
An id of a related Video object

Video

{
  "id": "string",
  "audio_bitrate": 128,
  "audio_channels": 0,
  "audio_codec": "string",
  "audio_sample_rate": 0,
  "created_at": "string",
  "duration": 0,
  "encodings_count": 0,
  "error_class": "string",
  "error_message": "string",
  "extname": "string",
  "file_size": 0,
  "fps": 0,
  "height": 0,
  "width": 0,
  "mime_type": "string",
  "original_filename": "string",
  "path": "string",
  "payload": "string",
  "source_url": "string",
  "status": "string",
  "updated_at": "string",
  "video_bitrate": "string",
  "video_codec": "string"
}

Properties

id
string
optional
A unique identifier of the Video.
audio_bitrate
integer
optional
audio bitrate (in bits/s)
audio_channels
integer
optional
A number of audio channels.
audio_codec
string
optional
A codec that has been used to encode audio streams.
audio_sample_rate
integer
optional
A number of samples of audio carried per second.
created_at
string(datetime)
optional
A date and time when the Video has been created.
duration
integer
optional
A duration of the video in seconds.
encodings_count
integer
optional
A number of related Encoding objects.
error_class
string
optional
A class of an error that has occurred during the encoding process. It is present only if the encoding status is equal to fail.
error_message
string
optional
A message that explains why the encoding process has resulted in an error. It is present only if the encoding status is equal to fail.
extname
string
optional
Extension of the source file.
file_size
integer
optional
A size of the source file.
fps
number
optional
Number of frames per second.
height
integer
optional
Height of the output video.
width
integer
optional
Width of the output video.
mime_type
string
optional
A mime type of the source file.
original_filename
string
optional
A name of the source file.
path
string
optional
none
payload
string
optional
Payload is an arbitrary text of length 256 or shorter that you can store along the Video. It is typically used to retain an association with one of your own DB record ID.
source_url
string
optional
An URL pointing to the source file.
status
string
optional
Determines at what stage of importing process the Video is at the moment.
updated_at
string(datetime)
optional
A date and time when a Video has been updated last time.
video_bitrate
string
optional
video bitrate (in bits/s)
video_codec
string
optional
A codec that has been used to encode the input file’s video streams.

PaginatedVideoCollection

{
  "videos": [
    {
      "id": "string",
      "audio_bitrate": 128,
      "audio_channels": 0,
      "audio_codec": "string",
      "audio_sample_rate": 0,
      "created_at": "string",
      "duration": 0,
      "encodings_count": 0,
      "error_class": "string",
      "error_message": "string",
      "extname": "string",
      "file_size": 0,
      "fps": 0,
      "height": 0,
      "width": 0,
      "mime_type": "string",
      "original_filename": "string",
      "path": "string",
      "payload": "string",
      "source_url": "string",
      "status": "string",
      "updated_at": "string",
      "video_bitrate": "string",
      "video_codec": "string"
    }
  ],
  "page": 0,
  "per_page": 0,
  "total": 0
}

Properties

videos
optional
none
page
integer
optional
A number of the fetched page.
per_page
integer
optional
A number of videos per page.
total
integer
optional
A number of all videos stored in the db.

SignedVideoUrl

{
  "signed_url": "string"
}

Properties

signed_url
string
optional
An URL pointing to the Video file. It contains a valid authentication token.

PaginatedEncodingsCollection

{
  "encodings": [
    {
      "id": "string",
      "audio_bitrate": 128,
      "audio_channels": 0,
      "audio_codec": "string",
      "audio_sample_rate": 44100,
      "created_at": "string",
      "duration": 0,
      "encoding_progress": 0,
      "encoding_time": 0,
      "error_class": "string",
      "error_message": "string",
      "external_id": "string",
      "extname": "string",
      "file_size": 0,
      "files": [
        "string"
      ],
      "fps": 0,
      "height": 0,
      "width": 0,
      "logfile_url": "string",
      "mime_type": "string",
      "parent_encoding_id": "string",
      "path": "string",
      "profile_id": "string",
      "profile_name": "string",
      "screenshots": [
        "string"
      ],
      "started_encoding_at": "string",
      "status": "string",
      "updated_at": "string",
      "video_bitrate": 0,
      "video_codec": "string",
      "video_id": "string"
    }
  ],
  "page": 0,
  "per_page": 0,
  "total": 0
}

Properties

encodings
required
none
page
integer
required
A number of the fetched page.
per_page
integer
required
A number of encodings per page.
total
integer
required
A number of all encodings stored in the db.

UploadSession

{
  "type": "object",
  "required": [
    "id",
    "location"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "An unique identifier of the UploadSession."
    },
    "location": {
      "type": "string",
      "description": "An URL to which chunks of the uploaded file should be sent"
    },
    "parts": {
      "type": "integer",
      "description": "A number of chunks that are expected by the upstream."
    },
    "part_size": {
      "type": "integer",
      "description": "An expected size of uploaded chunks."
    },
    "max_connections": {
      "type": "integer",
      "description": "A maximum number of concurrent connections."
    },
    "extra_files": {
      "type": "object",
      "additionalProperties": null,
      "description": "An object containing additional files uploaded using the session."
    }
  }
}

Properties

id
string
required
An unique identifier of the UploadSession.
location
string
required
An URL to which chunks of the uploaded file should be sent
parts
integer
optional
A number of chunks that are expected by the upstream.
part_size
integer
optional
An expected size of uploaded chunks.
max_connections
integer
optional
A maximum number of concurrent connections.
extra_files
object
optional
An object containing additional files uploaded using the session.

ExtraFile

{
  "tag": "string",
  "file_size": 0,
  "file_name": "string"
}

Properties

tag
string
required
none
file_size
integer(int64)
required
none
file_name
string
required
none

DeletedResponse

{
  "deleted": true
}

Properties

deleted
boolean
optional
Informs whether an object has been deleted successfully.

CountResponse

{
  "total": 0
}

Properties

total
integer
optional
Informs how many objects are stored in the database.

RetriedResponse

{
  "retried": true
}

Properties

retried
boolean
optional
Informs whether an action has been retried successfully.

CanceledResponse

{
  "canceled": true
}

Properties

canceled
boolean
optional
Informs whether an action has been canceled successfully.

EncodingSignedUrls

{
  "signed_urls": [
    "string"
  ]
}

Properties

signed_urls
[string]
optional
A list of signed URLs pointing to the encoding’s outputs.

EncodingSignedUrl

{
  "signed_url": "string"
}

Properties

signed_url
string
optional
A signed URLs pointing to the encoding’s output.

Error

{
  "error": "string",
  "message": "string"
}

Properties

error
string
optional
Error type
message
string
optional
Explanation why the error has been raised.

PaginatedProfilesCollection

{
  "profiles": [
    {
      "advanced_fps_conversion": "telestream",
      "aspect_mode": "preserve",
      "aspect_ratio": "16:9",
      "audio_bitrate": 128,
      "audio_channels": 0,
      "audio_channels_layout": 1,
      "audio_channels_per_track": 0,
      "audio_codec": "string",
      "audio_format": "pcm_s24le",
      "audio_map": "string",
      "audio_pid": "string",
      "audio_profile": "string",
      "audio_sample_rate": 44100,
      "audio_stream_id": 0,
      "audio_streams": 0,
      "avcintra_class": 50,
      "buffer_size": "string",
      "buffer_size_in_packets": "string",
      "bumpers": "string",
      "byte_range_requests": true,
      "clip_end": "00:32:16",
      "clip_length": "00:20:00",
      "clip_offset": "00:00:10",
      "closed_captions": "add",
      "color_metadata": true,
      "created_at": "string",
      "crop_input_bottom": "string",
      "crop_input_height": "string",
      "crop_input_left": "string",
      "crop_input_right": "string",
      "crop_input_top": "string",
      "crop_input_width": "string",
      "dash_profile": "string",
      "deinterlace": "keep_fps",
      "deinterlace_frames": "string",
      "description": "string",
      "dnxhd_type": 36,
      "encryption": true,
      "extname": ".mp4",
      "fps": 29.97,
      "frame_count": "string",
      "frame_interval": "1000f",
      "frame_offsets": "2s, 10s, 250f, 400f",
      "h264_level": 1,
      "h264_profile": "baseline",
      "h264_tune": "film",
      "height": 720,
      "id": "string",
      "imx_type": "string",
      "inputs": "string",
      "interlace": "string",
      "keyframe_interval": "string",
      "keyframe_rate": "string",
      "lang": "string",
      "max_rate": "string",
      "merge_audio_streams": "string",
      "mute_audio_tracks": true,
      "name": "string",
      "outputs": "string",
      "outputs_path_format": "string",
      "playlist_type": "iframe",
      "pmt_pid": "string",
      "preset_name": "string",
      "prores_format": "string",
      "segment_time": 0,
      "stack": "string",
      "telestream_block_size": "16x16",
      "telestream_blur_scaler": 0,
      "telestream_cost_scaler": 0,
      "telestream_search_length_scaler": 0,
      "telestream_subpel_mode": true,
      "time_code": "string",
      "title": "string",
      "trailers": "string",
      "transport_rate": "string",
      "ts_pids": "string",
      "updated_at": "string",
      "upscale": true,
      "use_editlist": true,
      "variants": "string",
      "video_bitrate": 3000,
      "video_pid": "string",
      "watermark_bottom": "string",
      "watermark_bumpers": true,
      "watermark_height": "string",
      "watermark_left": "string",
      "watermark_right": "string",
      "watermark_top": "string",
      "watermark_trailers": true,
      "watermark_url": "string",
      "watermark_width": "string",
      "width": 1080,
      "x264_options": "string",
      "x265_options": "string",
      "xdcam_format": "string",
      "tachyon_allow_remove_pulldown": true,
      "tachyon_enable_post_pulldown_filter": true,
      "tachyon_media_hint_is_cartoon": true,
      "tachyon_media_hint_has_chroma_noise": true,
      "tachyon_more_sensitive_remove_pulldown": true,
      "tachyon_allow_add_standard_pd": true,
      "tachyon_allow_add_2_2pd": true,
      "tachyon_allow_add_4_4pd": true,
      "tachyon_allow_add_4_6pd": true,
      "tachyon_allow_add_euro_pd": true,
      "tachyon_allow_add_adaptive_pd": true,
      "tachyon_motion_amount": "xlow",
      "tachyon_fallback_size": "small",
      "tachyon_mblock_size": "mb16",
      "tachyon_cut_detection_sensitivity": 0,
      "eac3_evolution_enable": true,
      "eac3_bitstream_mode": "m0",
      "eac3_ninety_degree_phase_shift": true,
      "eac3_three_decibel_attenuation": true,
      "eac3_enable_lfe_low_pass_filter": true,
      "eac3_analog_to_digital_converter_type": "standard",
      "eac3_stereo_downmix_preference": "m0",
      "eac3_lt_rt_center_mix_level": "c0",
      "eac3_lt_rt_surround_mix_level": "c3",
      "eac3_lo_ro_center_mix_level": "c0",
      "eac3_lo_ro_surround_mix_level": "c3",
      "eac3_surround_ex_mode": "m0",
      "eac3_drc_line_mode_profile": "p0",
      "eac3_drc_rf_mode_profile": "p0",
      "eac3_dialog_normalization": 0,
      "eac3_room_type": "m0",
      "eac3_mixing_level": 0,
      "eac3_copyright_protected": true,
      "eac3_original_bitstream": true
    }
  ],
  "page": 0,
  "per_page": 0,
  "total": 0
}

Properties

profiles
optional
none
page
integer
optional
A number of the fetched page.
per_page
integer
optional
A number of profiles per page.
total
integer
optional
A number of all profiles stored in the db.

ProfileBody

{
  "preset_name": "aac",
  "advanced_fps_conversion": "telestream",
  "aspect_mode": "preserve",
  "aspect_ratio": "16:9",
  "audio_bitrate": 128,
  "audio_channels": 0,
  "audio_channels_layout": 1,
  "audio_channels_per_track": "string",
  "audio_codec": "string",
  "audio_format": "string",
  "audio_pid": "string",
  "audio_profile": "string",
  "audio_sample_rate": 44100,
  "audio_streams": 0,
  "avcintra_class": 50,
  "buffer_size": "string",
  "buffer_size_in_packets": "string",
  "clip_length": "00:20:00",
  "clip_offset": "00:00:10",
  "closed_captions": "add",
  "dash_profile": "string",
  "deinterlace": "keep_fps",
  "deinterlace_frames": "string",
  "dnxhd_type": "string",
  "encryption": true,
  "extname": ".mp4",
  "fps": 29.97,
  "frame_offsets": "2s, 10s, 250f, 400f",
  "frame_interval": "1000f",
  "frame_count": 0,
  "h264_level": 1,
  "h264_profile": "baseline",
  "h264_tune": "film",
  "height": 720,
  "imx_type": "string",
  "interlace": "string",
  "keyframe_interval": 0,
  "keyframe_rate": 0,
  "max_rate": 0,
  "merge_audio_streams": "string",
  "name": "string",
  "outputs_path_format": "string",
  "pmt_pid": "string",
  "prores_format": "string",
  "segment_time": "string",
  "size": "string",
  "tar": true,
  "transport_rate": "string",
  "ts_pids": "string",
  "upscale": true,
  "variants": "string",
  "video_bitrate": 3000,
  "video_pid": "string",
  "watermark_bottom": "string",
  "watermark_height": "string",
  "watermark_left": "string",
  "watermark_right": "string",
  "watermark_top": "string",
  "watermark_url": "string",
  "watermark_width": "string",
  "width": 1080,
  "x264_options": "string",
  "x265_options": "string",
  "xdcam_format": "string",
  "mute_audio_tracks": true,
  "byte_range_requests": "string",
  "lang": "string",
  "use_editlist": "string",
  "audio_map": "string",
  "audio_stream_id": "string",
  "bumpers": "string",
  "codec_preset": "ultrafast",
  "color_metadata": "string",
  "crop_input_bottom": "string",
  "crop_input_height": "string",
  "crop_input_left": "string",
  "crop_input_right": "string",
  "crop_input_top": "string",
  "crop_input_width": "string",
  "dynamic_recipe": "string",
  "playlist_type": "string",
  "preset_version": "string",
  "segment_delimiter": "string",
  "sws_flags": "string",
  "telestream_block_size": "16x16",
  "telestream_blur_scaler": "string",
  "telestream_cost_scaler": "string",
  "telestream_search_length_scaler": "string",
  "telestream_subpel_mode": "string",
  "trailers": "string",
  "vantage_group_id": "string",
  "watermark_bumpers": "string",
  "watermark_trailers": "string",
  "workorder_criteria": {
    "additionalProperties": null
  },
  "tachyon_allow_remove_pulldown": true,
  "tachyon_enable_post_pulldown_filter": true,
  "tachyon_media_hint_is_cartoon": true,
  "tachyon_media_hint_has_chroma_noise": true,
  "tachyon_more_sensitive_remove_pulldown": true,
  "tachyon_allow_add_standard_pd": true,
  "tachyon_allow_add_2_2pd": true,
  "tachyon_allow_add_4_4pd": true,
  "tachyon_allow_add_4_6pd": true,
  "tachyon_allow_add_euro_pd": true,
  "tachyon_allow_add_adaptive_pd": true,
  "tachyon_motion_amount": "xlow",
  "tachyon_fallback_size": "small",
  "tachyon_mblock_size": "mb16",
  "tachyon_cut_detection_sensitivity": 0,
  "eac3_evolution_enable": true,
  "eac3_bitstream_mode": "m0",
  "eac3_ninety_degree_phase_shift": true,
  "eac3_three_decibel_attenuation": true,
  "eac3_enable_lfe_low_pass_filter": true,
  "eac3_analog_to_digital_converter_type": "string",
  "eac3_stereo_downmix_preference": "m0",
  "eac3_lt_rt_center_mix_level": "c0",
  "eac3_lt_rt_surround_mix_level": "c3",
  "eac3_lo_ro_center_mix_level": "c0",
  "eac3_lo_ro_surround_mix_level": "c3",
  "eac3_surround_ex_mode": "m0",
  "eac3_drc_line_mode_profile": "p0",
  "eac3_drc_rf_mode_profile": "p0",
  "eac3_dialog_normalization": 0,
  "eac3_room_type": "m0",
  "eac3_mixing_level": 0,
  "eac3_copyright_protected": true,
  "eac3_original_bitstream": true,
  "title": "string",
  "time_code": true
}

Properties

preset_name
string
required
a name of a preset that a profile will use.
advanced_fps_conversion
string
optional
todo
aspect_mode
string
optional
Default is “letterbox”.
aspect_ratio
string
optional
Sets the desired display aspect ratio. By default it is not set.
audio_bitrate
integer
optional
audio bitrate (in bits/s)
audio_channels
integer
optional
Sets the number of audio channels. By default it is not set.
audio_channels_layout
string
optional
A channel layout specifies the spatial disposition of the channels in a multi-channel audio stream.
audio_channels_per_track
string
optional
Sets the number of audio channels per track.
audio_codec
string
optional
Audio codec that will be used by the profile.
audio_format
string
optional
Specifies an audio container.
audio_pid
string
optional
Packet identifier used by MPEG formats.
audio_profile
string
optional
Sets an audio profile.
audio_sample_rate
integer
optional
The number of samples of audio carried per second.
audio_streams
integer
optional
Sets the number of audio streams.
avcintra_class
string
optional
class of the AVC-Intra video coding.
buffer_size
string
optional
Sets the buffer size, and can be 1-2 seconds for most gaming screencasts, and up to 5 seconds for more static content. You will have to experiment to see what looks best for your content.
buffer_size_in_packets
string
optional
todo
clip_length
string
optional
Sets the clip’s duration.
clip_offset
string
optional
Clip starts at a specific offset.
closed_captions
string