NAV
General Flip Timed Text Speech Quality Control

API

Telestream Cloud Quality Control service API allows you programmatically integrate with our QC service to run quality and compliance checks for file base media. The API is REST based, returns responses in JSON and lets you create and manage Projects, submit jobs using specific templates and monitor their progress, as well as results.

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:

Project

list projects

Code samples

require 'rest-client'
require 'json'


headers = {
  'Accept' => 'application/json'
}


result = RestClient.get 'https://api.cloud.telestream.net/qc/v1.0/projects.json',
  params: {
  }, headers: headers


p JSON.parse(result)


import requests
headers = {
  'Accept': 'application/json'
}


r = requests.get('https://api.cloud.telestream.net/qc/v1.0/projects.json', params={


}, headers = headers)


print r.json()


URL obj = new URL("https://api.cloud.telestream.net/qc/v1.0/projects.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());


GET /projects.json

List all projects for an account

Example responses

[
  {
    "id": "string",
    "name": "string",
    "status": "active",
    "template": "string",
    "options": {
      "file_tests": {
        "container_test": {
          "checked": true,
          "container": "Mov",
          "reject_on_error": true
        },
        "video_codec_test": {
          "checked": true,
          "video_codec": "ProRes",
          "video_profile": "VideoProfileNone",
          "video_level": "VideoLevelNone",
          "reject_on_error": true
        },
        "container_essence_consistency_test": {
          "checked": true
        },
        "enhanced_syntax_test": {
          "checked": true
        },
        "framesize_test": {
          "checked": true,
          "horizontal_size": 1920,
          "vertical_size": 1080
        },
        "pixel_aspect_ratio_test": {
          "checked": true,
          "pixel_aspect_ratio_numerator": 1,
          "pixel_aspect_ratio_denominator": 1
        },
        "i_tunes_compatibility_test": {
          "checked": true,
          "reject_on_error": true
        },
        "framerate_test": {
          "checked": true,
          "framerate_numerator": 25,
          "framerate_denominator": 1
        },
        "video_bit_rate_mode_test": {
          "checked": true,
          "mode": "VBR"
        },
        "video_bitrate_test": {
          "checked": true,
          "video_bitrate_lower": 88,
          "video_bitrate_upper": 220
        }
      }
    }
  }
]

Responses

Status Meaning Description Schema
200 OK OK Inline
401 Unauthorized Not authorized string
404 Not Found Item not found string

Response Schema

Status Code 200

Name Type Required Description
anonymous [Project] false No description
» id string false A unique identifier of a Project.
» name string false Human-readable identifier of a Project.
» status string false Project status.
» template string false Name of QC template.
» options string false JSON with specific options

create project

Code samples

require 'rest-client'
require 'json'


headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json'
}


result = RestClient.post 'https://api.cloud.telestream.net/qc/v1.0/projects.json',
  params: {
  }, headers: headers


p JSON.parse(result)


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


r = requests.post('https://api.cloud.telestream.net/qc/v1.0/projects.json', params={


}, headers = headers)


print r.json()


