Zach Bagnall

2014 in review: voila

It’s been a busy year in the world of Voila. As discussed previously, BT launched a major multi-platform TV Everywhere app using Voila for schedule and content queries. BT also revamped their TV sales website using dynamic TV and VOD data from Voila as well as styled EPG widgets for Sports.

suggestions api

The content recommendation engine in Voila received a lot of love, largely thanks to James who built it up first for a some content consumption app prototypes, then a big push for BT to provide engaging, relevant recommended content to appeal to potential subscribers.

The API can search upcoming broadcasts, web based on-demand like BBC iPlayer or 4oD, and any other content held in Atlas such as premium VoD catalogs. It draws on many factors to guide suggestions including scheduling, genre, specials, and social buzz.

multiple schedule endpoint

What’s the difference between /1.0/schedule.json and /1.0/schedules.json?

We aim to deliver APIs well matched to the intended end use. For BT we quickly found the multiple-channel schedule response to be lacking. While it worked and was correct, we felt the structure was difficult to parse so we’ve added the plural form: schedules. This endpoint will return the multiple schedules in a more logical form, easier to parse on the front end with better code.


Being the user-facing, productized API group, Voila can be subject to very high load. It already is and it’s only going to increase in 2015. With this in mind we’ve been experimenting with micro-caching – short TTL caching using Varnish to smoothly handle extreme spikes without actually delaying dynamic data. We’ve also committed to optimising certain complex queries with the intention of removing all caching, simplifying infrastructure.

Early next year we’ll be releasing a major new version of Atlas (deer) with a new, high performance architecture. We’ll be focussing on updating Voila to take every advantage of that platform to speed data through the system from ingest to endpoint.

blog comments powered by Disqus