curl --request PUT \
--url https://app.base44.com/api/app-folders/{item_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Client work",
"position": 3,
"color": "#10B981",
"icon": "folder"
}
'import requests
url = "https://app.base44.com/api/app-folders/{item_id}"
payload = {
"name": "Client work",
"position": 3,
"color": "#10B981",
"icon": "folder"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: 'Client work', position: 3, color: '#10B981', icon: 'folder'})
};
fetch('https://app.base44.com/api/app-folders/{item_id}', 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://app.base44.com/api/app-folders/{item_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Client work',
'position' => 3,
'color' => '#10B981',
'icon' => 'folder'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.base44.com/api/app-folders/{item_id}"
payload := strings.NewReader("{\n \"name\": \"Client work\",\n \"position\": 3,\n \"color\": \"#10B981\",\n \"icon\": \"folder\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://app.base44.com/api/app-folders/{item_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Client work\",\n \"position\": 3,\n \"color\": \"#10B981\",\n \"icon\": \"folder\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/app-folders/{item_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Client work\",\n \"position\": 3,\n \"color\": \"#10B981\",\n \"icon\": \"folder\"\n}"
response = http.request(request)
puts response.read_body{
"id": "68c1f2a9b4e7d3005a2c9e11",
"name": "Client projects",
"parent_folder_id": "68c1f27eb4e7d3005a2c9e0f",
"scope": "workspace",
"position": 2,
"created_date": "2026-08-01T09:15:00",
"color": "#3B82F6",
"icon": "briefcase",
"app_type": "user_app"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Update app folder
Renames a folder, or changes its color, icon or position. Send only the fields you want to change.
A folder’s scope, app_type, owner_id and parent_folder_id can’t change here, and sending any of them returns a 400.
You can change your own personal folders. Workspace folders need the editor role or higher, and any editor can change any workspace folder. A folder that doesn’t exist, or another user’s personal folder, returns a 404 with the code folder_not_found.
This is limited to 60 requests per minute, shared with the other endpoints that change folders. A signed-in session has its own limit, and every personal access token for the workspace shares one. Some workspaces have a different limit.
curl --request PUT \
--url https://app.base44.com/api/app-folders/{item_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Client work",
"position": 3,
"color": "#10B981",
"icon": "folder"
}
'import requests
url = "https://app.base44.com/api/app-folders/{item_id}"
payload = {
"name": "Client work",
"position": 3,
"color": "#10B981",
"icon": "folder"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: 'Client work', position: 3, color: '#10B981', icon: 'folder'})
};
fetch('https://app.base44.com/api/app-folders/{item_id}', 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://app.base44.com/api/app-folders/{item_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Client work',
'position' => 3,
'color' => '#10B981',
'icon' => 'folder'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.base44.com/api/app-folders/{item_id}"
payload := strings.NewReader("{\n \"name\": \"Client work\",\n \"position\": 3,\n \"color\": \"#10B981\",\n \"icon\": \"folder\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://app.base44.com/api/app-folders/{item_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Client work\",\n \"position\": 3,\n \"color\": \"#10B981\",\n \"icon\": \"folder\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/app-folders/{item_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Client work\",\n \"position\": 3,\n \"color\": \"#10B981\",\n \"icon\": \"folder\"\n}"
response = http.request(request)
puts response.read_body{
"id": "68c1f2a9b4e7d3005a2c9e11",
"name": "Client projects",
"parent_folder_id": "68c1f27eb4e7d3005a2c9e0f",
"scope": "workspace",
"position": 2,
"created_date": "2026-08-01T09:15:00",
"color": "#3B82F6",
"icon": "briefcase",
"app_type": "user_app"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
Personal access token, sent as Authorization: Bearer <token>.
Path Parameters
ID of the folder to update. Get it from id in List app folders.
Body
New name, 1 to 100 characters.
1 - 100"Client work"
New sort key among folders. Lower values come first.
3
New color, up to 32 characters, or null to clear it.
32"#10B981"
New icon name, up to 64 characters, or null to clear it.
64"folder"
Response
The updated folder.
ID of the folder.
"68c1f2a9b4e7d3005a2c9e11"
Name of the folder.
"Client projects"
ID of the folder this one sits in, or null for a top-level folder.
"68c1f27eb4e7d3005a2c9e0f"
workspace for a folder every member of the workspace sees, or personal for one only you see.
workspace, personal "workspace"
Sort key among folders. Lower values come first.
2
Time the folder was created, in UTC, as an ISO 8601 timestamp without a time zone offset.
"2026-08-01T09:15:00"
Color set on the folder, or null when none is set.
"#3B82F6"
Icon name set on the folder, or null when none is set.
"briefcase"
user_app for a folder of builder apps, or user_agent for a folder of agents. Builder app folders created before agent folders existed leave it out.
user_app, user_agent "user_app"
Was this page helpful?