API Explorer

It's never been so easy to build advanced video and audio services

1 API

  • Search for programmes by title
  • Display schedules and content details
  • Aggregate links to all services for the same show
  • Work across web, mobile and TV
  • Smoothly handle rights restrictions

15+ International sources

  • long-form and short-form: archive.org, blip.tv, BBC, Channel 4, dailymotion, Five, HBO, Hulu, iTunes, ITV, MSN Video, Press Association, ted.com, TVBLOB, Vimeo, YouTube and podcasts

5+ output formats

  • RESTful API with XML and JSON
  • Specialist feeds for Google, BBC iPlayer, UK Radioplayer and Xbox
  • RDF for linked data

Atlas at work

Examples

Reference

Overview

Atlas ingests data from 15+ sources, indexes them, matches equivalent items, then provides simple RESTful APIs for Search, Content descriptions and channel Schedules. Data can also be provided in a range of common feed formats.

Data Model

The Atlas API model has two key concepts: Containers and Items.

Containers

Videos are often part of a set, for example "all episodes of Eastenders". Containers represent a collection of items within the Atlas data model.
Where possible we return matching Items within their containers. Some items do not have containers such as films, specials and user generated clips.

Below is an example of a container, in this case Merlin (a popular BBC 1 programme):


content: [
    { episode 1 json },
    { episode 2 json }
],
title: "Merlin",
description: "Fantasy drama based...",
same_as: [
    "http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewTVShow?id=323369381&uo=4",
    "http://www.hulu.com/merlin",
],
media_type: "video",
aliases: [
    "http://en.wikipedia.org/wiki/Merlin_(BBC)",
],
uri: "http://www.bbc.co.uk/programmes/b00mjlxv",
curie: "bbc:b00mjlxv"
                    

Items

Items represent individual pieces of content, including all the standard pieces of metadata that you’d expect. Here’s an annotated overview of the JSON returned by a request for an episode of Merlin:

Identifiers

Use these attributes to identify the content, the URI is our best guess at the canonical identifier of the content, this is the only value that should be persisted as all others are liable to change.

                        
uri: "http://www.bbc.co.uk/programmes/b00wlncb",
aliases: [
    "http://bbc.co.uk/i/wlncb/"
    "http://www.bbc.co.uk/iplayer/episode/b00wlncb"
],
curie: "bbc:b00wlncb"
                    
Description

These attributes describe the item.

                        
description: "Queen Morgana begins a reign of terrible evil over the innocent...",
title: "The Coming of Arthur - Part 2",
publisher: {
    key: "bbc.co.uk",
    name: "BBC",
    country: "GB"
},
image: "http://www.bbc.co.uk/iplayer/images/episode/b00wlncb_640_360.jpg",
thumbnail: "http://www.bbc.co.uk/iplayer/images/episode/b00wlncb_150_84.jpg",
genres:[
    "http://ref.atlas.metabroadcast.com/genres/atlas/drama",
    "http://www.bbc.co.uk/programmes/genres/drama/scifiandfantasy"
]
                    
Episode attributes

This Item is also an Episode, which means it is part of a Brand. These attributes outlines this Episode’s position within its Brand. If the Item is not an Episode these attributes will not be present.

                        
episode_number: 13,
series_number: 3,
brand_summary: {
    title: "Merlin"
    description: "Fantasy drama based on the legend of King Arthur and Merlin"
    uri: "http://www.bbc.co.uk/programmes/b00mjlxv"
    curie: "bbc:b00mjlxv"
}
                    

Locations

Each Item contains the various different ways you can get your metaphorical hands on the media. These are called Locations and provide all the information about how to access the content, who can access it, where it is, and so on. This is an example Location (the full schema is quite large, but you get the idea):

                    
    { 
        data_container_format: "application/x-shockwave-flash",
        video_coding: "video/H264",
        availability_start: "05-Dec-2010 02:39:02",
        availability_end: "11-Dec-2010 20:24:00",
        available_countries: [
            "GB"
        ],
        revenue_contract: "free_to_view",
        transport_type: "link",
        uri: "http://www.bbc.co.uk/iplayer/episode/b00wlncb",
        available: false,
        duration: 2700,
      }
                    

Query Parameters

This is an attempt to fully document all the functions, objects and attributes of the Atlas API.

Search

Name Description Usage
limit (required) The number of items to return (max 50) Integer
publisher The publisher of the content String from a list of available publishers
q The title of a Brand, Item (if a special) or a person String

Schedule

Name Description Usage
channel The channel of the content String from a list of available channels
from The beginning of a schedule period Timestamp (seconds since 1/1/1970) or as a short hand now.minus.24h (based on ISO8601 Durations)
to The end of a schedule period Timestamp (seconds since 1/1/1970) or as a short hand now.minus.24h (based on ISO8601 Durations)

Content

Name Description Usage
uri The URI of a specific piece of content The URI of a piece of content

Sources

Atlas works with data from the following sources:

International Long-form

Source Access Status Type
Hulu Public Free on-demand shows
iTunes Public Pay on-demand shows
TV Blob Public EPG

UK Long-form

Source Access Status Type
BBC Public Free on-demand shows, EPG, Clips
Channel 4 Restricted Free on-demand shows, EPG, Clips
Five Restricted Free on-demand shows
ITV Public Free on-demand shows
MSN Video Public free on-demand shows
Press Association Restricted EPG

International Short-form

Source Access Status Type
archive.org Public Clips
blip.tv Public Clips
Daily Motion Public Clips
Podcasts Public Clips
TED.com Public Clips
Vimeo Public Clips
YouTube Public Clips

Please contact MetaBroadcast if you are interested in using restricted sources.

Feeds

In addition to the RESTful API, Atlas also provides data in a variety of feed formats

Format Base Type Status Description
BBC Interlinking MRSS Data to feed broadcast data into BBC iPlayer
Google Video Sitemaps MRSS Data to feed Google Video Search
UK Radioplayer DAB-EPG Data to feed UK Radio Player Search
Xbox LIVE Lakeview Data to feed Xbox LIVE TV Search

Contact MetaBroadcast for help producing data in these formats

About

Atlas is open source

Atlas is an open-source project (it's all licensed under Apache 2.0) and we'd love for you to get involved. Below are all the resources that will help you join in. Participation comes in many forms:

  • Hack something up using the Atlas API, blog about it and get us to link to it
  • Have a chat with us about the features and formats that you’d find useful
  • Tell us when something doesn’t quite work the way you’d expect it to here
  • Develop an adapter for a new source of content, current sources are here
  • Help improve the core of the code
  • Write client libraries for other languages
  • Provide a metadata endpoint for us to ingest

Atlas is used by

API Explorer

Complete control