---
layout: post
title: Reference Documentation
weight: 2
category: channel-api
categoryItemType: documentation
categoryItemIsShown: 1
categoryItemWidth: 6
categoryItemDescription: Manage your channels remotely, read and change security settings, branding, video recording, and many more.
categoryItemLabel: Read the documentation
---
Basic actions
Getting channel's details
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":<PHONE_NUMBER>,
"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
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.
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.
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
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
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
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
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
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
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
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
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":<PHONE_NUMBER>,
"valid_from":<PHONE_NUMBER>,
"valid_until": null
},
{
"device_name": "Sample Device 2",
"user_name": "ymvbk9bu7f8",
"created_at":<PHONE_NUMBER>,
"valid_from":<PHONE_NUMBER>,
"valid_until":<PHONE_NUMBER>
}
],
"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
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":<PHONE_NUMBER>,
"valid_until":<PHONE_NUMBER>
}
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
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.
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
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
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
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
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
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
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
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
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.
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
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
Parameters
This request has no parameters.
Response
On success a response with HTTP status 200 OK is returned.
Update logo settings
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
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
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
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.
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
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
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
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
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
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
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":<PHONE_NUMBER>,
"added_at":<PHONE_NUMBER>,
"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
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.
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.
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.
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.
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.
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
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":<PHONE_NUMBER>,
"added_at":<PHONE_NUMBER>,
"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
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
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":<PHONE_NUMBER>,
"added_at":<PHONE_NUMBER>,
"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
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.
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:
- Use this call to request a downloadable file
- Poll the same API resource for status updates
- 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.
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:
- Initiate an upload process by an API call. In the response you can find the details of the FTP connect.
- Upload the video.
- When the upload is finished, send a "file in place" signal, which tells to our server that it can start process the file.
- Call the API to check the status of the processing.
Initializing an upload
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",
<EMAIL_ADDRESS>}
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<EMAIL_ADDRESS>test.mov
Or using the cURL command:
curl<EMAIL_ADDRESS>-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
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
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.
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
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
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
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
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
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.
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
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
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
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
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
Parameters
None.
Response
On success a response with HTTP status 204 No content is returned.
Adding labels to a video
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
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
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.
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
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
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
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
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
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.
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
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
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.
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
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
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
| 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
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
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
| 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
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.
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.
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
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":<PHONE_NUMBER>,
"updated_at":<PHONE_NUMBER>,
"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
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.
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":<PHONE_NUMBER>,
"updated_at":<PHONE_NUMBER>,
"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.
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.
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
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":<PHONE_NUMBER>,
"added_at":<PHONE_NUMBER>,
"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
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":<PHONE_NUMBER>,
"added_at":<PHONE_NUMBER>,
"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
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
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
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
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":<PHONE_NUMBER>,
"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
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
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
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
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 |


{# https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-q-element #} {{ phrase }}
{{ phrase }}


About the Conference
The city of Portland, Oregon is the host city for Front End DevConf! Explore the future of Front End with a lineup of industry professionals, and discover new techniques to advance your career as a web developer.
Topics:
Speakers
Ecma Scriptnstuff
Ecma found a passion for programming and teaching over 15 years ago. Ecma is excited to introduce you to all of the wonders of JavaScript.
Cee Esses
Cee is a software engineer and philosopher trying to make the world a better place. Cee codes for non-profits, eCommerce, and large-scale web apps.
Jay Query
Jay is a JavaScript developer working on large-scale applications. Jay is also a teacher who strives to support students in removing barriers to learning code.
Schedule
-
Get Ready for the Future of CSS
Cee Esses
12:00pm -
All Things Frameworks
Jay Query
1:00pm -
ES2018 and Beyond
Ecma Scriptnstuff
2:00pm


Link to Privilege Escalation > Windows > Physical Access > sethc
Can also be used for a backdoor in RDP.