curl --request PUT \
--url https://app.base44.com/api/workspace/groups/{group_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Brand design",
"description": "Brand and marketing designers",
"role": "viewer"
}
'import requests
url = "https://app.base44.com/api/workspace/groups/{group_id}"
payload = {
"name": "Brand design",
"description": "Brand and marketing designers",
"role": "viewer"
}
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: 'Brand design',
description: 'Brand and marketing designers',
role: 'viewer'
})
};
fetch('https://app.base44.com/api/workspace/groups/{group_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/workspace/groups/{group_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' => 'Brand design',
'description' => 'Brand and marketing designers',
'role' => 'viewer'
]),
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/workspace/groups/{group_id}"
payload := strings.NewReader("{\n \"name\": \"Brand design\",\n \"description\": \"Brand and marketing designers\",\n \"role\": \"viewer\"\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/workspace/groups/{group_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Brand design\",\n \"description\": \"Brand and marketing designers\",\n \"role\": \"viewer\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/workspace/groups/{group_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\": \"Brand design\",\n \"description\": \"Brand and marketing designers\",\n \"role\": \"viewer\"\n}"
response = http.request(request)
puts response.read_body{
"id": "68b4e1d2c9a7f3001e2d4b61",
"name": "Design team",
"source": "custom",
"member_count": 12,
"description": "Product designers",
"role": "editor",
"unresolved_count": 0
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Update workspace group
Renames a group, changes its description, or changes the role it grants. Send only the fields you want to change.
Set role to null to clear it, so the group grants no role. Leave role out to keep it. A new role on a custom group applies to every member right away.
A group whose source is idp gets its name and members from your identity provider, so they can’t be changed here. Its role and description can still change. An idp group grants its role only while the workspace uses identity-provider groups. Otherwise its role is stored but grants nothing. You can’t make a change that removes your own admin access.
The response’s unresolved_count is always 0. Read the real count from List workspace groups.
Groups need the Business plan or higher. Below it, this returns a 402.
This is limited to 60 requests per minute, shared with the other endpoints that change groups or their members. 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/workspace/groups/{group_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Brand design",
"description": "Brand and marketing designers",
"role": "viewer"
}
'import requests
url = "https://app.base44.com/api/workspace/groups/{group_id}"
payload = {
"name": "Brand design",
"description": "Brand and marketing designers",
"role": "viewer"
}
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: 'Brand design',
description: 'Brand and marketing designers',
role: 'viewer'
})
};
fetch('https://app.base44.com/api/workspace/groups/{group_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/workspace/groups/{group_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' => 'Brand design',
'description' => 'Brand and marketing designers',
'role' => 'viewer'
]),
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/workspace/groups/{group_id}"
payload := strings.NewReader("{\n \"name\": \"Brand design\",\n \"description\": \"Brand and marketing designers\",\n \"role\": \"viewer\"\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/workspace/groups/{group_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Brand design\",\n \"description\": \"Brand and marketing designers\",\n \"role\": \"viewer\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/workspace/groups/{group_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\": \"Brand design\",\n \"description\": \"Brand and marketing designers\",\n \"role\": \"viewer\"\n}"
response = http.request(request)
puts response.read_body{
"id": "68b4e1d2c9a7f3001e2d4b61",
"name": "Design team",
"source": "custom",
"member_count": 12,
"description": "Product designers",
"role": "editor",
"unresolved_count": 0
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
Personal access token, sent as Authorization: Bearer <token>.
Path Parameters
ID of the group to update. Get it from id in List workspace groups.
Query Parameters
Body
New name, up to 100 characters. An identity-provider group's name can't change.
1 - 100"Brand design"
New description, up to 500 characters. An empty string clears it.
500"Brand and marketing designers"
New role: admin, editor, viewer, or no_access. Send null to clear it so the group grants no role, or leave it out to keep it.
"viewer"
Response
The updated group.
ID of the group.
"68b4e1d2c9a7f3001e2d4b61"
Name of the group.
"Design team"
custom for a group created in Base44, or idp for one your identity provider sends through SCIM. An idp group's name and members come from the identity provider.
"custom"
Number of members.
12
Short description of the group, or null when it has none.
"Product designers"
Role every member gets from the group: admin, editor, viewer, or no_access. null when the group grants no role.
"editor"
Members your identity provider sent who don't have a Base44 account in the workspace yet. Always 0 for a custom group.
0
Was this page helpful?