Akeeba Backup JSON API

Nicholas Dionysopoulos
Revision History
December 2011
First version
April 2012
Updated for Akeeba Backup 3.5
July 2012
Updated for Akeeba Backup 3.5.3
January 2016
Updated for advanced Akeeba Solo JSON API
June 2016
backupid information
October 2016
Updated for Akeeba Backup 5.1.4 / Akeeba Solo 2.0.3

Introduction to the API

Akeeba Backup's JSON API is provided as a means to automate various functions of the Akeeba Backup component for Joomla!, Akeeba Backup for WordPress plugin and Akeeba Solo standalone application without having to visit their back-end, from remote client applications. The client applications can be written in any programming language supporting HTTP transfers and JSON encoding/decoding, such as PHP, JavaScript, Delphi, .NET, Java and C/C++. The main design goals of the API are:

  • Uniformity. The interface is uniform across all of our backup products (Akeeba Backup for Joomla!, Akeeba Backup for WordPress, Akeeba Solo).

  • Backwards compatibility. The interface remains backward compatible for the longest time possible. Backwards incompatible changes are noted in the documentation, by API version.

  • Ease of use. Basic functionality should be as simple to implement as possible, with a minimal list of requirements.

  • Security. The web is a treacherous place. Eavesdropping is fairly easy to accomplish, so are man-in-the-middle and replay attacks. However, not all websites are equipped with a valid, commercially signed SSL certificate which rules out this kind of attacks. As a result, we implement two alternate methods of authentication and two encryption standards, ranging from fairly trivial to quite secure.

  • Functionality. The API should be agile enough to provide methods not only for running backups, but also fetching statistics as well as remotely downloading files, without the need to resort to another API or protocol. Everything should be catered for by the JSON API over standard HTTP transfers.

This guide is meant to be the reference to programming against this interface.

For a real world implementation in PHP please take a look at Akeeba Remote Control CLI. You can also run it with the --verbose switch to see the communications taking place between the client and the server. We believe this is the best interactive demonstration of the API implementation.