URL obj = new URL("https://api.cloud.telestream.net/qc/v1.0/projects.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());


POST /projects.json

Create a new project

Body parameter

{
  "name": "string",
  "template": "string",
  "options": {
    "video_tests": {
      "video_test": [
        {
          "flash_test": {
            "checked": true,
            "check_type": "PSEStandard",
            "reject_on_error": true
          }
        }
      ]
    }
  }
}

Parameters

Parameter In Type Required Description
body body object false No description

Example responses

{
  "id": "string",
  "name": "string",
  "status": "active",
  "template": "string",
  "options": {
    "file_tests": {
      "container_test": {
        "checked": true,
        "container": "Mov",
        "reject_on_error": true
      },
      "video_codec_test": {
        "checked": true,
        "video_codec": "ProRes",
        "video_profile": "VideoProfileNone",
        "video_level": "VideoLevelNone",
        "reject_on_error": true
      },
      "container_essence_consistency_test": {
        "checked": true
      },
      "enhanced_syntax_test": {
        "checked": true
      },
      "framesize_test": {
        "checked": true,
        "horizontal_size": 1920,
        "vertical_size": 1080
      },
      "pixel_aspect_ratio_test": {
        "checked": true,
        "pixel_aspect_ratio_numerator": 1,
        "pixel_aspect_ratio_denominator": 1
      },
      "i_tunes_compatibility_test": {
        "checked": true,
        "reject_on_error": true
      },
      "framerate_test": {
        "checked": true,
        "framerate_numerator": 25,
        "framerate_denominator": 1
      },
      "video_bit_rate_mode_test": {
        "checked": true,
        "mode": "VBR"
      },
      "video_bitrate_test": {
        "checked": true,
        "video_bitrate_lower": 88,
        "video_bitrate_upper": 220
      }
    }
  }
}

Responses

Status Meaning Description Schema
201 Created Created Project
401 Unauthorized Not authorized string
422 Unprocessable Entity Invalid options provided string

get project

Code samples

require 'rest-client'
require 'json'


headers = {
  'Accept' => 'application/json'
}


result = RestClient.get 'https://api.cloud.telestream.net/qc/v1.0/projects/{project}.json',
  params: {
  }, headers: headers


p JSON.parse(result)


import requests
headers = {
  'Accept': 'application/json'
}


r = requests.get('https://api.cloud.telestream.net/qc/v1.0/projects/{project}.json', params={


}, headers = headers)


print r.json()


URL obj = new URL("https://api.cloud.telestream.net/qc/v1.0/projects/{project}.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());


GET /projects/{project}.json

Get project by Id

Parameters

Parameter In Type Required Description
project path string true A unique identifier of a Project.

Example responses

{
  "id": "string",
  "name": "string",
  "status": "active",
  "template": "string",
  "options": {
    "file_tests": {
      "container_test": {
        "checked": true,
        "container": "Mov",
        "reject_on_error": true
      },
      "video_codec_test": {
        "checked": true,
        "video_codec": "ProRes",
        "video_profile": "VideoProfileNone",
        "video_level": "VideoLevelNone",
        "reject_on_error": true
      },
      "container_essence_consistency_test": {
        "checked": true
      },
      "enhanced_syntax_test": {
        "checked": true
      },
      "framesize_test": {
        "checked": true,
        "horizontal_size": 1920,
        "vertical_size": 1080
      },
      "pixel_aspect_ratio_test": {
        "checked": true,
        "pixel_aspect_ratio_numerator": 1,
        "pixel_aspect_ratio_denominator": 1
      },
      "i_tunes_compatibility_test": {
        "checked": true,
        "reject_on_error": true
      },
      "framerate_test": {
        "checked": true,
        "framerate_numerator": 25,
        "framerate_denominator": 1
      },
      "video_bit_rate_mode_test": {
        "checked": true,
        "mode": "VBR"
      },
      "video_bitrate_test": {
        "checked": true,
        "video_bitrate_lower": 88,
        "video_bitrate_upper": 220
      }
    }
  }
}

Responses

Status Meaning Description Schema
200 OK OK Project
401 Unauthorized Not authorized string
404 Not Found Item not found string

modify project

Code samples

require 'rest-client'
require 'json'


headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json'
}


result = RestClient.put 'https://api.cloud.telestream.net/qc/v1.0/projects/{project}.json',
  params: {
  }, headers: headers


p JSON.parse(result)


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


r = requests.put('https://api.cloud.telestream.net/qc/v1.0/projects/{project}.json', params={


}, headers = headers)


print r.json()


URL obj = new URL("https://api.cloud.telestream.net/qc/v1.0/projects/{project}.json");
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());


PUT /projects/{project}.json

Modify project

Body parameter

{
  "name": "string",
  "options": {
    "video_tests": {
      "video_test": [
        {
          "flash_test": {
            "checked": true,
            "check_type": "PSEStandard",
            "reject_on_error": true
          }
        }
      ]
    }
  }
}

Parameters

Parameter In Type Required Description
project path string true No description
body body object false No description

Example responses

