Reference Documentation

Basic actions

Getting channel's details

GET https://api.video.ibm.com/channels/CHANNEL_ID.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
detail_level string OPTIONAL Verbosity level. Possible values: "minimal", "owner". In case of the minimal verbosity level, the result set is limited to the "id", "title", "picture", "owner" and "locks" fields. If the channel is protected (see security section), only minimal data can be retrieved without a valid access token. The "owner" detail level always requires a valid access token, and it will also return more sensitive information about the channel (for example the DHLS link if this feature is available for you).
Response

Key-value pairs under a "channel" key. Example:

{
	"channel": {
		"id": "1111",
		"title": "Channel title",
		"description": "Description of channel",
		"tags": [
			"tag1",
			"tag2"
		],
		"url": "channel-title",
		"status": "offair",
		"last_broadcast_at": 1400000000,
		"tinyurl": "http://ustre.am/asdasd1",
		"stream": {
			"hls": "http://iphone-streaming.ustream.tv/uhls/1111/streams/live/iphone/playlist.m3u8",
			"dhls": "http://1111-channel-hls.ums.ustream.tv/playlist/directhls/channel/1111/playlist.m3u8?sgn=123",
		},
		"stats": {
			"viewer_total": 10000000,
			"viewer": 1000
		},
		"thumbnail": {
			"live": "https://ustvstaticcdn1-a.akamaihd.net/images/defaults/channel_192x108:1.png"
		},
		"owner": {
			"id": "1234",
			"username": "api-user",
			"picture": "https://ustvstaticcdn1-a.akamaihd.net/images/defaults/user_48x48:1.png"
		},
		"locks": []
	}
}

Minimal response example:

{
	"channel": {
		"id": "1111",
		"title": "Channel title",
		"owner": {
			"id": "1234",
			"username": "api-user",
			"picture": "https://ustvstaticcdn1-a.akamaihd.net/images/defaults/user_48x48:1.png"
		},
		"picture": {
			"90x90": "https://ustvstaticcdn1-a.akamaihd.net/images/defaults/channel_90x90:1.png",
			"66x66": ...
		},
		"locks": {
			"hash": {
				"type": "advanced",
				"auth_method": "custom"
			}
		}
	}
}

Explanation of some values:

key type Description
url string Channel URL name
status string Possible values: "live" or "offair"
last_broadcast_at timestamp Last broadcast time (Unix timestamp)
stats.viewer_total int Total viewer number
stats.viewer int Current viewer number when channel is live
stream.dhls string A direct HTTP link to the HLS stream if this feature is available for you and the "owner" detail_level was specified.
locks array
key type Description
hash array 3rd party viewer authentication is enabled for the channel. The "type" attribute can be either "basic" or "advanced". In case of advanced authentication, the "auth_method" attribute can contain "twostepauth" or "samlsso" for IBM Video Streaming supported authentication schemes or "custom" for other authentication methods.
password array Empty array if channel is password protected
Error codes
error value HTTP response code Error conditions
not_found 404 Not Found The given channel does not exist.
unauthorized 401 Unauthorized The channel is locked.

Creating a channel

Create a new channel for the current account.

Prerequisites

The caller must have an access token capable initializing channel creation. To obtain a token, the client must request one from the authorization server.

Example initialization of a web-server token-acquiring flow:

https://authentication.video.ibm.com/authorize?response_type=code&client_id=A...Z&redirect_uri=http://...

Example initialization of an implicit token-acquiring flow:

https://authentication.video.ibm.com/authorize?response_type=token&client_id=A...Z&redirect_uri=http://...

See more examples

Channel creation

POST https://api.video.ibm.com/users/self/channels.json
Parameters
parameter type importance Description
title string REQUIRED Create the channel with this title
description string OPTIONAL Create the channel with this description

The body of the request should contain the channel title, and optionally it can contain the description and tags. The Content-Type of the request should be application/x-www-form-urlencoded.

Example:

POST users/self/channels.json HTTP/1.1
Host: api.video.ibm.com
Authorization: Bearer 3c2573673b782f6544405a22636f3d5d3b6f3950
Content-Type: application/x-www-form-urlencoded

title=API+Testing+Channel

The token in the request above is only an example.

Response
{
	"channel": {
		"id":"13091307",
		"title":"Whatever Test 1234",
		"url":"whatever-test-1234",
		"tiny_url":"http://ustre.am/SVE7"
	}
}
Possible negative responses
  • 401 Unauthorized: The provided Access Token is missing, revoked, expired or malformed
  • 409 Conflict: The channel title or the channel URL is already in use
  • 400 Bad Request: The channel title is invalid
  • 503 Service Unavailable: There is a temporary error on the server which makes it impossible to serve the request

Edit channel details

Edit a channel's title, description and tags.

PUT https://api.video.ibm.com/channels/CHANNEL_ID.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
title string REQUIRED Channel title
description string OPTIONAL Channel description
tags string OPTIONAL Comma separated list of channel tags
Response

On success a response with HTTP status 204 No Content is returned.

Error codes
error value HTTP response code Error conditions
lack_of_ownership 403 Forbidden The api user is not allowed to manage the given channel
input_validation_error 400 Bad request If validation fails
not_found 404 Not found Channel not found

Deleting a channel

Permanently delete a channel from the current account.

DELETE https://api.video.ibm.com/channels/CHANNEL_ID.FORMAT (format can be json or xml)
Parameters

This request has no parameters.

Response

On success a response with HTTP status 200 OK is returned.

Error codes
error value HTTP response code Error conditions
lack_of_ownership 403 Forbidden The given channel does not belong to the user.
not_found 404 Not Found The given channel does not exist.

Listing the user's channels

Get a detailed list of the user's channels, including live status, thumbnail, and mobile and broadcast URLs

GET https://api.video.ibm.com/users/self/channels.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
q string OPTIONAL Search for text in channel related data.
p integer OPTIONAL Requested page number (1 by default)
pagesize integer OPTIONAL Requested page size (100 by default)
Response

A list of key-value pairs under a "channels" key containing the following information:

key type Description
id string Identifier of the channel
title string Title of the channel
url string Long web URL of the channel (https://video.ibm.com/channel/...)
tiny_url string Shortened web URL of the channel (http://ustre.am/...) - suitable for sharing on Twitter / Facebook
status string Possible values: "online" or "offline". "online" means that the stream is viewable on the IBM Video Streaming website.
broadcast_urls array of string Array of RTMP URLs (strings) where the client can broadcast. Client should fall-back to the second/third one if it provided and the previous element seems failing. Provided only in case of client explicitly asks for with a "broadcaster" detail_level query parameter.
default boolean, optional True if this is the default channel for the user. False or missing if it is not the default channel.
live_thumbnail string Listed when the channel is online.
picture map List of channel picture in different sizes. The key is the size (eg: 96x96) the value is the picture URL.

The paging information can be found under the "paging" key. Example:

{
	"paging": {
		"previous": {
			"href": "https://api.video.ibm.com/users/self/channels.json?pagesize=PAGESIZE&p=PREVIOUS_PAGE"
		},
		"actual": {
			"href": "https://api.video.ibm.com/users/self/channels.json?pagesize=PAGESIZE&p=PAGE"
		},
		"next": {
			"href": "https://api.video.ibm.com/users/self/channels.json?pagesize=PAGESIZE&p=NEXT_PAGE"
		}
	}
}

List channel all metadata values

GET https://api.video.ibm.com/channels/CHANNEL_ID/custom-metadata.json
Response

On success a response with HTTP status 200 OK is returned.

key type Description
metadata array

Array of values

key type Description
field_id string Field id
value string Metadata value
Error codes
error value HTTP response code Error conditions
unauthorized 401 Unauthorized The channel is locked.
not_found 404 Not found Non-existent resource

Set channel metadata value

PUT https://api.video.ibm.com/channels/CHANNEL_ID//custom-metadata/FIELD_ID.json
Parameters
parameter type importance Description
value mixed REQUIRED The metadata field value
Examples

Make sure the values are always properly URL encoded.

type possible values example body
string string
value=test%20string
numeric int/float
value=55.4
date ISO 8601
value=2020-01-02T15%3A20%3A59%2B0100
boolean true/1, false/0
value=true
tag list comma separated list of strings
value=a%2Cb%2Cc%2Cd
link URL (Required): target of the link
Text (Optional): text of the link
value[url]=https%3A%2F%2Fvideo.ibm.com%2F&value[text]=IBM%20Video%20Streaming
multiple choice list of choice IDs
value[]=1&value[]=2
group of fields Currently it is not possible to set the values of group fields with the API.
Response

On success save a response with HTTP status 204 is returned.

Error codes
error value HTTP response code Error conditions
unauthorized 401 Unauthorized The channel is locked.
unauthorized 404 not found Non-existent resource

Remove channel metadata value

DELETE https://api.video.ibm.com/channels/CHANNEL_ID/custom-metadata/FIELD_ID.json
Response

On success a response with HTTP status 200 OK is returned.

Error codes
error value HTTP response code Error conditions
unauthorized 401 Unauthorized The channel is locked.
unauthorized 404 not found Non-existent resource

Get the display settings of the custom metadata fields

GET https://api.video.ibm.com/channels/CHANNEL_ID/custom-metadata-display.json
Response

On success a response with HTTP status 200 is returned.

key type Description
metadata_displays array Metada display settings
key type Description
channel_id string Channel id
field_id string Field id
is_link boolean True if the field is a link

Set the display setting of a custom metadata field

PUT https://api.video.ibm.com/channels/CHANNEL_ID/custom-metadata-display/FIELD_ID.json
Parameters
parameter type importance Description
is_link boolean REQUIRED The metadata value is link to a similar content list
Response

On success a response with HTTP status 204 is returned.

Error codes
error value HTTP response code Error conditions
bad_request 400 Bad reequest When a required parameter is missing
unauthorized 401 Unauthorized The channel is locked.
not_found 404 not found Non-existent resource

Delete the display setting of a custom metadata field

DELETE https://api.video.ibm.com/channels/CHANNEL_ID/custom-metadata-display/FIELD_ID.json
Response

On success a response with HTTP status 200 OK is returned.

Error codes
error value HTTP response code Error conditions
unauthorized 401 Unauthorized The channel is locked.
unauthorized 404 not found Non-existent resource

Device Passwords

Get device passwords

GET https://api.video.ibm.com/users/self/device-passwords.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
page integer OPTIONAL Requested page number (1 by default)
pagesize integer OPTIONAL Requested page size (50 by default)
Response

On success a response with HTTP status 200 OK is returned.

Explanation of some values:

key type Description
device_name string Name of the device password
user_name string Username of the device password
created_at timestamp The date and time when the device password was created (Unix timestamp)
valid_from timestamp The date and time after which the device password can be used for logging in (Unix timestamp).
valid_until timestamp The date and time until the device password can be used for logging in (Unix timestamp).
Response example
{
  "device_passwords": [
    {
      "device_name": "Sample Device 1",
      "user_name": "xnwj3mseuka",
      "created_at": 1497441340,
      "valid_from": 1497443340,
      "valid_until": null
    },
    {
      "device_name": "Sample Device 2",
      "user_name": "ymvbk9bu7f8",
      "created_at": 1497341340,
      "valid_from": 1497341880,
      "valid_until": 1497381880
    }
  ],
  "paging": []
}

Paging information can be found under the "paging" key. Example:

"paging": {
	"previous": "https://api.video.ibm.com/users/self/device-passwords.json?pagesize=PAGE_SIZE&page=PREVIOUS_PAGE",
	"next": "https://api.video.ibm.com/users/self/device-passwords.json?pagesize=PAGE_SIZE&page=NEXT_PAGE"
}
Error codes
error value HTTP response code Error conditions
unauthorized 401 Unauthorized The provided Access Token is missing, revoked, expired or malformed

Create device password

POST https://api.video.ibm.com/users/self/device-passwords.FORMAT (format can be json or xml)
Parameters

The body of the request must contain the device name and a "valid_from" Unix timestamp.

parameter type importance Description
device_name string REQUIRED Name of the device
valid_from timestamp REQUIRED The date and time after which the device password can be used for logging in (Unix timestamp).
valid_until timestamp OPTIONAL The date and time until the device password can be used for logging in (Unix timestamp).
Response

On success a response with HTTP status 200 OK is returned.

Explanation of some values:

key type Description
device_name string Name of the device password
user_name string Username of the device password
password string Generated password
valid_from timestamp The date and time after which the device password can be used for logging in (Unix timestamp).
valid_until timestamp The date and time until the device password can be used for logging in (Unix timestamp).
Response example
{
  "device_name": "Sample Device 4",
  "user_name": "jgun36pdc79",
  "password": "jgcxathqhyqcdxp",
  "valid_from": 1497571200,
  "valid_until": 1500249600
}
Error codes
error value HTTP response code Error conditions
input_validation_error 400 Bad request In case of any required parameter is missing.
unauthorized 401 Unauthorized The provided Access Token is missing, revoked, expired or malformed

Delete device password

DELETE https://api.video.ibm.com/users/self/device-passwords/USER_NAME.FORMATformat can be json or xml)
Parameters

This request has no parameters.

Response

On success a response with HTTP status 200 OK is returned.

Error codes
error value HTTP response code Error conditions
unauthorized 401 Unauthorized The provided Access Token is missing, revoked, expired or malformed

Security

Password protection

When enabled, viewers must enter a password to view the show. This feature is currently disabled in both the iOS and Android apps.

GET, PUT, DELETE https://api.video.ibm.com/channels/CHANNEL_ID/locks/password.FORMAT (format can be json or xml)
Supported HTTP methods:
HTTP method Description
GET Returns the password protection status
PUT Sets the channel password and enables password protection as well
DELETE Removes the channel password, disables password protection status
Parameters

GET and DELETE requests have no parameters.
The parameters for the PUT request:

parameter type importance Description
password string REQUIRED The new channel password
Response

For DELETE and PUT an empty response is returned.
The result for the GET request:

key type Description
enabled boolean password protection status
Error codes
error value HTTP response code Error conditions
input_validation_error 400 Bad Request The given password is invalid.
lack_of_ownership 403 Forbidden The given channel does not belong to the user.
not_found 404 Not Found The given channel does not exist.

Viewer authentication

Viewer Authentication lets you implement custom authentication for authenticating viewers of live and recorded videos served by IBM Video Streaming.

Read detailed documentation

Set up viewer authentication

PUT https://api.video.ibm.com/channels/CHANNEL_ID/locks/hash/advanced.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
url string REQUIRED URL of the authentication flow entry point
secret string REQUIRED Secret key
Response

HTTP response codes returned when the action is successful:

HTTP response code Description
201 Created Viewer authentication has been set up on the channel with the new hash.
204 No Content Viewer authentication has been set up on the channel by updating the existing hash with the new one.

Specific error codes returned when the action failed:

error value HTTP response code Description
invalid_request 400 Bad Request One or more required parameters are missing (secret, url).
invalid_type 400 Bad Request The URL is invalid.
lack_of_ownership 403 Forbidden The api user is not allowed to manage the given channel
not_found 404 Not found Channel not found

Get viewer authentication settings

GET https://api.video.ibm.com/channels/CHANNEL_ID/locks/hash.FORMAT (format can be json or xml)
Parameters

This request has no parameters.

Response

On success, key-value pairs are returned under a "hashlock" key.

Example:


{
    "hashlock": {
        "type": "advanced",
        "url": "https://align.ustream.tv/auth/123",
        "message": null,
        "button_caption": null,
        "popup_width": "0",
        "popup_height": "0"
    }
}
        

Specific error codes returned when the action failed:

error value HTTP response code Description
lack_of_ownership 403 Forbidden The api user is not allowed to manage the given channel
not_found 404 Not found Channel not found

Remove viewer authentication

DELETE https://api.video.ibm.com/channels/CHANNEL_ID/locks/hash.FORMAT (format can be json or xml)
Parameters

This request has no parameters.

Response

On success the 200 OK HTTP response code is returned.

Specific error codes returned when the action failed:

error value HTTP response code Description
lack_of_ownership 403 Forbidden The api user is not allowed to manage the given channel
not_found 404 Not found Channel not found

Embed restriction

By default all IBM Video Streaming channels can be embedded anywhere across the internet. By restricting the embed URLs, you can control the viewing experience and limit distribution to your own preferred partners.

Get embed lock status

GET https://api.video.ibm.com/channels/CHANNEL_ID/locks/embed.FORMAT (format can be json or xml)
Parameters

This request has no parameters.

Response

On success a response with HTTP status 200

key type Description
locked string Returns TRUE if the embed lock is set to the channel, FALSE otherwise
Error codes
error value HTTP response code Error conditions
invalid_request 402 Payment Required If the user does not have the embed_restriction benefit

Edit embed lock

PUT https://api.video.ibm.com/channels/CHANNEL_ID/locks/embed.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
locked string REQUIRED Set embed lock on channel when parameter locked==TRUE, remove embed lock when locked==FALSE
Response

On success a response with HTTP status 204 No Content is returned.

Error codes
error value HTTP response code Error conditions
invalid_request 402 Payment Required If the user does not have the embed_restriction benefit
invalid_request 400 Bad Request If the request parameter is missing or invalid

Get embed lock URL whitelist

GET https://api.video.ibm.com/channels/CHANNEL_ID/locks/embed/allowed-urls.FORMAT (format can be json or xml)
Parameters

This request has no parameters.

Response

On success a response with HTTP status 200

key type Description
allowed_urls array Return the URL list from the allowed URLs embed lock list no matter where it was set. Return empty array if the lock is FALSE.
Error codes
error value HTTP response code Error conditions
invalid_request 402 Payment Required If the user does not have the embed_restriction benefit

Add URL to embed lock URL whitelist

POST https://api.video.ibm.com/channels/CHANNEL_ID/locks/embed/allowed-urls.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
url string REQUIRED Add the url to the URL whitelist

You can only add one URL per API call.

Response

On success a response with HTTP status 201 Created is returned.

Error codes
error value HTTP response code Error conditions
invalid_request 402 Payment Required If the user does not have the embed_restriction benefit
invalid_request 400 Bad Request If the request parameter is missing or invalid

Empty the embed lock URL whitelist

DELETE https://api.video.ibm.com/channels/CHANNEL_ID/locks/embed/allowed-urls.FORMAT (format can be json or xml)
Parameters

This request has no parameters.

Response

On success a response with HTTP status 200 OK is returned.

Error codes
error value HTTP response code Error conditions
invalid_request 402 Payment Required If the user does not have the embed_restriction benefit

Sharing control

By turning this feature on the sharing feature will be removed from the viewer.

PUT https://api.video.ibm.com/channels/CHANNEL_ID/settings/viewer.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
sharing boolean REQUIRED Enable or disable sharing
Response

On success a response with HTTP status 200 OK is returned.

Error Codes
error value HTTP response code Error conditions
invalid_sharing 400 Bad Request The specified sharing is invalid or unsupported.
payment_required 402 Payment Required The user does not have access to control sharing

Whitelabel Broadcasting

Branding control

With co-branding, you can display your brand prominently in the player. With full branding, you can even remove the default IBM Video Streaming watermark. No-branding allows removing the IBM Video Streaming watermark and go with no watermark at all.

Set branding type

PUT https://api.video.ibm.com/channels/CHANNEL_ID/branding.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
type string REQUIRED Branding type

The type parameter must be passed in the HTTP body, not in the URL.

Available branding types
type Description
co Co-branding
full Full-branding
no No branding
Response

On success a response with HTTP status 200 OK is returned.

Error codes
error value HTTP response code Error conditions
invalid_type 400 Bad Request The specified type is invalid or unsupported.
payment_required 402 Payment Required The user does not have access to the specified branding type

Disable branding

DELETE https://api.video.ibm.com/channels/CHANNEL_ID/branding.FORMAT (format can be json or xml)
Parameters

This request has no parameters.

Response

On success a response with HTTP status 200 OK is returned.

Update logo settings

PUT https://api.video.ibm.com/channels/CHANNEL_ID/branding/logo/LOGO_ID/settings.FORMAT (format can be json or xml)

Only 0 is supported as LOGO_ID currently.

Parameters
parameter type importance Description
position string REQUIRED Logo position
Supported values: "top-left", "top-middle", "top-right", "middle-left", "middle-right", "bottom-left", "bottom-middle", "bottom-right"
margin unsigned int REQUIRED Amount of margin
link string REQUIRED Logo click URL (valid URL or empty string)

The type parameter must be passed in the HTTP body, not in the URL.

Response

On success a response with HTTP status 200 OK is returned.

Error codes
error value HTTP response code Error conditions
invalid_position 400 Bad Request The specified position is invalid or unsupported.
invalid_margin 400 Bad Request The specified margin is invalid.
invalid_link 400 Bad Request The specified link is invalid.
payment_required 402 Payment Required The user does not have access to channel branding

Uploading logo

PUT https://api.video.ibm.com/channels/CHANNEL_ID/branding/logo/LOGO_ID.FORMAT (format can be json or xml)

Only 0 is supported as LOGO_ID currently.

Request

The logo must be passed in the HTTP body. Supported image types are image/jpeg, image/png, image/gif, recommended size is maximum 288 x 96 pixels. Maximum file size is 10MB

Response

On success a response with HTTP status 200 OK is returned.

Error codes
error value HTTP response code Error conditions
invalid_file 400 Bad Request The specified file is invalid or unsupported.
invalid_image 400 Bad Request The specified image is invalid.
payment_required 402 Payment Required The user does not have access to channel branding

Channel page control

Your channel and videos will not be found anywhere on ustream.tv. Viewers will only be able to watch embedded players on external websites. If you want the channel to appear only on your own website, make sure to restrict URL embeds to your site as well.

Get page lock setting

GET https://api.video.ibm.com/channels/CHANNEL_ID/locks/page.FORMAT(format can be json or xml)
Parameters

This request has no parameters.

Response

On success a response with HTTP status 200

key type Description
locked string Returns TRUE if the page lock is set to the channel, FALSE otherwise
Error codes
error value HTTP response code Error conditions
invalid_request 402 Payment Required If the user does not have the page_lock benefit

Edit page lock

PUT https://api.video.ibm.com/channels/CHANNEL_ID/locks/page.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
locked string REQUIRED Set page lock on channel when parameter locked==TRUE, remove page lock when locked==FALSE
Response

On success a response with HTTP status 204 No Content is returned.

Error codes
error value HTTP response code Error conditions
invalid_request 402 Payment Required If the user does not have the page_lock benefit
invalid_request 400 Bad Request If the request parameter is missing or invalid

Hide viewer numbers

By setting this feature the viewer number of a live channel will not be visible in the viewer.

PUT https://api.video.ibm.com/channels/CHANNEL_ID/settings/hide-viewers.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
value boolean REQUIRED Enable or disable viewer number hiding
Response

On success a response with HTTP status 200 OK is returned.

Error codes
error value HTTP response code Error conditions
invalid_value 400 Bad Request The specified value is invalid or unsupported.
lack_of_ownership 403 Forbidden The given channel does not belong to the user.

Channel design

Channel page background

Get

Get current background color

GET https://api.video.ibm.com/channels/CHANNEL_ID/design/background.FORMAT (format can be json or xml)
Parameters

This request has no parameters.

Response

Key-value pairs under a "background" key.

key type Description
color string Channel page background color in hex RGB format
Error codes
error value HTTP response code Error conditions
lack_of_ownership 403 Forbidden The api user is not allowed to manage the given channel
not_found 404 Not found Channel not found

Edit background color

PUT https://api.video.ibm.com/channels/CHANNEL_ID/design/background.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
color string REQUIRED Channel page background color in hex RGB format
Response

On success a response with HTTP status 200 OK is returned.

Error codes
error value HTTP response code Error conditions
lack_of_ownership 403 Forbidden The api user is not allowed to manage the given channel
bad_request 400 Bad request If validation fails
not_found 404 Not found Channel not found

Remove settings

DELETE https://api.video.ibm.com/channels/CHANNEL_ID/design/background.FORMAT (format can be json or xml)
Parameters

This request has no parameters.

Response

On success a response with HTTP status 200 OK is returned.

Error codes
error value HTTP response code Error conditions
lack_of_ownership 403 Forbidden The api user is not allowed to manage the given channel
not_found 404 Not found Channel not found

Channel picture

Set channel picture

POST https://api.video.ibm.com/channels/CHANNEL_ID/design/picture.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
picture file REQUIRED The channel picture. The image must be square and less than 1MB
Response

On success a response with HTTP status 204 No Content is returned.

Error codes
error value HTTP response code Error conditions
lack_of_ownership 403 Forbidden The api user is not allowed to manage the given channel
bad_request 400 Bad request Image format or size is wrong

Remove channel picture

DELETE https://api.video.ibm.com/channels/CHANNEL_ID/design/picture.FORMAT (format can be json or xml)
Parameters

This request has no parameters.

Response

On success a response with HTTP status 200 OK is returned.

Error codes
error value HTTP response code Error conditions
lack_of_ownership 403 Forbidden The api user is not allowed to manage the given channel

Channel featured videos

Channel featured videos is a list of videos that can be shown on the channel page, under the featured videos tab.

List the channel featured videos

GET https://api.video.ibm.com/channels/CHANNEL_ID/featured-videos.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
page integer OPTIONAL Requested page number (1 by default)
pagesize integer OPTIONAL Requested page size (50 by default, max 50)
detail_level string OPTIONAL Verbosity level. Possible value: "minimal". In case of minimal verbosity level the result set is limited to id, and links data. If the channel is protected (see security section), only minimal data can be retrieved without a valid access token.
Response

A list of key-value pairs under a "videos" key.

⚠️ The "media_urls" field below is being deprecated. For video download URLs please see the Downloading videos section. ⚠️

Example:

{
"videos": [{
		"id": "111",
		"title": "Title of video",
		"description": "Description of video",
		"url": "http://www.ustream.tv/recorded/111",
		"length": "12345.123456",
		"created_at": 1399388736,
		"added_at": 1399388736,
		"file_size": "120000",
		"views": 0,
		"thumbnail": {
			"default": "https://ustvstaticcdn1-a.akamaihd.net/111.jpg"
		},
		"media_urls": {
			"flv": "http://tcdn.ustream.tv/video/111"
		},
		"links": {
			"channel": {
				"href": "https://api.video.ibm.com/channels/1.json",
				"id": "1"
			}
		}
	},
	...
	]
}

Minimal response example:

{
"video": {
		"id": "111",
		"links": {
			"channel": {
				"href": "https://api.video.ibm.com/channels/1.json",
				"id": "1"
			}
		}
	}
}

Explanation of some values:

key type Description
length string Video length in seconds
created_at timestamp The date and time when the video was created (Unix timestamp). By default, it has the same value as the "added_at" field, but it can be edited by channel admins to better reflect the real content creation date and time for the viewers.
added_at timestamp The date and time when the video was added (uploaded or recorded) to IBM Video Streaming (Unix timestamp).
file_size string Video file size in bytes

The paging information can be found under the "paging" key. Example:

{
"paging": {
		"previous": "https://api.video.ibm.com/channels/CHANNEL_ID/featured-videos.json?pagesize=PAGE_SIZE&page=PREVIOUS_PAGE",
		"next": "https://api.video.ibm.com/channels/CHANNEL_ID/featured-videos.json?pagesize=PAGE_SIZE&page=NEXT_PAGE",
		"page_count": 8,
		"item_count": 38
	}
}
Error codes
error value HTTP response code Error conditions
not_found 404 Not found

This error code is returned in the following cases:

  • The channel does not exist.
  • The featured videos on the channel are not shown.

Update featured videos of the channel

PUT https://api.video.ibm.com/channels/CHANNEL_ID/featured-videos.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
video_ids array REQUIRED Video IDs to be added to the channel featured videos.

Example:

POST /channels/CHANNEL_ID/featured-videos.json HTTP/1.1
Host: api.video.ibm.com
Authorization: Bearer 3c2573673b782f6544405a22636f3d5d3b6f3950
Content-Type: application/x-www-form-urlencoded

video_ids[]=111&video_ids[]=222

The token in the request above is only an example.

Successful response

The response will contain the following collection limit headers:

Header Type Description
X-Collection-Limit int The maximum number of videos that can be featured on a channel.
X-Collection-Remaining int How many more videos can be featured on the channel.
Error codes
error value HTTP response code Error conditions
invalid_token 401 Authorization required The provided Access Token is missing, revoked, expired or malformed.
permission_denied 403 Permission denied The authenticated user does not have access to the channel or one of the videos.
not_found 404 Not found The channel does not exist.
limit_reached 413 Request entity too large The number of videos in the featured videos list have reached the limit. Check the returned collection limit headers.

Stream settings

Multi quality streaming

By turning this feature on your stream will be transcoded to several versions with different quality settings.

PUT https://api.video.ibm.com/channels/CHANNEL_ID/settings/multi-quality.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
value boolean REQUIRED Enable or disable multi quality in viewer
Response

On success a response with HTTP status 200 OK is returned.

Error codes
error value HTTP response code Error conditions
invalid_value 400 Bad Request The specified value is invalid or unsupported.
payment_required 402 Payment Required The user does not have access to control multi quality

Recording

Start/stop recording

During broadcast clients can control recorder on an owned channel. There's no direct feedback on the results of the operation.

POST https://api.video.ibm.com/channels/CHANNEL_ID/recorder.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
command string REQUIRED The command should be "start" or "stop"
Response

On success a response with HTTP status "202 Accepted" is returned.

On the stop command the response body will contain information about the resulting video (id and API resource uri)

Example usage:

POST /channels/42/recorder.json HTTP/1.1
Host: api.video.ibm.com
Authorization: Bearer 3c2573673b782f6544405a22636f3d5d3b6f3950
Content-Type: application/x-www-form-urlencoded

command=stop

Example reponse (for stop command):

{
	"video": {
		"id": 11111,
		"url": "https://api.video.ibm.com/videos/11111.json"
	}
}

Getting recording status

During broadcast you can ask for that information using the GET HTTP method on the same resource.

GET https://api.video.ibm.com/channels/CHANNEL_ID/recorder.FORMAT(format can be json or xml)

Example reponse:

{
	"video": {
		"id": "11111",
		"url": "https://api.video.ibm.com/videos/11111.json"
	}
}

Autorecord

Videos can be automatically created when broadcasting. The behaviour can be controlled by this resource.

PUT https://api.video.ibm.com/channels/CHANNEL_ID/settings/autorecord.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
value string REQUIRED Possible values: disabled, private, public. If the value is disabled, no auto-recorded video gets created for the channel when broadcasting. If the value is private, then the new auto-record will be private by default. In case of public the created auto-records will be public by default.
Response

On success a response with HTTP status 200 OK is returned.

Error codes
error value HTTP response code Error conditions
invalid_value 400 Bad Request The specified value is invalid or unsupported.
payment_required 402 Payment Required The user does not have access to control autorecord settings

Getting record time limit

Gets the maximum allowed length of recorded videos for the channel.

GET https://api.video.ibm.com/channels/CHANNEL_ID/limits/recording.FORMAT (format can be json or xml)
Parameters

This request has no parameters.

Response
key type Description
time integer record time limit in seconds
Error codes
error value HTTP response code Error conditions
lack_of_ownership 403 Forbidden The given channel does not belong to the user.
not_found 404 Not Found The given channel does not exist.

Video

Listing the videos of a channel

Get a detailed list of the videos of a channel

GET https://api.video.ibm.com/channels/CHANNEL_ID/videos.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
page integer OPTIONAL Requested page number (1 by default)
pagesize integer OPTIONAL Requested page size (50 by default, max 50)
q string OPTIONAL Search for text in video related data. Only works for public videos, and if no filter parameter is set.
sort string OPTIONAL Order the videos. Possible values: "recent" (orders based on the "created_at" field), "popular" (orders based on the "views" field). The default value is "recent".
filter set OPTIONAL Filter videos by protection levels. Values: public, private (default: public). The name of the parameter set should filter[protect], and the values should be comma separated without whitespace included.
Response

A list of key-value pairs under a "videos" key.

⚠️ The "media_urls" field below is being deprecated. For video download URLs please see the Downloading videos section. ⚠️

Example:

{
	"videos": [
		{
			"id": "111",
			"title": "Title of video",
			"description": "Description of video",
			"url": "http://www.ustream.tv/recorded/111",
			"length": "12345.123456",
			"created_at": 1399388736,
			"added_at": 1399388736,
			"file_size": "120000",
			"views": 0,
			"thumbnail": {
				"default": "https://ustvstaticcdn1-a.akamaihd.net/111.jpg",
				"image_192x108": "https://ustvstaticcdn1-a.akamaihd.net/111.jpg",
				"image_112x63": "https://ustvstaticcdn1-a.akamaihd.net/111.jpg",
				"image_128x72": "https://ustvstaticcdn1-a.akamaihd.net/111.jpg",
				"image_256x144": "https://ustvstaticcdn1-a.akamaihd.net/111.jpg",
				"image_320x180": "https://ustvstaticcdn1-a.akamaihd.net/111.jpg",
				"image_640x360": "https://ustvstaticcdn1-a.akamaihd.net/111.jpg",
				"image_1920x1080": "https://ustvstaticcdn1-a.akamaihd.net/111.jpg"
			},
			"media_urls": {
				"flv": "http://tcdn.ustream.tv/video/111"
			},
			"links": {
				"channel": {
					"href": "https://api.video.ibm.com/channels/1.json"
				}
			},
			"caption_matches": [
				{
					"start_sec": 31.01,
					"end_sec": 35.7,
					"caption": "of are actually tying your shoes incorrectly yeah yeah"
				},
				{
					"start_sec": 46.81,
					"end_sec": 48.85,
					"caption": "for me very expensive pair of shoes"
				},
				{
					"start_sec": 49.09,
					"end_sec": 51.88,
					"caption": "but those shoes came with round nylon laces"
				}
			]
		},
		...
	]
}

Explanation of some values:

key type Description
length string Video length in seconds
created_at timestamp The date and time when the video was created (Unix timestamp). By default, it has the same value as the "added_at" field, but it can be edited by channel admins to better reflect the real content creation date and time for the viewers.
added_at timestamp The date and time when the video was added (uploaded or recorded) to IBM Video Streaming (Unix timestamp).
file_size string Video file size in bytes
caption_matches array of matched captions This field is only present if the q parameter is used. The result set contains captions matching the search query along with their start and end time ("start_sec" and "end_sec" fields respectively). Only maximum of 100 matching captions are returned.

The paging information can be found under the "paging" key. Example:

{
	"paging": {
		"previous": "https://api.video.ibm.com/CHANNEL_ID/videos.json?pagesize=PAGE_SIZE&page=PREVIOUS_PAGE",
		"next": "https://api.video.ibm.com/channels/CHANNEL_ID/videos.json?pagesize=PAGE_SIZE&page=NEXT_PAGE"
	}
}
Error codes
error value HTTP response code Error conditions
invalid_token 401 Authorization required The video list is protected, only the owner with a valid token can access it.
not_found 404 Not Found The given channel does not exist.

Listing the videos of the user

Get a detailed list of the videos of the user

GET https://api.video.ibm.com/users/self/videos.FORMAT (format can be json or xml)
Parameters

For parameters and example response, please see the previous section, "Listing the videos of a channel", as it is the same in this case.

Video details

Get video details

GET https://api.video.ibm.com/videos/VIDEO_ID.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
detail_level string OPTIONAL Verbosity level. Possible values: "minimal", "owner". In case of the minimal verbosity level, the result set is limited to the "id", and "links" fields. If the channel is protected (see security section), only minimal data can be retrieved without a valid access token. By default (by omitting or leaving the parameter empty) all insensitive information will be retrieved. The "owner" detail level always requires a valid access token, and it will also return more sensitive information about the video (for example the DHLS link if this feature is available for you).
Response

Key-value pairs under a "video" key.

⚠️ The "media_urls" field below is being deprecated. For video download URLs please see the Downloading videos section. ⚠️

Example:

{
	"video": {
		"id": "111",
		"title": "Title of video",
		"description": "Description of video",
		"url": "http://www.ustream.tv/recorded/111",
		"length": "12345.123456",
		"created_at": 1399388736,
		"added_at": 1399388736,
		"file_size": "120000",
		"views": 0,
		"thumbnail": {
			"default": "https://ustvstaticcdn1-a.akamaihd.net/111.jpg"
		},
		"media_urls": {
			"flv": "http://tcdn.ustream.tv/video/111"
		},
		"stream": {
			"dhls": "http://111-recorded-hls.ums.ustream.tv/playlist/directhls/recorded/111/playlist.m3u8?sgn=123",
		},
		"links": {
			"channel": {
				"href": "https://api.video.ibm.com/channels/1.json",
				"id": "1"
			}
		}
	}
}

Minimal response example:

{
	"video": {
		"id": "111",
		"links": {
			"channel": {
				"href": "https://api.video.ibm.com/channels/1.json",
				"id": "1"
			}
		}
	}
}

Explanation of some values:

key type Description
length string Video length in seconds
created_at timestamp The date and time when the video was created (Unix timestamp). By default, it has the same value as the "added_at" field, but it can be edited by channel admins to better reflect the real content creation date and time for the viewers.
added_at timestamp The date and time when the video was added (uploaded or recorded) to IBM Video Streaming (Unix timestamp).
file_size string Video file size in bytes
stream.dhls string A direct HTTP link to the HLS stream if this feature is available for you and the "owner" detail_level was specified.
Error codes
error value HTTP response code Error conditions
not_found 404 Not Found The given video does not exist.

Edit video details

PUT https://api.video.ibm.com/videos/VIDEO_ID.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
title string OPTIONAL Video title
description string OPTIONAL Video description
protect string OPTIONAL Video protection level. Possible values: public, private
Response

On success a response with HTTP status 200 OK is returned.

Error codes
error value HTTP response code Error conditions
invalid_value 400 Bad Request The specified value is invalid or unsupported.
lack_of_ownership 403 Forbidden The given video does not belong to the user.
not_found 404 Not Found The given video does not exist.

Downloading videos

You can download your own videos using this API resource. It provides info on the downbloadable version of your video. You have to provide an access token since it only works for videos you own.

GET https://api.video.ibm.com/videos/VIDEO_ID/downloadable/VIDEO_FORMAT.FORMAT (format can be json or xml)

The query parameter VIDEO_FORMAT could be mp4 or flv.

Response

Key-value pairs under a "downloadable" key with details of the status of the downloadable item. Example:

{
    "downloadable": {
        "download_url":"https://download.domain/example_download_path?download_parameters",
        "expires_at":1471363639,
        "status":"available"
    }
}

The property called download_url holds the download URL could be used to download the video file. It could be null if the downloadable version is not available.

The expires_at property contains a Unix timestamp of the moment when the downloadable version will expire. For never expiring downloadable videos this property will be null.

status represents the state of the downloadable video, it could be:

  • available if the video is ready to download.
  • unavailable if the downloadable version is not (yet) available.
  • pending if the process of generation downloadable version is in progress.

Example call

GET /videos/123456/downloadable/mp4.json HTTP/1.1
Host: api.video.ibm.com
Authorization: Bearer 782f6544405a22636f3d5d3b63c2573673bf3950

{
    "downloadable": {
        "download_url":"https://download.domain/example_download_path?download_parameters",
        "expires_at":1471363639,
        "status":"available"
    }
}

Requesting a downloadable version of a video

In some cases the downloadable version of a video is not always available. You have to request us to generate a temporary video file for download. The workflow is the following:

  1. Use this call to request a downloadable file
  2. Poll the same API resource for status updates
  3. Use the value of the download_url property as soon as it is available

You have 24 hours to download the video file right after it's available. Please refer the property expires_at for the proper timing.

Requesting a downloadable version is only an emtpy POST on the downloadable video resource. You have to provide an access token since it only works for videos you own.

POST https://api.video.ibm.com/videos/VIDEO_ID/downloadable/VIDEO_FORMAT.FORMAT (format can be json or xml)

The query parameter VIDEO_FORMAT could be mp4 or flv .

If everything works as expected, you'll instantly get the same response format as the GET version provides, but the property status will be pending or available.

Example call

POST /videos/123456/downloadable/mp4.json HTTP/1.1
Host: api.video.ibm.com
Authorization: Bearer 782f6544405a22636f3d5d3b63c2573673bf3950

{
    "downloadable": {
        "download_url":null,
        "expires_at":null,
        "status":"pending"
    }
}

Uploading videos

Videos can be uploaded by FTP. To upload a file you must do the following steps:

  1. Initiate an upload process by an API call. In the response you can find the details of the FTP connect.
  2. Upload the video.
  3. When the upload is finished, send a "file in place" signal, which tells to our server that it can start process the file.
  4. Call the API to check the status of the processing.

Initializing an upload

POST https://api.video.ibm.com/channels/CHANNEL_ID/uploads.FORMAT?type=videoupload-ftp (format can be json or xml)
Parameters
parameter type importance Description
title string OPTIONAL Video title
description string OPTIONAL Video description
protect integer OPTIONAL Level of protection
Response

Key-value pairs with details of the ftp access. Example:

{
	"protocol":"ftp",
	"host":"sjc03-vod-upload02.services.video.ibm.com",
	"port":21,
	"path":"/1_12345_12345678901234",
	"user":"1_12345_1234567890",
	"password":"ftppw",
	"videoId":"52177361",
	"url":"ftp://1_1234_1234567890:ftppw@sjc03-vod-upload02.services.video.ibm.com/1_12345_12345678901234"
}
Error codes
error value HTTP response code Error conditions
not_found 404 Not Found The given channel does not exist.
protect_level_invalid 400 Bad request Invalid protect level has been sent

Uploading the video file

Using the credentials in the response above, you can upload your video file to our servers. Once you log in to the FTP server, you should put your file to the root, under a name that matches with the path value of the response, followed by the extension.

The url part of the response makes it easier to transfer files, with a single FTP command. For example if you have a file called test.mov, you can use the following FTP command to upload it:

ftp -u ftp://1_1234_1234567890:ftppw@sjc03-vod-upload02.services.video.ibm.com/1_12345_12345678901234 test.mov

Or using the cURL command:

curl ftp://1_1234_1234567890:ftppw@sjc03-vod-upload02.services.video.ibm.com/1_12345_12345678901234 -v -T test.mov

Supported file extensions are: mp4, mov, flv.

Don't forget to set your FTP client to binary file transfer mode, before uploading the video file.

Sending "file in place" signal

PUT https://api.video.ibm.com/channels/CHANNEL_ID/uploads/VIDEO_ID.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
status string REQUIRED Upload status (it should be "ready")
Response

On success a response with HTTP status 202 Accepted is returned.

Error codes
error value HTTP response code Error conditions
not_found 404 Not Found The given channel does not exist.

Check status of processing

GET https://api.video.ibm.com/channels/CHANNEL_ID/uploads/VIDEO_ID.FORMAT (format can be json or xml)
Parameters

This request has no parameters.

Response

A key-value pair with details of the status. Example:

{
	"status":"transferred"
}
Available statuses
  • initiated
  • transferred
  • queued
  • pending
  • transcoding
  • complete
  • error
Error codes
error value HTTP response code Error conditions
not_found 404 Not Found The given channel does not exist.

Deleting a video

Permanently delete a video from the current account.

DELETE https://api.video.ibm.com/videos/VIDOE_ID.FORMAT (format can be json or xml)
Parameters

This request has no parameters.

Response

On success a response with HTTP status 200 OK is returned.

Error codes
error value HTTP response code Error conditions
lack_of_ownership 403 Forbidden The given video does not belong to the user.
not_found 404 Not Found The given video does not exist.

Video expiration

A video gets deleted when expires. These videos can be saved by setting the time of the expiration.

Getting video expiration

GET https://api.video.ibm.com/videos/VIDEO_ID/expiration.FORMAT (format can be json or xml)
Parameters

This request has no parameters.

Response

On success a response with HTTP status 200 OK is returned.

key type Description
rule string Valid values: never, at_given_time
expires_at timestamp If rule field is at_given_time, expires_at contains the Unix timestamp of the expiration. If the rule is never, expires_at field is not provided.
Error codes
error value HTTP response code Error conditions
lack_of_ownership 403 Forbidden The api user is not allowed to manage the given channel
forbidden 403 Forbidden Managing the expiration is disabled at system level or user has no permission to manage the expiration of videos.
not_found 404 Not found The specified video_id does not exist

Setting video expiration

PUT https://api.video.ibm.com/videos/VIDEO_ID/expiration.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
rule string REQUIRED Supported value: never.
Response

On success a response with HTTP status 200 OK is returned.

Error codes
error value HTTP response code Error conditions
bad_request 400 Bad request Invalid request body: either rule is not provided or rule value is not valid.
lack_of_ownership 403 Forbidden The api user is not allowed to manage the given channel
forbidden 403 Forbidden Setting the expiration is disabled at system level or user has no permissions to modify the expiration of videos.
not_found 404 Not found The specified video_id does not exist

List all video metadata values

GET https://api.video.ibm.com/videos/VIDEO_ID/custom-metadata.FORMAT (format can be json or xml)
Response

On success a response with HTTP status 200 OK is returned.

key type Description
metadata array

Array of values

key type Description
field_id string Field id
value string Metadata value
Error codes
error value HTTP response code Error conditions
unauthorized 401 Unauthorized The channel is locked.
not_found 404 Not found Non-existent resource

Set video metadata value

PUT https://api.video.ibm.com/videos/VIDEO_ID/custom-metadata/FIELD_ID.json
Parameters
parameter type importance Description
value mixed REQUIRED The metadata field value
Examples

See at the Set channel metadata value section

Response

On success save a response with HTTP status 204 is returned.

Error codes
error value HTTP response code Error conditions
unauthorized 401 Unauthorized The channel is locked.
unauthorized 404 not found Non-existent resource

Remove video metadata value

DELETE https://api.video.ibm.com/videos/VIDEO_ID/custom-metadata/FIELD_ID.json
Response

On success a response with HTTP status 200 OK is returned.

Error codes
error value HTTP response code Error conditions
unauthorized 401 Unauthorized The channel is locked.
unauthorized 404 not found Non-existent resource

Video thumbnail

You can set a video thumbnail by uploading a picture or selecting a frame. The picture should be less than 10 MB in size and smaller than 4000x4000px.

Uploading a thumbnail

You can upload a thumbnail via multipart requests (multipart/form-data). The field name must be "thumbnail". JPG, PNG and GIF file formats are supported.

POST https://api.video.ibm.com/videos/VIDEO_ID/thumbnail.FORMAT (format can be json or xml)
Example request with cURL:
curl \
	-X POST 'https://api.video.ibm.com/videos/123456/thumbnail.json' \
	-H 'Authorization: Bearer abcdef123456' \
	-F 'thumbnail=@thumbnail.jpg;type=image/jpeg'

You can use the -v or the --trace thumbnail.jpg options to debug your request.

Response

On success a response with HTTP status 204 No content is returned.

Selecting a frame

POST https://api.video.ibm.com/videos/VIDEO_ID/thumbnail/frame.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
position float REQUIRED The position of the selected frame in seconds.
Response

On success a response with HTTP status 204 No content is returned.

Video labels

A video can have multiple labels. With these API calls you can add and remove labels to/from a video.

Creating a new label

POST https://api.video.ibm.com/users/self/labels.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
label_name string REQUIRED The name of the label.
Response

A list of key-value pairs under a "label" key. Example:

{
	"label": {
		"18010": {
			"label_id": 18010,
			"label_name": "labelname",
			"label_color": "color-5"
		}
	}
  }

Listing labels

GET https://api.video.ibm.com/users/self/labels.FORMAT (format can be json or xml)
Parameters

None.

Response

A list of key-value pairs under a "labels" key. Example:

{
	"labels": {
		"18010": {
		"label_id": 18010,
		"label_name": "labelname",
		"label_color": "color-5"
		},
		...
	}
}

Modifying a label

PUT https://api.video.ibm.com/users/self/label/LABEL_ID.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
label_name string REQUIRED The name of the label.
Response

On success a response with HTTP status 204 No content is returned.

Deleting a label

DELETE https://api.video.ibm.com/users/self/label/LABEL_ID.FORMAT (format can be json or xml)
Parameters

None.

Response

On success a response with HTTP status 204 No content is returned.

Adding labels to a video

PUT https://api.video.ibm.com/videos/VIDEO_ID/labels.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
label_ids array REQUIRED The label ids to add to the video.
Response

On success a response with HTTP status 204 No content is returned.

Removing labels from a video

DELETE https://api.video.ibm.com/videos/VIDEO_ID/labels.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
label_ids array REQUIRED The label ids to remove from the video.
Response

On success a response with HTTP status 204 No content is returned.

Getting the labels of a video

GET https://api.video.ibm.com/videos/VIDEO_ID/labels.FORMAT (format can be json or xml)
Parameters

None.

Response

A list of key-value pairs under a "labels" key. Example:

{
	"labels": {
		"18010": {
		"label_id": 18010,
		"label_name": "labelname",
		"label_color": "color-5"
		},
		...
	}
}

Video caption

List all captions of a video.

GET https://api.video.ibm.com/videos/VIDEO_ID/captions.FORMAT (format can be json or xml)
Parameters

None.

Response

A list of key-value pairs under a "captions" key. Example:

{
    "captions": [
        {
            "is_default": true,
            "is_visible": false,
            "language": "en-00",
            "status": "active",
            "video_id": "10001"
        },
        {
            "is_default": false,
            "is_visible": false,
            "language": "en-UK",
            "status": "processing",
            "video_id": "10001"
        }
    ]
}
Error codes
error value HTTP response code Error conditions
unauthorized 401 Authorization required The video is protected, only the owner with a valid token can access it.
lack_of_ownership 403 Forbidden The given video does not belong to the user.
not_found 404 Not Found The given video does not exist.

Show caption details

GET https://api.video.ibm.com/videos/VIDEO_ID/captions/LANGUAGE.FORMAT (format can be json or xml)
Response

Key-value pairs under a "caption" key. Example:

{
	"caption": {
		"is_default": true,
		"is_visible": false,
		"language": "en-00",
		"status": "active",
		"video_id": "10001"
	}
}

Explanation of some values:

key type Description
status string Possible values: processing and active
Error codes
error value HTTP response code Error conditions
unauthorized 401 Authorization required The video is protected, only the owner with a valid token can access it.
lack_of_ownership 403 Forbidden The given video does not belong to the user.
not_found 404 Not Found The given video or caption does not exist.

Modify caption details

Modify caption details for a given language

PUT https://api.video.ibm.com/videos/VIDEO_ID/captions/LANGUAGE.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
is_visible boolean Whether the video player should show this caption.
is_default boolean Whether the video player should automatically show this caption. A video can only have one default caption.

Example:

PUT videos/VIDEO_ID/captions/en-00.json HTTP/1.1
Host: api.video.ibm.com
Authorization: Bearer xxxxxxxxxxxxxx
Content-Type: application/x-www-form-urlencoded

is_visible=1&is_default=0

The token in the request above is only an example.

Response

On success a response with response HTTP status 200 is returned. Example:

{
	"caption": {
		"is_default": true,
		"is_visible": false,
		"language": "en-00",
		"status": "active",
		"video_id": "10001"
	}
}

Explanation of some values:

key type Description
status string Possible values: processing and active
Error codes
error value HTTP response code Error conditions
unauthorized 401 Authorization required The video is protected, only the owner with a valid token can access it.
lack_of_ownership 403 Forbidden The given video does not belong to the user.
not_found 404 Not Found The given video or caption does not exist.

Download vtt file

GET https://api.video.ibm.com/videos/VIDEO_ID/captions/LANGUAGE/vtt
Response

The file content in WebVTT format. Example:

WEBVTT

00:09.000 --> 00:11.000
We are in New York City
Error codes
error value HTTP response code Error conditions
unauthorized 401 Authorization required The video is protected, only the owner with a valid token can access it.
lack_of_ownership 403 Forbidden The given video does not belong to the user.
not_found 404 Not Found The given video or caption does not exist.

Upload a caption

Create a new caption for the given video

PUT https://api.video.ibm.com/videos/VIDEO_ID/captions/LANGUAGE/vtt

Example:

PUT videos/VIDEO_ID/captions/en-00/vtt HTTP/1.1
Host: api.video.ibm.com
Authorization: Bearer xxxxxxxxxxxxxx
Content-Type: text/vtt

WEBVTT

00:09.000 --> 00:11.000
We are in New York City

The token in the request above is only an example.

Response
Error codes
error value HTTP response code Error conditions
unauthorized 401 Authorization required The video is protected, only the owner with a valid token can access it.
lack_of_ownership 403 Forbidden The given video does not belong to the user.
not_found 404 Not Found The given video or caption does not exist.
not_valid_vtt 400 Bad Request The caption has errors.

List possible languages

GET https://api.video.ibm.com/caption-languages.FORMAT (format can be json or xml)
Parameters

None.

Response

A list of key-value pairs under a "languages" key. Example:

{
    "languages": [
        {
            "code": "en-00",
            "name": "English"
        },
        {
            "code": "en-US",
            "name": "English (US)"
        },
        {
            "code": "en-UK",
            "name": "English (UK)"
        }
    ]
}

Video trim

You can set video playback start and end point in seconds. Trimming does not affect the original video file.

Set trim

Please note that unsaved auto-recorded videos will become saved when trimming them.

PUT https://api.video.ibm.com/videos/VIDEO_ID/trim.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
start integer REQUIRED Trim video from this second
end integer REQUIRED Trim video until this second
Response

On success a response with HTTP status 204 No content is returned.

Error codes
error value HTTP response code Error conditions
bad_request 400 Bad request Invalid start or end time (minimum trim length is 10 seconds)

Get trim

GET https://api.video.ibm.com/videos/VIDEO_ID/trim.FORMAT (format can be json or xml)
Parameters

None.

Response

On success a response with HTTP status 200 OK is returned.

key type Description
start integer Video trimmed from this second
end integer Video trimmed until this second
{
	"trim": {
		"start": 323,
		"end": 252
  	}
}

Remove trim

DELETE https://api.video.ibm.com/videos/VIDEO_ID/trim.FORMAT (format can be json or xml)
Parameters

None.

Response

On success a response with HTTP status 200 OK is returned.

Video copy

Save a part of on existing video as a new video. The new video will be available on same channel as the original one and it will be unpublished by default.

Create copy

Copy is an async process, you will get a request id in the response.

POST https://api.video.ibm.com/videos/VIDEO_ID/copy.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
start integer REQUIRED Copy video from this second
end integer REQUIRED Copy video until this second
title string REQUIRED Title of the new video
description string OPTIONAL Description of the new video
Response

On success a response with HTTP status 202 Accepted is returned.

key type Description
request_id string ID of the copy request
status_url string URL where you can check the status of the copy request
Error codes
error value HTTP response code Error conditions
bad_request 400 Bad request Invalid copy parameters (minimum copy length is 10 seconds)

Check copy status

GET https://api.video.ibm.com/videos-copy-status/REQUEST_ID.FORMAT (format can be json or xml)
Response

On success a response with HTTP status 200 OK is returned.

key type Description
is_finished boolean Status of the copy process
video_id integer ID of the new video
video_url string The URL of the new video resource

Video chapters

Get video chapters

GET https://api.video.ibm.com/videos/VIDEO_ID/chapters.FORMAT (format can be json or xml)
Response

A list of key-value pairs under a "chapters" key.

Example:

{
	"chapters": [
    	{
            "id": "1",
            "title": "First chapter",
            "position": 10
    	},
    	{
            "id": "2",
            "title": "Second chapter",
            "position": 60
    	}
	]
}

Explanation of some values:

key type Description
position float The beginning of the chapter, provided in seconds.
Error codes
error value HTTP response code Error conditions
unauthorized 401 Authorization required The video is protected, only the owner with a valid token can access it.
lack_of_ownership 403 Forbidden The given video does not belong to the user.
not_found 404 Not Found The given video does not exist.

Add new chapter to the video

POST https://api.video.ibm.com/videos/VIDEO_ID/chapters.FORMAT (format can be json or xml)
parameter type importance Description
title string REQUIRED Chapter title
position int REQUIRED Chapter position in seconds
Response

On success a response with HTTP status 201 Created is returned.

Error codes
error value HTTP response code Error conditions
invalid_value 400 Bad Request The specified value is invalid or unsupported.
unauthorized 401 Authorization required Only the video's owner with a valid token can create new chapters.
lack_of_ownership 403 Forbidden The given video does not belong to the user.
not_found 404 Not Found The given video does not exist.

Delete all chapters of a video

DELETE https://api.video.ibm.com/videos/VIDEO_ID/chapters.FORMAT (format can be json or xml)
Response

On success a response with HTTP status 200 OK is returned.

Error codes
error value HTTP response code Error conditions
unauthorized 401 Authorization required Only the video's owner with a valid token can delete chapters.
lack_of_ownership 403 Forbidden The given video does not belong to the user.
not_found 404 Not Found The given video does not exist.

Get chapter info

GET https://api.video.ibm.com/videos/VIDEO_ID/chapters/CHAPTER_ID.FORMAT (format can be json or xml)
Response

Key-value pairs under a "chapter" key.

Example:

{
	"chapter": {
		"id": "1",
		"title": "First chapter",
		"position": 10
	}
}

Explanation of some values:

key type Description
position float The beginning of the chapter, provided in seconds.
Error codes
error value HTTP response code Error conditions
unauthorized 401 Authorization required The given video is private or the channel is protected. A valid token is required.
lack_of_ownership 403 Forbidden The given video is private or the channel is protected and the video does not belong to the user.
not_found 404 Not Found The given video chapter does not exist.

Modify video chapter

PUT https://api.video.ibm.com/videos/VIDEO_ID/chapters/CHAPTER_ID.FORMAT (format can be json or xml)
parameter type importance Description
title string REQUIRED Chapter title
position int REQUIRED Chapter position in seconds
Response

On success a response with HTTP status 200 OK is returned.

Error codes
error value HTTP response code Error conditions
invalid_value 400 Bad Request The specified value is invalid or unsupported.
unauthorized 401 Authorization required Only the video's owner with a valid token can modify chapters.
lack_of_ownership 403 Forbidden The given video does not belong to the user.
not_found 404 Not Found The given video or chapter does not exist.

Delete video chapter

DELETE https://api.video.ibm.com/videos/VIDEO_ID/chapters/CHAPTER_ID.FORMAT (format can be json or xml)
Response

On success a response with HTTP status 200 OK is returned.

Error codes
error value HTTP response code Error conditions
invalid_value 400 Bad Request The specified value is invalid or unsupported.
unauthorized 401 Authorization required Only the video's owner with a valid token can delete chapters.
lack_of_ownership 403 Forbidden The given video does not belong to the user.
not_found 404 Not Found The given video or chapter does not exist.

Playlists

Playlist settings

You can check whether playlists are enabled or disabled on the channel page.

GET https://api.video.ibm.com/channels/CHANNEL_ID/settings/playlists.FORMAT (format can be json or xml)
Response

A successful response contains the "is_enabled" key.

Example:

{
    "success": true,
    "is_enabled": true
}
Error codes
error value HTTP response code Error conditions
invalid_token 401 Unauthorized The provided Access Token is missing, revoked, expired or malformed
permission_denied 403 Permission denied The authenticated user does not have access to the channel.

Enabling or disabling playlists on a channel

By turning this feature on, playlists will be visible on your channel page.

PUT https://api.video.ibm.com/channels/CHANNEL_ID/settings/playlists.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
value boolean REQUIRED Enable or disable playlists on the given channel.
Response

On success a response with HTTP status 200 OK is returned.

Error codes
error value HTTP response code Error conditions
bad_request 400 Bad request Invalid value was supplied: it can be either 'true' or 'false'.
invalid_token 401 Unauthorized The provided Access Token is missing, revoked, expired or malformed
permission_denied 403 Permission denied The authenticated user does not have access to the channel.

Listing the playlists of a channel

GET https://api.video.ibm.com/channels/CHANNEL_ID/playlists.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
page integer OPTIONAL Requested page number (1 by default)
pagesize integer OPTIONAL Requested page size (50 by default, max 50)
filter[include_empty] integer OPTIONAL If the value is true then empty playlists will be returned (false by default)
Response

A list of key-value pairs under a "playlists" key. Example:

{
	"playlists": [
		{
			"id": "111",
			"title": "Title of a playlist",
			"total_duration": "176.256",
			"thumbnail": {
				"default": "https://ustvstaticcdn1-a.akamaihd.net/111.jpg",
				"image_192x108": "https://ustvstaticcdn1-a.akamaihd.net/111.jpg",
				"image_112x63": "https://ustvstaticcdn1-a.akamaihd.net/111.jpg",
				"image_128x72": "https://ustvstaticcdn1-a.akamaihd.net/111.jpg",
				"image_256x144": "https://ustvstaticcdn1-a.akamaihd.net/111.jpg",
				"image_320x180": "https://ustvstaticcdn1-a.akamaihd.net/111.jpg",
				"image_640x360": "https://ustvstaticcdn1-a.akamaihd.net/111.jpg",
				"image_1920x1080": "https://ustvstaticcdn1-a.akamaihd.net/111.jpg"
			},
			"created_at": 1484127917,
			"updated_at": 1486569501,
			"channel_id": 11223344
		},
		...
	]
}

Explanation of some values:

key type Description
total_duration string The sum of the duration of the videos added to the playlist in seconds.

The paging information can be found under the "paging" key. Example:

"paging": {
	"previous": "https://api.video.ibm.com/channels/CHANNEL_ID/playlists.json?pagesize=PAGE_SIZE&page=PREVIOUS_PAGE",
	"next": "https://api.video.ibm.com/channels/CHANNEL_ID/playlists.json?pagesize=PAGE_SIZE&page=NEXT_PAGE",
	"page_count": 8,
	"item_count": 38
}
Error codes
error value HTTP response code Error conditions
not_found 404 Not found The channel does not exists or the playlists are not shown on the channel page.

Creating a playlist

POST https://api.video.ibm.com/channels/CHANNEL_ID/playlists.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
title string REQUIRED The title of the playlist.
is_enabled int OPTIONAL Whether the playlist is enabled or not. Values: 1 (enabled), 0 (disabled). (1 by default)

Example:

POST playlists.json HTTP/1.1
Host: api.video.ibm.com
Authorization: Bearer 3c2573673b782f6544405a22636f3d5d3b6f3950
Content-Type: application/x-www-form-urlencoded

title=API+Testing+Playlist&is_enabled=1

The token in the request above is only an example.

Successful response

The response will contain the following headers:

Header Type Meaning
Location string The URL of the new playlist.
Error codes
error value HTTP response code Error conditions
invalid_token 401 Unauthorized The provided Access Token is missing, revoked, expired or malformed
bad_request 400 Bad request The playlist title is missing
permission_denied 403 Permission denied The authenticated user does not have access to the channel.
not_found 404 Not found The channel could not be found.

Playlist details

Getting the details of a playlist.

GET https://api.video.ibm.com/playlists/PLAYLIST_ID.FORMAT (format can be json or xml)
Response

Key-value pairs under a "playlist" key. Example:

{
"playlist": {
		"id": "111",
		"title": "Title of a playlist",
		"total_duration": "176.256",
		"thumbnail": {
			"default": "https://ustvstaticcdn1-a.akamaihd.net/111.jpg",
			"image_192x108": "https://ustvstaticcdn1-a.akamaihd.net/111.jpg",
			"image_112x63": "https://ustvstaticcdn1-a.akamaihd.net/111.jpg",
			"image_128x72": "https://ustvstaticcdn1-a.akamaihd.net/111.jpg",
			"image_256x144": "https://ustvstaticcdn1-a.akamaihd.net/111.jpg",
			"image_320x180": "https://ustvstaticcdn1-a.akamaihd.net/111.jpg",
			"image_640x360": "https://ustvstaticcdn1-a.akamaihd.net/111.jpg",
			"image_1920x1080": "https://ustvstaticcdn1-a.akamaihd.net/111.jpg"
		},
		"created_at": 1484127917,
		"updated_at": 1486569501,
		"channel_id": 11223344
	}
}

Explanation of some values:

key type Description
total_duration string The sum of the duration of the videos added to the playlist in seconds.
Error codes
error value HTTP response code Error conditions
invalid_token 401 Authorization required If the playlist does not belong to a channel then the request must include a valid access token.
permission_denied 403 Permission denied If the playlist does not belong to a channel then the authenticated user needs access to the playlist.
not_found 404 Not found This error code is returned in the following cases:
  • The playlist does not exist.
  • In case of a channel playlist and if either the channel does not exist or playlists on the channel page are not enabled.

Modifying a playlist

Modify an existing playlist.

PUT https://api.video.ibm.com/playlists/PLAYLIST_ID.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
title string REQUIRED The title of the playlist.

The request body must contain the playlist title ("title" field).

Example:

PUT playlists/PLAYLIST_ID.json HTTP/1.1
Host: api.video.ibm.com
Authorization: Bearer 3c2573673b782f6544405a22636f3d5d3b6f3950
Content-Type: application/x-www-form-urlencoded

title=API+Testing+Playlist+edited

The token in the request above is only an example.

Successful response
HTTP response code Description
200 OK The playlist has been successfully updated.
Error codes
error value HTTP response code Error conditions
bad_request 400 Bad request The playlist title is missing
invalid_token 401 Authorization required The provided Access Token is missing, revoked, expired or malformed
permission_denied 403 Permission denied The authenticated user does not have access to the playlist.
not_found 404 Not found The playlist does not exist.

Deleting a playlist

Delete an existing playlist.

DELETE https://api.video.ibm.com/playlists/PLAYLIST_ID.FORMAT (format can be json or xml)

Example:

DELETE playlists/PLAYLIST_ID.json HTTP/1.1
Host: api.video.ibm.com
Authorization: Bearer 3c2573673b782f6544405a22636f3d5d3b6f3950
Content-Type: application/x-www-form-urlencoded

The token in the request above is only an example.

Successful response
HTTP response code Description
200 OK The playlist has been successfully deleted.
Error codes
error value HTTP response code Error conditions
invalid_token 401 Authorization required The provided Access Token is missing, revoked, expired or malformed
permission_denied 403 Permission denied The authenticated user does not have access to the playlist.
not_found 404 Not found The playlist does not exist.

Playlist videos

List the videos of a playlist

GET https://api.video.ibm.com/playlists/PLAYLIST_ID/videos.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
page integer OPTIONAL Requested page number (1 by default)
pagesize integer OPTIONAL Requested page size (200 by default, max 200)
detail_level string OPTIONAL Verbosity level. Possible values: "minimal", "owner". In case of minimal verbosity level the result set is limited to id, and links data. If the channel is protected (see security section), only minimal data can be retrieved without a valid access token. By default (by omitting or leaving the parameter empty) all insensitive information will be retrieved. The "owner" detail level always requires a valid access token, and it will also return more sensitive information about the video (for example the DHLS link if this feature is available for you).
Response

A list of key-value pairs under a "videos" key.

⚠️ The "media_urls" field below is being deprecated. For video download URLs please see the Downloading videos section. ⚠️

Example:

{
"videos": [{
		"id": "111",
		"title": "Title of video",
		"description": "Description of video",
		"url": "http://www.ustream.tv/recorded/111",
		"length": "12345.123456",
		"created_at": 1399388736,
		"added_at": 1399388736,
		"file_size": "120000",
		"views": 0,
		"thumbnail": {
			"default": "https://ustvstaticcdn1-a.akamaihd.net/111.jpg"
		},
		"media_urls": {
			"flv": "http://tcdn.ustream.tv/video/111"
		},
		"links": {
			"channel": {
				"href": "https://api.video.ibm.com/channels/1.json",
				"id": "1"
			}
		}
	},
	...
	]
}

Minimal response example:

"video": {
	"id": "111",
	"links": {
		"channel": {
			"href": "https://api.video.ibm.com/channels/1.json",
			"id": "1"
		}
	}
}

Explanation of some values:

key type Description
length string Video length in seconds
created_at timestamp The date and time when the video was created (Unix timestamp). By default, it has the same value as the “added_at” field, but it can be edited by channel admins to better reflect the real content creation date and time for the viewers.
added_at timestamp The date and time when the video was added (uploaded or recorded) to IBM Video Streaming (Unix timestamp).
file_size string Video file size in bytes

The paging information can be found under the "paging" key. Example:

"paging": {
	"previous": "https://api.video.ibm.com/playlists/PLAYLIST_ID/videos.json?pagesize=PAGE_SIZE&page=PREVIOUS_PAGE",
	"next": "https://api.video.ibm.com/playlists/PLAYLIST_ID/videos.json?pagesize=PAGE_SIZE&page=NEXT_PAGE",
	"page_count": 8,
	"item_count": 38
}
Error codes
error value HTTP response code Error conditions
invalid_token 401 Authorization required If the playlist does not belong to a channel then the request must include a valid access token.
permission_denied 403 Permission denied If the playlist does not belong to a channel then the authenticated user needs access to the playlist.
not_found 404 Not found

This error code is returned in the following cases:

  • The playlist does not exist.
  • In case of a channel playlist the playlists on the channel page are not shown.

Playlist video

Get the details of a video in a playlist

GET https://api.video.ibm.com/playlists/PLAYLIST_ID/videos/VIDEO_ID.FORMAT (format can be json or xml)
Response

Key-value pairs under a "video" key.

Example:

{
  "video": {
    "id": "92858030",
    "title": "SampleVideo 1280x720 30mb",
    "number_of_thumbnails": 1,
    "picture_revision": 2,
    "channel_id": "22818603",
    "video_views": 10,
    "thumbnail": "http://static-cdn1.ustream.tv/i/video/picture/0/1/92/92858/92858030/1_22818603_92858030,192x108,b,1:2.jpg",
    "created_at": 1479718322,
    "added_at": 1479718322,
    "order": 1
  }
}

Explanation of some values:

key type Description
picture_revision int The revision of the thumbnail picture
created_at timestamp The date and time when the video was created (Unix timestamp). By default, it has the same value as the "added_at" field, but it can be edited by channel admins to better reflect the real content creation date and time for the viewers.
added_at timestamp The date and time when the video was added (uploaded or recorded) to IBM Video Streaming (Unix timestamp).
order int The video's position in the playlist.
Error codes
error value HTTP response code Error conditions
invalid_token 401 Authorization required If the playlist does not belong to a channel then the request must include a valid access token.
permission_denied 403 Permission denied If the playlist does not belong to a channel then the authenticated user needs access to the playlist.
not_found 404 Not found

This error code is returned in the following cases:

  • The playlist does not exist.
  • In case of channel playlist, the channel does not exists or the playlists on the channel page are not enabled.
  • The given video is not in the playlist.

Add video to playlist

PUT https://api.video.ibm.com/playlists/PLAYLIST_ID/videos/VIDEO_ID.FORMAT (format can be json or xml)
Successful response

The response will contain the following collection limit headers:

Header Type Description
X-Collection-Limit int The maximum number of videos that can be added to a playlist.
X-Collection-Remaining int How many more videos can be added to the playlist.
Error codes
error value HTTP response code Error conditions
invalid_token 401 Authorization required The provided Access Token is missing, revoked, expired or malformed.
permission_denied 403 Permission denied The authenticated user does not have access to the playlist or to the video.
not_found 404 Not found The playlist does not exist.
limit_reached 413 Request entity too large The number of videos in the playlist have reached the limit. Check the returned collection limit headers.

Delete a video from the playlist

DELETE https://api.video.ibm.com/playlists/PLAYLIST_ID/videos/VIDEO_ID.FORMAT (format can be json or xml)
Successful response

The response will contain the following collection limit headers:

Header Type Description
X-Collection-Limit int The maximum number of videos that can be added to a playlist.
X-Collection-Remaining int How many more videos can be added to the playlist.
Error codes
error value HTTP response code Error conditions
invalid_token 401 Authorization required The provided Access Token is missing, revoked, expired or malformed.
permission_denied 403 Permission denied The authenticated user does not have access to the playlist.
not_found 404 Not found The playlist does not exist.

Reposition video on the playlist

PUT https://api.video.ibm.com/playlists/PLAYLIST_ID/videos/VIDEO_ID/position.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
position int REQUIRED The new position of the video in the playlist.

The body of the call must contain the video position. The Content-Type of the request should be application/x-www-form-urlencoded.

Example:

PUT playlists/PLAYLIST_ID/videos/VIDEO_ID/position.json HTTP/1.1
Host: api.video.ibm.com
Authorization: Bearer 3c2573673b782f6544405a22636f3d5d3b6f3950
Content-Type: application/x-www-form-urlencoded

position=3

The token in the request above is only an example.

Successful response
HTTP response code Description
200 OK The video has been successfully been repositioned.
Error codes
error value HTTP response code Error conditions
bad_request 400 Bad request The position parameter is either missing or out of range
invalid_token 401 Authorization required The provided Access Token is missing, revoked, expired or malformed
permission_denied 403 Permission denied The authenticated user does not have access to the playlist or to the video
not_found 404 Not found The playlist does not exist or the video is not on the playlist

Event

Listing the upcoming events of a channel

Get a detailed list of the events of a channel

GET https://api.video.ibm.com/channels/CHANNEL_ID/upcoming-events.FORMAT (format can be json or xml)
Parameters
parameter type importance Description
page integer OPTIONAL Requested page number (1 by default)
pagesize integer OPTIONAL Requested page size (50 by default, max 50)
Response

A list of key-value pairs under an "events" key. Example:

{
	"events": [
		{
			"id": "111",
			"title": "Title of the event",
			"description": "Description of the event",
			"start": 1399388736,
			"duration": 900,
		},
		...
	]
}

Explanation of some values:

key type Description
start timestamp The date and time when the event starts (Unix timestamp)
duration int Expected duration of the event in seconds

The paging information can be found under the "paging" key. Example:

{
	"paging": {
		"previous": "https://api.video.ibm.com/CHANNEL_ID/upcoming-events.json?pagesize=PAGE_SIZE&page=PREVIOUS_PAGE",
		"next": "https://api.video.ibm.com/channels/CHANNEL_ID/upcoming-events.json?pagesize=PAGE_SIZE&page=NEXT_PAGE"
	}
}
Error codes
error value HTTP response code Error conditions
invalid_token 401 Authorization required The event list is protected, only the owner with a valid token can access it.
not_found 404 Not Found The given channel does not exist.

Custom metadata

List metadata fields

GET https://api.video.ibm.com/custom-metadata-fields.json
Parameters
parameter type importance Description
filter[type] enum REQUIRED "video" if you need custom metadata for a video or
"channel" if you need custom metadata for a channel
Response

On success a response with HTTP status 200 OK is returned.

key type Description
fields array
name array
key type Description
name string Field name
display_name string Display name
content_type string It can be channel or video
type string The type of the field
description text The description of the field
is_required bool True if the field is required
enum_items array

Array of enum values

key type Description
item string Field name
children array

Array of field children

key type Description
name string Field name
display_name string Display name
content_type string It can be channel or video
type string The type of the field
description text The description of the field
is_required bool True if the field is required
Error codes
error value HTTP response code Error conditions
bad_request 400 Bad request When field[type] is missing.
unauthorized 401 Unauthorized The endpoint is protected, only the owner with a valid token can access it.

Create new metadata field

POST https://api.video.ibm.com/custom-metadata-fields.json
Parameters
parameter type importance Description
name string REQUIRED Name of the field
display_name string REQUIRED Display name
content_type string REQUIRED It can be channel or video
type string REQUIRED The type of the field. Possible values are: "string", "float", "tag_list", "bool", "enum", "group", "datetime", "link"
description text OPTIONAL The description of the field
is_required bool REQUIRED True if the field is required
enum_items array OPTIONAL Array of enum items
Response

On success a response with HTTP status 200 OK is returned.

key type Description
id string Field id
name string Field name
display_name string Display name
content_type string It can be channel or video
type string The type of the field
description text The description of the field
is_required bool True if the field is required
enum_items array

Array of enum values

key type Description
item string Field name
children array

Array of field children

key type Description
name string Field name
display_name string Display name
content_type string It can be a channel or video
type string The type of the field
description text The description of the field
is_required bool True if the field is required
Error codes
error value HTTP response code Error conditions
bad_request 400 Bad request Metadata field definition is not valid.
unauthorized 401 Unauthorized The endpoint is protected, only the owner with a valid token can access it.

Delete metadata field

DELETE https://api.video.ibm.com/custom-metadata-fields/FIELD_ID.json
Response

On success a response with HTTP status 200 OK is returned.

Error codes
error value HTTP response code Error conditions
not_found 404 Not Found Metadata field definition is invaild.
unauthorized 401 Unauthorized The endpoint is protected, only the owner with a valid token can access it.

Ingest settings

If you wish to use a non-IBM Video Streaming provided broadcaster application or appliance (like Flash Live Media Encoder, Wirecast, Tricaster, etc.), you will need a stream key or channel key to authenticate with IBM Video Streaming proving that broadcasting to that particular channel is allowed. Also you should get the ingest point where your device or application should connect.

Getting ingest settings

GET https://api.video.ibm.com/channels/CHANNEL_ID/ingest.json
Response

On success a response with HTTP status 200 OK is returned.

key type Description
rtmp_url string Ingest URL of the channel
channel_key string Permanent authentication key for broadcasting on the specified channel
streaming_key string Temporary authentication key for broadcasting on the specified channel which will expire after 10 minutes. If you request settings again within 10 minutes the original key will extend, after 10 minutes new key will be generated.
Error codes
error value HTTP response code Error conditions
not_found 404 Not found Channel does not exist
lack_of_ownership 403 Forbidden The api user is not allowed to manage the given channel