Create web part page in SharePoint using REST API

This post contains the syntax and code snippet to create a new web-part page in a document library using REST API.

In this post, we’ll see the syntax and code snippet to create a new webpart page in a document library using REST API.

Syntax:

REST API Endpoint:

https://SharePointSiteURL/_api/web/getfolderbyserverrelativeurl(<URL1>)/files/addtemplatefile(urloffile=<URL2>,templatefiletype=0)

REST API endpoint to use in Add-ins:

<appweburl>/_api/SP.AppContextSite(@target)/web/getfolderbyserverrelativeurl(<URL1>)/files/addtemplatefile(urloffile=<URL2>,templatefiletype=0)”?@target=<hostweburl>

Parameters:

URL1 – Server relative URL of a Folder

URL2 – Server relative URL of file where you want to save the folder

Note: templatefiletype is used to specify the file template for the file creation. 0 (zero) – represents the a standard page template.

Code Snippet:

Embed Code Snippet:

The following code snippet can be added to a SharePoint page or in content editor web part as a script. This example is used to add a new web part page to the Site Pages library in SharePoint.

[code language=”javascript”]

$.ajax({
url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/getfolderbyserverrelativeurl(‘/SitePages’)/files/addtemplatefile(urloffile=’/SitePages/newwebpartpage.aspx’,templatefiletype=0)",
method: "POST",
data: JSON.stringify(data),
headers: {
"Accept": "application/json; odata=verbose",
"X-RequestDigest": $("#__REQUESTDIGEST").val()
},
success: function(data) {
//RESULTS HERE!!
alert(‘File created successfully!’);
},
error: function(err) {
alert(‘Error: ‘ + err.responseText);
}
});

[/code]

Add-in Code Snippet

The following code snippet is used in SharePoint Add-in to add a new web part to the Site Pages library in target SharePoint site.

[code language=”javascript”]

// Load the js files and continue to the successHandler
$.getScript(scriptbase + "SP.RequestExecutor.js", execCrossDomainRequest);

// Function to prepare and issue the request to get
// SharePoint data
function execCrossDomainRequest() {
// Initialize the RequestExecutor with the add-in web URL.
var executor = new SP.RequestExecutor(appweburl);
// Issue the call against the add-in web.
// To add webpart page, use tempaltefiletype=0 in addtemplatefile method using REST we can hit the endpoint:
// The response formats the data in the JSON format.
executor.executeAsync({
url: appweburl + "/_api/SP.AppContextSite(@target)/web/getfolderbyserverrelativeurl(‘/SitePages’)/files/addtemplatefile(urloffile=’/SitePages/newwebpartpage.aspx’,templatefiletype=0)&@target=’" + hostweburl + "’",
method: "POST",
data: JSON.stringify(data),
headers: {
"Accept": "application/json; odata=verbose",
"X-RequestDigest": $("#__REQUESTDIGEST").val()
},
success: successHandler,
error: errorHandler
});
}
// Function to handle the success event.
function successHandler(data) {
console.log(‘File created successfully!’)
alert(‘File created successfully!’);
}

function errorHandler(data, errorCode, errorMessage) {
console.log("Could not complete cross-domain call: " + errorMessage);
}

[/code]

Shantha Kumar
Shantha Kumar
Articles: 278

24,849 Comments

  1. Hello,

    Thank you very much for this blogpost. That’s exactly what I need at the moment. Unfortunately for some reason it doesn’t work for me.
    I’ve got this error “‘data’ is undefined” in IE Developer Tools.
    Should I replace – data: JSON.stringify(data),
    with – data: JSON.stringify({
    ‘parameters’: {
    ‘_metadata’: { ‘type’: ‘SP.Data.PagesItem’ } …
    and so on ?

    BR,
    Piotr

  2. Hi Again,

    Sorry I forgot to mention that I use content editor and JSLink option :)

    BR,
    Piotr

Comments are closed.