{
  "id": "string",
  "name": "string",
  "status": "active",
  "template": "string",
  "options": {
    "file_tests": {
      "container_test": {
        "checked": true,
        "container": "Mov",
        "reject_on_error": true
      },
      "video_codec_test": {
        "checked": true,
        "video_codec": "ProRes",
        "video_profile": "VideoProfileNone",
        "video_level": "VideoLevelNone",
        "reject_on_error": true
      },
      "container_essence_consistency_test": {
        "checked": true
      },
      "enhanced_syntax_test": {
        "checked": true
      },
      "framesize_test": {
        "checked": true,
        "horizontal_size": 1920,
        "vertical_size": 1080
      },
      "pixel_aspect_ratio_test": {
        "checked": true,
        "pixel_aspect_ratio_numerator": 1,
        "pixel_aspect_ratio_denominator": 1
      },
      "i_tunes_compatibility_test": {
        "checked": true,
        "reject_on_error": true
      },
      "framerate_test": {
        "checked": true,
        "framerate_numerator": 25,
        "framerate_denominator": 1
      },
      "video_bit_rate_mode_test": {
        "checked": true,
        "mode": "VBR"
      },
      "video_bitrate_test": {
        "checked": true,
        "video_bitrate_lower": 88,
        "video_bitrate_upper": 220
      }
    }
  }
}

Responses

Status Meaning Description Schema
200 OK OK Project
401 Unauthorized Not authorized string
404 Not Found Item not found string
422 Unprocessable Entity Invalid options provided string

remove project

Code samples

require 'rest-client'
require 'json'


headers = {
  'Accept' => '*/*'
}


result = RestClient.delete 'https://api.cloud.telestream.net/qc/v1.0/projects/{project}.json',
  params: {
  }, headers: headers


p JSON.parse(result)


import requests
headers = {
  'Accept': '*/*'
}


r = requests.delete('https://api.cloud.telestream.net/qc/v1.0/projects/{project}.json', params={


}, headers = headers)


print r.json()


URL obj = new URL("https://api.cloud.telestream.net/qc/v1.0/projects/{project}.json");
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());


DELETE /projects/{project}.json

Parameters

Parameter In Type Required Description
project path string true No description

Example responses

Responses

Status Meaning Description Schema
200 OK OK None
401 Unauthorized Not authorized string
404 Not Found Item not found string

Job

list jobs

Code samples

require 'rest-client'
require 'json'


headers = {
  'Accept' => 'application/json'
}


result = RestClient.get 'https://api.cloud.telestream.net/qc/v1.0/projects/{project}/jobs.json',
  params: {
  }, headers: headers


p JSON.parse(result)


import requests
headers = {
  'Accept': 'application/json'
}


r = requests.get('https://api.cloud.telestream.net/qc/v1.0/projects/{project}/jobs.json', params={


}, headers = headers)


print r.json()


URL obj = new URL("https://api.cloud.telestream.net/qc/v1.0/projects/{project}/jobs.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());


GET /projects/{project}/jobs.json

Get jobs form projects

Parameters

Parameter In Type Required Description
project path string true A unique identifier of a Project.
expand query boolean false Expand details of job
status query string false Filter jobs by status
per_page query integer false Limit number of listed jobs
page query integer false Index of jobs page to be listed

Example responses

{
  "jobs": [
    {
      "id": "e75e68e192e6fc04ea3940d302d7bec5",
      "status": "pending",
      "duration": 0,
      "type": "vidchecker",
      "details": {
        "media": [
          {
            "audio": [
              {
                "duration": 78.345,
                "codec": "PCM",
                "channels": 6,
                "program": "string",
                "bitrate": 4608000,
                "sample_rate": 48000
              }
            ],
            "video": [
              {
                "duration": 78.3450116,
                "codec": "MPEG-2",
                "width": 1920,
                "height": 1080,
                "bitrate": 0,
                "fps": 29.97
              }
            ],
            "container": {
              "type": "mp4",
              "bitrate": "string"
            }
          }
        ],
        "result": {
          "alerts": [
            {
              "level": "string",
              "info": "string",
              "begin": "string",
              "end": "string",
              "stream": 0,
              "detail": "string"
            }
          ]
        }
      }
    }
  ],
  "page": 0,
  "per_page": 0,
  "page_count": 0,
  "total_count": 0
}

Responses

Status Meaning Description Schema
200 OK OK JobsCollection
401 Unauthorized Not authorized string
404 Not Found Item not found string

create job

Code samples

require 'rest-client'
require 'json'


headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json'
}


