Create a single saved group
curl -X POST 'https://api.growthbook.io/api/v1/saved-groups' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"name":"interal-users","values":["userId-123","userId-345","userId-678"],"attributeKey":"userId","owner":""}'import requests
url = "https://api.growthbook.io/api/v1/saved-groups"
payload = {
"name": "<string>",
"condition": "<string>",
"attributeKey": "<string>",
"values": ["<string>"],
"owner": "<string>",
"projects": ["<string>"],
"bypassApproval": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
condition: '<string>',
attributeKey: '<string>',
values: ['<string>'],
owner: '<string>',
projects: ['<string>'],
bypassApproval: true
})
};
fetch('https://api.growthbook.io/api/v1/saved-groups', 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.growthbook.io/api/v1/saved-groups",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'condition' => '<string>',
'attributeKey' => '<string>',
'values' => [
'<string>'
],
'owner' => '<string>',
'projects' => [
'<string>'
],
'bypassApproval' => true
]),
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://api.growthbook.io/api/v1/saved-groups"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"condition\": \"<string>\",\n \"attributeKey\": \"<string>\",\n \"values\": [\n \"<string>\"\n ],\n \"owner\": \"<string>\",\n \"projects\": [\n \"<string>\"\n ],\n \"bypassApproval\": true\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.growthbook.io/api/v1/saved-groups")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"condition\": \"<string>\",\n \"attributeKey\": \"<string>\",\n \"values\": [\n \"<string>\"\n ],\n \"owner\": \"<string>\",\n \"projects\": [\n \"<string>\"\n ],\n \"bypassApproval\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.growthbook.io/api/v1/saved-groups")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"condition\": \"<string>\",\n \"attributeKey\": \"<string>\",\n \"values\": [\n \"<string>\"\n ],\n \"owner\": \"<string>\",\n \"projects\": [\n \"<string>\"\n ],\n \"bypassApproval\": true\n}"
response = http.request(request)
puts response.read_body{
"savedGroup": {
"id": "<string>",
"dateCreated": "2023-11-07T05:31:56Z",
"dateUpdated": "2023-11-07T05:31:56Z",
"name": "<string>",
"owner": "<string>",
"ownerEmail": "<string>",
"condition": "<string>",
"attributeKey": "<string>",
"values": [
"<string>"
],
"description": "<string>",
"projects": [
"<string>"
],
"archived": true,
"useEmptyListGroup": true
}
}Authorizations
If using Bearer auth, pass the Secret Key as the token:
curl https://api.growthbook.io/api/v1/features -H "Authorization: Bearer secret_abc123DEF456"
Body
The display name of the Saved Group
The type of Saved Group (inferred from other arguments if missing)
condition, list When type = 'condition', this is the JSON-encoded condition for the group
When type = 'list', this is the attribute key the group is based on
When type = 'list', this is the list of values for the attribute key
The userId or email address of the owner. If an email address is provided, it will be used to look up the userId of the matching organization member. If an ID is provided, it will be validated as existing in the organization. When omitted, it defaults to the user associated with the request's Personal Access Token (PAT), if one is being used.
Set to true to skip the approval flow when the org requires approvals on saved groups. Requires the bypassApprovalChecks permission on every project the saved group belongs to. When the org does not require approvals, this flag has no effect.
Response
Resource created
Show child attributes
Show child attributes
Was this page helpful?
curl -X POST 'https://api.growthbook.io/api/v1/saved-groups' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"name":"interal-users","values":["userId-123","userId-345","userId-678"],"attributeKey":"userId","owner":""}'import requests
url = "https://api.growthbook.io/api/v1/saved-groups"
payload = {
"name": "<string>",
"condition": "<string>",
"attributeKey": "<string>",
"values": ["<string>"],
"owner": "<string>",
"projects": ["<string>"],
"bypassApproval": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
condition: '<string>',
attributeKey: '<string>',
values: ['<string>'],
owner: '<string>',
projects: ['<string>'],
bypassApproval: true
})
};
fetch('https://api.growthbook.io/api/v1/saved-groups', 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.growthbook.io/api/v1/saved-groups",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'condition' => '<string>',
'attributeKey' => '<string>',
'values' => [
'<string>'
],
'owner' => '<string>',
'projects' => [
'<string>'
],
'bypassApproval' => true
]),
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://api.growthbook.io/api/v1/saved-groups"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"condition\": \"<string>\",\n \"attributeKey\": \"<string>\",\n \"values\": [\n \"<string>\"\n ],\n \"owner\": \"<string>\",\n \"projects\": [\n \"<string>\"\n ],\n \"bypassApproval\": true\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.growthbook.io/api/v1/saved-groups")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"condition\": \"<string>\",\n \"attributeKey\": \"<string>\",\n \"values\": [\n \"<string>\"\n ],\n \"owner\": \"<string>\",\n \"projects\": [\n \"<string>\"\n ],\n \"bypassApproval\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.growthbook.io/api/v1/saved-groups")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"condition\": \"<string>\",\n \"attributeKey\": \"<string>\",\n \"values\": [\n \"<string>\"\n ],\n \"owner\": \"<string>\",\n \"projects\": [\n \"<string>\"\n ],\n \"bypassApproval\": true\n}"
response = http.request(request)
puts response.read_body{
"savedGroup": {
"id": "<string>",
"dateCreated": "2023-11-07T05:31:56Z",
"dateUpdated": "2023-11-07T05:31:56Z",
"name": "<string>",
"owner": "<string>",
"ownerEmail": "<string>",
"condition": "<string>",
"attributeKey": "<string>",
"values": [
"<string>"
],
"description": "<string>",
"projects": [
"<string>"
],
"archived": true,
"useEmptyListGroup": true
}
}
