(legacy) Introduction to the Screen9 XML-RPC API

Last Updated 3 years ago

Note that the XML-RPC API is a legacy API and is no longer being developed, we recommend using the REST API instead.

This is the first article in the introduction to the Screen9 XML-RPC API. The articles in this section are intended for developers integrating the Screen9 API in a web service or similar. All code examples in this article series will be given in python. The examples used in this article can be downloaded in Python source code attachment.



Before you get started programming, make sure you have access to the following:

  • The complete API documentation
  • Customer ID (also called "Custid" and can be found on the API page of Console)
  • Your account must be opened to the IP address(es) where you are running your development environment. 
  • Your firewalls must be configured to allow traffic from and to xmlrpc.screen9.com.

Connecting to the service

In this example we use python's library xmlrpclib to establish the connection to the service.

URLs for accessing the XML-RPC API are:

#!/usr/bin/env python

from xmlrpclib import Server

CUSTID = # Customer ID assigned by Screen9
HOSTNAME = 'xmlrpc.screen9.com'
PORT = 80
server = Server('http://%s:%i' % (HOSTNAME, PORT))

Once the server connection is established, we can start sending API requests. All API requests contain a common parameter which has information about the end user's browser and about which API version the request is connecting to.

common = {
 'browser' : 'Browser user-agent',
 'refer' : 'HTTP referer',
 'userip' : '',
 'custid' : CUSTID,
 'version' : '2.0' }

We're now ready to start accessing data from the API. Below is a simple example that prints the number of videos in the account.

    video_count = server.countMedia(common)
    print "Account contains %d videos" % video_count
except (Exception), e:
    print e


Listing videos

Now that we have a connection to the API we can start working with the video content in the platform. Here's an example of how to list videos which have been successfully transcoded. The example lists the 10 most recently uploaded videos with the following meta data:

  • Mediaid - the unique identfier for all objects in the Screen9 OVP
  • Title
  • Thumbnail
    fields = ['mediaid','title', 'thumbnail']
    filters = {'status' : 'successful', 'mediatype' : 'video' }
    video_list = server.listMedia(common, fields, filters, 'posted', 10, 1)
except (Exception), e:
    print e

The resulting video_list is an array which contains a struct with the requested meta data.

Displaying a video

 We now move forward in our example and want to display the first video from the list of 10 videos that we got from the previous example. We also want to know some more information about that video so we ask for the duration and the number of views for the video. We start by printing the additional information.

video = video_list[0]
additional_fields = ['duration', 'downloads_started']
details = server.getMediaDetails(common, video['mediaid'], additional_fields)
duration = int(details['duration'] / 1000)
print "Latest uploaded video (""%s"") is %d seconds long and has been viewed %d times." % (video['title'], duration, details['downloads_started'])

We now want an embed code to place on the webpage so that visitors can see the video. The requested embed code is of type universal which means that it will automatically work on mobile devices and flash capable devices.

embedcode = server.getPresentation(common, video['mediaid'], 0, {'embedtype' : 'universal'})
print "This is the embedcode for that video:
%s" % (embedcode['universal'])


Searching for videos

 Searching for videos in the platform is similar to the listMedia call with the additional query parameter as well as specifying which fields to search in. In the example, we search the tags, title and description fields.

query = 'test'
search_results = server.search(common, query, ['tags', 'title', 'description'], fields, filters, 'posted', 5, 1)
print "%d results for query ""%s""" % (search_results['count'], query)



Errors in the communication with the API are handled as exceptions. Here is an example where we deliberately use an invalid mediaid to ask for meta data using the getMediaDetails call.

fakeid = '123456789'
    server.getMediaDetails(common, fakeid, fields)
except (Exception), e:
    print e

This results in the following output:


Python example source file with the examples used in this article is available for download below.

This website relies on cookies to function, but no personal data is ever stored in the cookies.

Loading ...