result = RestClient.post 'https://api.cloud.telestream.net/qc/v1.0/projects/{project}/jobs.json',
  params: {
  }, headers: headers


p JSON.parse(result)


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


r = requests.post('https://api.cloud.telestream.net/qc/v1.0/projects/{project}/jobs.json', params={


}, headers = headers)


print r.json()


URL obj = new URL("https://api.cloud.telestream.net/qc/v1.0/projects/{project}/jobs.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());


POST /projects/{project}/jobs.json

Create a new job

Body parameter

{
  "options": {
    "video_tests": {
      "video_test": [
        {
          "flash_test": {
            "checked": true,
            "check_type": "PSEStandard",
            "reject_on_error": true
          }
        }
      ]
    }
  },
  "url": "string"
}

Parameters

Parameter In Type Required Description
project path string true A unique identifier of a Project.
body body JobData true No description

Example responses

{
  "id": "e75e68e192e6fc04ea3940d302d7bec5",
  "status": "pending",
  "duration": 0,
  "type": "vidchecker",
  "details": {
    "media": [
      {
        "audio": [
          {
            "duration": 78.345,
            "codec": "PCM",
            "channels": 6,
            "program": "string",
            "bitrate": 4608000,
            "sample_rate": 48000
          }
        ],
        "video": [
          {
            "duration": 78.3450116,
            "codec": "MPEG-2",
            "width": 1920,
            "height": 1080,
            "bitrate": 0,
            "fps": 29.97
          }
        ],
        "container": {
          "type": "mp4",
          "bitrate": "string"
        }
      }
    ],
    "result": {
      "alerts": [
        {
          "level": "string",
          "info": "string",
          "begin": "string",
          "end": "string",
          "stream": 0,
          "detail": "string"
        }
      ]
    }
  }
}

Responses

Status Meaning Description Schema
201 Created OK Job
401 Unauthorized Not authorized string
404 Not Found Item not found string
422 Unprocessable Entity Invalid options provided string

get job

Code samples

require 'rest-client'
require 'json'


headers = {
  'Accept' => 'application/json'
}


result = RestClient.get 'https://api.cloud.telestream.net/qc/v1.0/projects/{project}/jobs/{job}.json',
  params: {
  }, headers: headers


p JSON.parse(result)


import requests
headers = {
  'Accept': 'application/json'
}


r = requests.get('https://api.cloud.telestream.net/qc/v1.0/projects/{project}/jobs/{job}.json', params={


}, headers = headers)


print r.json()


URL obj = new URL("https://api.cloud.telestream.net/qc/v1.0/projects/{project}/jobs/{job}.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());


GET /projects/{project}/jobs/{job}.json

Get QC job

Parameters

Parameter In Type Required Description
project path string true A unique identifier of a Project.
job path string true A unique identifier of a Job.

Example responses

{
  "id": "e75e68e192e6fc04ea3940d302d7bec5",
  "status": "pending",
  "duration": 0,
  "type": "vidchecker",
  "details": {
    "media": [
      {
        "audio": [
          {
            "duration": 78.345,
            "codec": "PCM",
            "channels": 6,
            "program": "string",
            "bitrate": 4608000,
            "sample_rate": 48000
          }
        ],
        "video": [
          {
            "duration": 78.3450116,
            "codec": "MPEG-2",
            "width": 1920,
            "height": 1080,
            "bitrate": 0,
            "fps": 29.97
          }
        ],
        "container": {
          "type": "mp4",
          "bitrate": "string"
        }
      }
    ],
    "result": {
      "alerts": [
        {
          "level": "string",
          "info": "string",
          "begin": "string",
          "end": "string",
          "stream": 0,
          "detail": "string"
        }
      ]
    }
  }
}

Responses

Status Meaning Description Schema
200 OK OK Job
401 Unauthorized Not authorized string
404 Not Found Item not found string

remove job

Code samples

require 'rest-client'
require 'json'


headers = {
  'Accept' => '*/*'
}


result = RestClient.delete 'https://api.cloud.telestream.net/qc/v1.0/projects/{project}/jobs/{job}.json',
  params: {
  }, headers: headers


p JSON.parse(result)


import requests
headers = {
  'Accept': '*/*'
}


r = requests.delete('https://api.cloud.telestream.net/qc/v1.0/projects/{project}/jobs/{job}.json', params={


}, headers = headers)


print r.json()


URL obj = new URL("https://api.cloud.telestream.net/qc/v1.0/projects/{project}/jobs/{job}.json");
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());


DELETE /projects/{project}/jobs/{job}.json

Parameters

Parameter In Type Required Description
project path string true A unique identifier of a Project.
job path string true A unique identifier of a Job.

Example responses

Responses

Status Meaning Description Schema
200 OK OK None
401 Unauthorized Not authorized string
404 Not Found Item not found string

cancel job

Code samples

require 'rest-client'
require 'json'


headers = {
  'Accept' => '*/*'
}


result = RestClient.put 'https://api.cloud.telestream.net/qc/v1.0/projects/{project}/jobs/{job}/cancel.json',
  params: {
  }, headers: headers


p JSON.parse(result)


import requests
headers = {
  'Accept': '*/*'
}


r = requests.put('https://api.cloud.telestream.net/qc/v1.0/projects/{project}/jobs/{job}/cancel.json', params={


}, headers = headers)


print r.json()


URL obj = new URL("https://api.cloud.telestream.net/qc/v1.0/projects/{project}/jobs/{job}/cancel.json");
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());


