Skip to main content

pages/{pageid}/copy (POST) (MT4)


Copy 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
children bool? Copy child pages? (deprecated, use 'recursive' instead) (default: false)
to string new page location including the path and name of the page
title string? Set the title of the page. (default: same as original title)
abort {never, exists}? Specifies condition under which to prevent the update; default is exists.
recursive bool? Copy child pages? (default: false)
authenticate bool? Force authentication for request (default: false)
tags bool? Copy tags? (default: true)
attachments bool? Copy attachments? (default: true)

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

Implementation Notes

A file cannot be moved to a template page or a destination page that already contains a file with the same name.

Curl Code Sample: Copy a page

The first of the two commands copy page "foo" to page "bar" as indicated by the "?to=" parameter. In the second code sample, page "foo" is copied to a subpage of page "bar".

Sample Code (Copy)

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

Sample Code (Copy page with children)

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

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.

How Permissions are Handled

Just like when creating a new page, if you copy a section to a new location the copied content will inherit the permissions of the parent page you're copying to.

For instance, if you have the following structure:

  • /Parent
    • /Parent/Page_1
    • /Parent/Page_2
  • /Parent_2

If you copy "/Parent/Page_1"  under "/Parent_2", the new "/Parent_2/Page_1" page will inherit the existing permissions of "/Parent_2":

  • /Parent
    • /Parent/Page_1
    • /Parent/Page_2
  • /Parent_2
    • /Parent_2/Page_1 (this page will inherit the permissions of "/Parent_2")


In this example we will copy 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.copied count="1">
  <page id="64" href="">
  • Was this article helpful?