Index: includes/api/ApiMain.php
===================================================================
--- includes/api/ApiMain.php	(revision 40720)
+++ includes/api/ApiMain.php	(working copy)
@@ -66,6 +66,7 @@
 		'help' => 'ApiHelp',
 		'paraminfo' => 'ApiParamInfo',
 		'purge' => 'ApiPurge',
+		'pagestatus' => 'ApiPageStatus',
 	);
 
 	private static $WriteModules = array (
Index: includes/api/ApiPageStatus.php
===================================================================
--- includes/api/ApiPageStatus.php	(revision 0)
+++ includes/api/ApiPageStatus.php	(revision 0)
@@ -0,0 +1,87 @@
+<?php
+
+/*
+ * Created on Oct 31, 2007
+ * API for MediaWiki 1.8+
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+if (!defined('MEDIAWIKI')) {
+	// Eclipse helper - will be ignored in production
+	require_once ("ApiBase.php");
+}
+
+
+/**
+ * @ingroup API
+ */
+class ApiPageStatus extends ApiBase {
+
+	public function __construct($main, $action) {
+		parent :: __construct($main, $action);
+	}
+
+	public function execute() {
+		global $wgUser;
+		$params = $this->extractRequestParams();
+
+		$titleObj = NULL;
+		if(!isset($params['title']))
+			$this->dieUsageMsg(array('missingparam', 'title'));
+
+		$fromTitle = Title::newFromText($params['title']);
+		if(!$fromTitle)
+			$this->dieUsageMsg(array('invalidtitle', $params['title']));
+		
+		$this->getResult()->addValue("status", "exists", $fromTitle->exists() ? "true" : "false");
+		$this->getResult()->addValue("status", "isRedirect", $fromTitle->isRedirect() ? "true" : "false");
+		$this->getResult()->addValue("status", "isExternal", $fromTitle->isExternal() ? "true" : "false");
+		$this->getResult()->addValue("status", "userCanRead", $fromTitle->userCanRead() ? "true" : "false");
+		$this->getResult()->addValue("status", "viewURL", $fromTitle->getFullURL());
+		$this->getResult()->addValue("status", "editURL", $fromTitle->getFullURL('action=edit'));
+	}
+
+	public function mustBePosted() { return false; }
+
+	public function getAllowedParams() {
+		return array (
+			'title' => null
+		);
+	}
+
+	public function getParamDescription() {
+		return array (
+			'title' => 'Title of the page you want to check.'
+		);
+	}
+
+	public function getDescription() {
+		return array(
+			'Check for a pages existance.'
+		);
+	}
+
+	protected function getExamples() {
+		return array (
+			'api.php?action=pagestatus&title=Main_Page'
+		);
+	}
+
+	public function getVersion() {
+		return __CLASS__ . ': $Id: ApiPageStatus.php 2008-11-09 mattj $';
+	}
+}
Index: includes/AutoLoader.php
===================================================================
--- includes/AutoLoader.php	(revision 40720)
+++ includes/AutoLoader.php	(working copy)
@@ -219,6 +219,7 @@
 	'ApiEditPage' => 'includes/api/ApiEditPage.php',
 	'ApiEmailUser' => 'includes/api/ApiEmailUser.php',
 	'ApiExpandTemplates' => 'includes/api/ApiExpandTemplates.php',
+	'ApiPageStatus' => 'includes/api/ApiPageStatus.php',
 	'ApiFeedWatchlist' => 'includes/api/ApiFeedWatchlist.php',
 	'ApiFormatBase' => 'includes/api/ApiFormatBase.php',
 	'ApiFormatDbg' => 'includes/api/ApiFormatDbg.php',
Index: RELEASE-NOTES
===================================================================
--- RELEASE-NOTES	(revision 40720)
+++ RELEASE-NOTES	(working copy)
@@ -235,6 +235,7 @@
 * (bug 15535) prop=info&inprop=protection doesn't list pre-1.10 protections
   if the page is also protected otherwise (1.10+ style or cascading)
 * list=random now has rnredirect parameter, to get random redirects.
+* Added action=pagestatus, to get basic information on a page while staying as light-weight as possible
 
 === Languages updated in 1.14 ===
 