PUT /projects/{project}/jobs/{job}/cancel.json

Parameters

Parameter In Type Required Description
project path string true A unique identifier of a Project.
job path string true A unique identifier of a Job.

Example responses

Responses

Status Meaning Description Schema
202 Accepted Accepted None
401 Unauthorized Not authorized string
404 Not Found Item not found string
422 Unprocessable Entity Invalid options provided string

signed urls

Code samples

require 'rest-client'
require 'json'


headers = {
  'Accept' => 'application/json'
}


result = RestClient.get 'https://api.cloud.telestream.net/qc/v1.0/projects/{project}/jobs/{job}/signed-urls.json',
  params: {
  }, headers: headers


p JSON.parse(result)


import requests
headers = {
  'Accept': 'application/json'
}


r = requests.get('https://api.cloud.telestream.net/qc/v1.0/projects/{project}/jobs/{job}/signed-urls.json', params={


}, headers = headers)


print r.json()


URL obj = new URL("https://api.cloud.telestream.net/qc/v1.0/projects/{project}/jobs/{job}/signed-urls.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());


GET /projects/{project}/jobs/{job}/signed-urls.json

Parameters

Parameter In Type Required Description
project path string true A unique identifier of a Project.
job path string true A unique identifier of a Job.

Example responses

{
  "property1": "string",
  "property2": "string"
}

Responses

Status Meaning Description Schema
200 OK OK Inline

Response Schema

Status Code 200

Name Type Required Description
» additionalProperties string false No description

proxy

Code samples

require 'rest-client'
require 'json'


headers = {
  'Accept' => 'application/json'
}


result = RestClient.get 'https://api.cloud.telestream.net/qc/v1.0/projects/{project}/jobs/{job}/proxy.json',
  params: {
  }, headers: headers


p JSON.parse(result)


import requests
headers = {
  'Accept': 'application/json'
}


r = requests.get('https://api.cloud.telestream.net/qc/v1.0/projects/{project}/jobs/{job}/proxy.json', params={


}, headers = headers)


print r.json()


URL obj = new URL("https://api.cloud.telestream.net/qc/v1.0/projects/{project}/jobs/{job}/proxy.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());


GET /projects/{project}/jobs/{job}/proxy.json

Parameters

Parameter In Type Required Description
project path string true A unique identifier of a Project.
job path string true A unique identifier of a Job.

Example responses

{
  "status": "string",
  "progress": 0,
  "url": "string",
  "id": "string",
  "updated_at": "string"
}

Responses

Status Meaning Description Schema
200 OK OK Proxy

upload video

Code samples

require 'rest-client'
require 'json'


headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json'
}


result = RestClient.post 'https://api.cloud.telestream.net/qc/v1.0/projects/{project}/upload.json',
  params: {
  }, headers: headers


p JSON.parse(result)


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


r = requests.post('https://api.cloud.telestream.net/qc/v1.0/projects/{project}/upload.json', params={


}, headers = headers)


print r.json()


URL obj = new URL("https://api.cloud.telestream.net/qc/v1.0/projects/{project}/upload.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());


POST /projects/{project}/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",
  "multi_chunk": true
}

Parameters

Parameter In Type Required Description
project path string true A unique identifier of a Project.
body body object true No description
» file_size body integer(int64) true Size of the file that will be uploaded in bytes.
» file_name body string true Name of the file that will be uploaded.
» extra_files body [ExtraFile] false A list of names of additional files that will be uploaded.
»» tag body string true No description
»» file_size body integer(int64) true No description
»» file_name body string true No description
» profiles body string false A comma-separated list of profile names or IDs to be used during encoding. Alternatively, specify none so no encodings will created right away.
» multi_chunk body boolean false No description

Example responses

{
  "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."
    }
  }
}

