I have 300 site collections that I need to change the homepage, any ideas what endpoint there is for this in REST API ?

  • I know it's an old post but that's the only one I found so far. I'm trying to implement this using python and OAUTH. I have a valid token, and I'm able to do bunch of things (create sites, list sites, list site contents for my tenant), but I am not able to set the WelcomePage. I keep getting 403, Access Denied errors. I've tried without and with the X-RequestDigest header because it was not clear if I have to include it or not when using OAUTH token ([learn.microsoft.com/en-us/sharepoint/dev/sp-add-ins/… Mar 20 at 6:46

1 Answer 1


you can insert the below code in script editor to set a custom page as your default/welcome page :


<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

function SetDefaultPage() {
            // _spPageContextInfo.webAbsoluteUrl - will give absolute URL of the site where you are running the code.
            // You can replace this with other site URL where you want to apply the function

            url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/rootfolder",
            type: "POST",
            data: JSON.stringify({
                '__metadata': {
                    // Type that you are modifying.
                    'type': 'SP.Folder'

                // Specify Server relative URL of the page, you want to set as Home page
                'WelcomePage': 'SitePages/home.aspx'
             // Accept header: Specifies the format for response data from the server.
             "Accept": "application/json;odata=verbose",
             //Content-Type header: Specifies the format of the data that the client is sending to the server
             "Content-Type": "application/json;odata=verbose",
            // IF-MATCH header: Provides a way to verify that the object being changed has not been changed since it was last retrieved.
            // "IF-MATCH":"*", will overwrite any modification in the object, since it was last retrieved.
            "IF-MATCH": "*",
            //X-HTTP-Method:  The MERGE method updates only the properties of the entity , while the PUT method replaces the existing entity with a new one that you supply in the body of the POST
            "X-HTTP-Method": "PATCH",
            // X-RequestDigest header: When you send a POST request, it must include the form digest value in X-RequestDigest header
            "X-RequestDigest": $("#__REQUESTDIGEST").val()
            success: function (data, status, xhr) {
            error: function (xhr, status, error) {

Let me know if you need any further help. Upvote and accept it as answer if this helps.

  • @jason Did you try this code ?
    – Ravi
    Nov 13, 2019 at 6:55
  • briliant, I will give it a whirl soon - I will let you know - thanks. Nov 13, 2019 at 10:12
  • worked perfectly, thanks !!! Nov 13, 2019 at 15:15
  • Thanks for the confirmation. Glad that helped.
    – Ravi
    Nov 14, 2019 at 8:37
  • Yes, this was exactly what I was looking for! Used this same end point in Power Automate. Great work @Ravi
    – Arknev
    Apr 22, 2022 at 14:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.