Skip to main content

pages/{pageid}/move (POST) (SAP KC)


Move page to a new location

  • REST Method: POST
  • Method Access: public

Uri Parameters

Name Type Description
pageid string either an integer page ID, "home", or "=" followed by a double uri-encoded page title

Query Parameters

Name Type Description
parentid int? Relocate the page under a given parent page
name string? Move the page to the given name while keeping it under the same parent page
authenticate bool? Force authentication for request (default: false)
redirects int? If zero, do not follow page redirects.
title string? Set the title of the page. The name of a page is also modified unless it's provided
to string? new page location including the path and name of the page

Return Codes

Name Value Description
OK 200 The request completed successfully
Bad Request 400 Invalid input parameter or request body
Forbidden 403 Update access to the page is required
Not Found 404 Requested page could not be found
Conflict 409 Page move would conflict with an existing page

Message Format


<pages.moved count="{int}">
    <page id="{int}" href="{uri}">

Implementation Notes

A page cannot be moved to a destination that already exists, is a descendant, or has a protected title (ex.  Special:xxx, User:, Template:). 

When a page is moved, subpages under the specified page are also moved.  For each moved page, the system automatically creates an alias page that redirects from the old to the new destination.

C# Code Sample: Rename a Page

The following code example renames "Subpage 1" to "New Subpage 1":

Sample Code

Plug p = Plug.New("http://deki-hayes/@api/deki");
p.At("users", "authenticate").WithCredentials("admin", "password").Get();
p.At("pages", "=Page_Title%252fSubpage_1", "move").With("to", "Page_Title/New_Subpage_1").Post();

Sample Response from executing Code

<pages.moved count="1">
    <page id="83" href="http://deki-hayes/@api/deki/pages/83">
        <title>New Subpage 1</title> 

Curl Code Sample: Move/Rename a Page

The first of the two commands moves page "foo" to page "bar" as indicated by the "?to=" parameter. It is important to note that since the page is in the same path directory, it is essentially renamed. In the second code sample, page "foo" is moved to a subpage of page "bar".

Sample Code (Rename)

curl -u username:password -d "" -i http://mindtouch.address/@api/deki/pages/=foo/move?to=bar

Sample Code (Move)

curl -u username:password -d "" -i http://mindtouch.address/@api/deki/pages/=foo/move?to=bar%252ffoo

Implementation notes 

curl flags

Basic HTTP authentication. Sends a username and password to server so it can verify whether a user is of privilege to perform specific operation.
Specifies a POST request. The parentheses ("") imply no data, since no external data is required to complete the operation.
Includes the HTTP response header in the output. Useful for debugging.


In this example we will move Pluto from a subpage of Planets to a subpage of Floating Rocks (Planets/Pluto -> Floating_Rocks/Pluto). The parent pages are assumed to have already been created. To learn how to create new pages, click here.

Sample Code

curl -u admin:password -d "" -i

HTTP Response Headers

HTTP/1.1 200 OK
Date: Sat, 09 Jan 2010 00:44:00 GMT
Server: Dream-HTTPAPI/
X-Deki-Site: id="default"
Content-Type: application/xml; charset=utf-8
Content-Length: 259
Via: 1.1 dekiwiki

HTTP Response Body

Content-Type: application/xml

<?xml version="1.0"?>
<pages.moved count="1">
  <page id="64" href="">


  • The page path is double encoded. In the above example, spaces in "Floating rocks" are replaced with %2520. Likewise, forward slashes (/) are replaced with %252f.
  • Attempting to move a page to a location where a page with the same name already exists will result in a 409 HTTP response (Conflict).
  • Was this article helpful?