Responses

Status Meaning Description Schema
201 Created Created UploadSession

Schemas

Project

{
  "id": "string",
  "name": "string",
  "status": "active",
  "template": "string",
  "options": {
    "file_tests": {
      "container_test": {
        "checked": true,
        "container": "Mov",
        "reject_on_error": true
      },
      "video_codec_test": {
        "checked": true,
        "video_codec": "ProRes",
        "video_profile": "VideoProfileNone",
        "video_level": "VideoLevelNone",
        "reject_on_error": true
      },
      "container_essence_consistency_test": {
        "checked": true
      },
      "enhanced_syntax_test": {
        "checked": true
      },
      "framesize_test": {
        "checked": true,
        "horizontal_size": 1920,
        "vertical_size": 1080
      },
      "pixel_aspect_ratio_test": {
        "checked": true,
        "pixel_aspect_ratio_numerator": 1,
        "pixel_aspect_ratio_denominator": 1
      },
      "i_tunes_compatibility_test": {
        "checked": true,
        "reject_on_error": true
      },
      "framerate_test": {
        "checked": true,
        "framerate_numerator": 25,
        "framerate_denominator": 1
      },
      "video_bit_rate_mode_test": {
        "checked": true,
        "mode": "VBR"
      },
      "video_bitrate_test": {
        "checked": true,
        "video_bitrate_lower": 88,
        "video_bitrate_upper": 220
      }
    }
  }
}

Properties

Name Type Required Description
id string false A unique identifier of a Project.
name string false Human-readable identifier of a Project.
status string false Project status.
template string false Name of QC template.
options string false JSON with specific options
Enumerated Values
Property Value
status active
status pending
status archived
status suspended

Jobs Collection

{
  "jobs": [
    {
      "id": "e75e68e192e6fc04ea3940d302d7bec5",
      "status": "pending",
      "duration": 0,
      "type": "vidchecker",
      "details": {
        "media": [
          {
            "audio": [
              {
                "duration": 78.345,
                "codec": "PCM",
                "channels": 6,
                "program": "string",
                "bitrate": 4608000,
                "sample_rate": 48000
              }
            ],
            "video": [
              {
                "duration": 78.3450116,
                "codec": "MPEG-2",
                "width": 1920,
                "height": 1080,
                "bitrate": 0,
                "fps": 29.97
              }
            ],
            "container": {
              "type": "mp4",
              "bitrate": "string"
            }
          }
        ],
        "result": {
          "alerts": [
            {
              "level": "string",
              "info": "string",
              "begin": "string",
              "end": "string",
              "stream": 0,
              "detail": "string"
            }
          ]
        }
      }
    }
  ],
  "page": 0,
  "per_page": 0,
  "page_count": 0,
  "total_count": 0
}

Properties

Name Type Required Description
jobs [Job] false No description
page integer false A number of the fetched page.
per_page integer false A number of jobs per page.
page_count integer false A number of all pages.
total_count integer false A number of all jobs stored in the db.

Job

