Skip to main content
PUT
/
crm
/
v3
/
lists
/
folders
/
{folderId}
/
move
/
{newParentFolderId}
Moves a folder
curl --request PUT \
  --url https://api.hubapi.com/crm/v3/lists/folders/{folderId}/move/{newParentFolderId} \
  --header 'Authorization: Bearer <token>'
import requests

url = "https://api.hubapi.com/crm/v3/lists/folders/{folderId}/move/{newParentFolderId}"

headers = {"Authorization": "Bearer <token>"}

response = requests.put(url, headers=headers)

print(response.text)
const options = {method: 'PUT', headers: {Authorization: 'Bearer <token>'}};

fetch('https://api.hubapi.com/crm/v3/lists/folders/{folderId}/move/{newParentFolderId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.hubapi.com/crm/v3/lists/folders/{folderId}/move/{newParentFolderId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://api.hubapi.com/crm/v3/lists/folders/{folderId}/move/{newParentFolderId}"

req, _ := http.NewRequest("PUT", url, nil)

req.Header.Add("Authorization", "Bearer <token>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.put("https://api.hubapi.com/crm/v3/lists/folders/{folderId}/move/{newParentFolderId}")
.header("Authorization", "Bearer <token>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.hubapi.com/crm/v3/lists/folders/{folderId}/move/{newParentFolderId}")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
{
  "folder": {
    "childLists": [
      123
    ],
    "childNodes": "<array>",
    "id": "<string>",
    "parentFolderId": "<string>",
    "createdAt": "2023-11-07T05:31:56Z",
    "name": "<string>",
    "updatedAt": "2023-11-07T05:31:56Z",
    "updatedContentsAt": "2023-11-07T05:31:56Z",
    "userId": 123
  }
}
{
"message": "Invalid input (details will vary based on the error)",
"correlationId": "aeb5f871-7f07-4993-9211-075dc63e7cbf",
"category": "VALIDATION_ERROR",
"links": {
"knowledge-base": "https://www.hubspot.com/products/service/knowledge-base"
}
}

Supported products

Authorizations

Authorization
string
header
required

The access token received from the authorization server in the OAuth 2.0 flow.

Path Parameters

folderId
string
required

The ID of the folder to move

newParentFolderId
string
required

The ID for the target parent folder.

Response

successful operation

folder
object
required
Last modified on March 30, 2026