diff --git a/classes/api.php b/classes/api.php
index aaeb86dcfc8ed87b8ab3b7c507d4ef158334a908..0fcd65eb3bb9905d5473dff5c960b8acc6aa1b07 100644
--- a/classes/api.php
+++ b/classes/api.php
@@ -464,8 +464,19 @@ class API extends Handler {
 
 	}
 
-	function index() {
-		print $this->wrap(self::STATUS_ERR, array("error" => 'UNKNOWN_METHOD'));
+	function index($method) {
+		global $pluginhost;
+
+		$plugin = $pluginhost->get_api_method(strtolower($method));
+
+		if ($plugin && method_exists($plugin, $method)) {
+			$reply = $plugin->$method();
+
+			print $this->wrap($reply[0], $reply[1]);
+
+		} else {
+			print $this->wrap(self::STATUS_ERR, array("error" => 'UNKNOWN_METHOD', "method" => $method));
+		}
 	}
 
 	function shareToPublished() {
diff --git a/classes/pluginhost.php b/classes/pluginhost.php
index 9ae7b809e948935cfc98393c1bd76cd27b1a1937..7c6fab9a0ebcf8740d5a2380ecfa2a8cc4a8b292 100644
--- a/classes/pluginhost.php
+++ b/classes/pluginhost.php
@@ -7,6 +7,7 @@ class PluginHost {
 	private $commands = array();
 	private $storage = array();
 	private $feeds = array();
+	private $api_methods = array();
 	private $owner_uid;
 	private $debug;
 
@@ -347,5 +348,14 @@ class PluginHost {
 		return PLUGIN_FEED_BASE_INDEX - 1 + abs($feed);
 	}
 
+	function add_api_method($name, $sender) {
+		if ($this->is_system($sender)) {
+			$this->api_methods[strtolower($name)] = $sender;
+		}
+	}
+
+	function get_api_method($name) {
+		return $this->api_methods[$name];
+	}
 }
 ?>
diff --git a/plugins/example_api/init.php b/plugins/example_api/init.php
new file mode 100644
index 0000000000000000000000000000000000000000..a5f34b8652d92cb8982bb97ba89961bad9b99913
--- /dev/null
+++ b/plugins/example_api/init.php
@@ -0,0 +1,31 @@
+<?php
+class Example_Api extends Plugin {
+
+	// Demonstrates adding a method to the API
+	// Plugin methods return an array containint
+	// 1. status (STATUS_OK or STATUS_ERR)
+	// 2. arbitrary payload
+
+	private $link;
+	private $host;
+
+	function about() {
+		return array(1.0,
+			"Example plugin adding an API method",
+			"fox",
+			true,
+			"http://tt-rss.org/");
+	}
+
+	function init($host) {
+		$this->link = $host->get_link();
+		$this->host = $host;
+
+		$host->add_api_method("example_testmethod", $this);
+	}
+
+	function example_testmethod() {
+		return array(API::STATUS_OK, array("current_time" => time()));
+	}
+}
+?>