{
  "id": "e75e68e192e6fc04ea3940d302d7bec5",
  "status": "pending",
  "duration": 0,
  "type": "vidchecker",
  "details": {
    "media": [
      {
        "audio": [
          {
            "duration": 78.345,
            "codec": "PCM",
            "channels": 6,
            "program": "string",
            "bitrate": 4608000,
            "sample_rate": 48000
          }
        ],
        "video": [
          {
            "duration": 78.3450116,
            "codec": "MPEG-2",
            "width": 1920,
            "height": 1080,
            "bitrate": 0,
            "fps": 29.97
          }
        ],
        "container": {
          "type": "mp4",
          "bitrate": "string"
        }
      }
    ],
    "result": {
      "alerts": [
        {
          "level": "string",
          "info": "string",
          "begin": "string",
          "end": "string",
          "stream": 0,
          "detail": "string"
        }
      ]
    }
  }
}

Properties

Name Type Required Description
id string false No description
status string false No description
duration integer false No description
type string false No description
details object false No description
» media [Media] false No description
» result object false Job type specific result
»» alerts [Alert] false No description
Enumerated Values
Property Value
status pending
status transfering
status queued
status downloading
status uploading
status processing
status success
status error
type vidchecker
type lipsync

Media

{
  "audio": [
    {
      "duration": 78.345,
      "codec": "PCM",
      "channels": 6,
      "program": "string",
      "bitrate": 4608000,
      "sample_rate": 48000
    }
  ],
  "video": [
    {
      "duration": 78.3450116,
      "codec": "MPEG-2",
      "width": 1920,
      "height": 1080,
      "bitrate": 0,
      "fps": 29.97
    }
  ],
  "container": {
    "type": "mp4",
    "bitrate": "string"
  }
}

Properties

Name Type Required Description
audio [AudioStream] false No description
video [VideoStream] false No description
container Container false No description

Audio Stream

{
  "duration": 78.345,
  "codec": "PCM",
  "channels": 6,
  "program": "string",
  "bitrate": 4608000,
  "sample_rate": 48000
}

Properties

Name Type Required Description
duration number false Audio duration measured in seconds.
codec string false Audio codec name.
channels integer false Number of audio channels.
program string false No description
bitrate integer false Audio bitrate measured in bps
sample_rate integer false Sample rate measured in Hz.

Video Stream

{
  "duration": 78.3450116,
  "codec": "MPEG-2",
  "width": 1920,
  "height": 1080,
  "bitrate": 0,
  "fps": 29.97
}

Properties

Name Type Required Description
duration integer false Video stream duration measured in seconds.
codec string false No description
width integer false No description
height integer false No description
bitrate integer false Video stream bitrate measured in bps
fps number false No description

Container

{
  "type": "mp4",
  "bitrate": "string"
}

Properties

Name Type Required Description
type string false No description
bitrate string false File bitrate measured in bps

Options

{
  "video_tests": {
    "video_test": [
      {
        "flash_test": {
          "checked": true,
          "check_type": "PSEStandard",
          "reject_on_error": true
        }
      }
    ]
  }
}

Properties

Name Type Required Description
anonymous string false JSON with specific options

Job Data

{
  "options": {
    "video_tests": {
      "video_test": [
        {
          "flash_test": {
            "checked": true,
            "check_type": "PSEStandard",
            "reject_on_error": true
          }
        }
      ]
    }
  },
  "url": "string"
}

Properties

Name Type Required Description
options Options false No description
url string false No description

Proxy

{
  "status": "string",
  "progress": 0,
  "url": "string",
  "id": "string",
  "updated_at": "string"
}

Properties

Name Type Required Description
status string false No description
progress integer false No description
url string false No description
id string false No description
updated_at string false No description

Alert

{
  "level": "string",
  "info": "string",
  "begin": "string",
  "end": "string",
  "stream": 0,
  "detail": "string"
}

Properties

Name Type Required Description
level string false No description
info string false Extra information for an alert.
begin string false Start time of alert.
end string false End time of alert.
stream integer false No description
detail string false No description

Extra File

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

Properties

Name Type Required Description
tag string true No description
file_size integer(int64) true No description
file_name string true No description

Upload Session

{
  "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

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