Create a single project
curl -X POST 'https://api.growthbook.io/api/v1/projects' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"name":"My Project","description":"Super cool project"}'import requests
url = "https://api.growthbook.io/api/v1/projects"
payload = {
"name": "<string>",
"owner": "<string>",
"description": "<string>",
"publicId": "<string>",
"settings": {
"statsEngine": "<string>",
"confidenceLevel": 123,
"pValueThreshold": 123
},
"restrictAccess": True,
"allowTargeting": 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>',
owner: '<string>',
description: '<string>',
publicId: '<string>',
settings: {statsEngine: '<string>', confidenceLevel: 123, pValueThreshold: 123},
restrictAccess: true,
allowTargeting: true
})
};
fetch('https://api.growthbook.io/api/v1/projects', 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/projects",
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>',
'owner' => '<string>',
'description' => '<string>',
'publicId' => '<string>',
'settings' => [
'statsEngine' => '<string>',
'confidenceLevel' => 123,
'pValueThreshold' => 123
],
'restrictAccess' => true,
'allowTargeting' => 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/projects"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"owner\": \"<string>\",\n \"description\": \"<string>\",\n \"publicId\": \"<string>\",\n \"settings\": {\n \"statsEngine\": \"<string>\",\n \"confidenceLevel\": 123,\n \"pValueThreshold\": 123\n },\n \"restrictAccess\": true,\n \"allowTargeting\": 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/projects")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"owner\": \"<string>\",\n \"description\": \"<string>\",\n \"publicId\": \"<string>\",\n \"settings\": {\n \"statsEngine\": \"<string>\",\n \"confidenceLevel\": 123,\n \"pValueThreshold\": 123\n },\n \"restrictAccess\": true,\n \"allowTargeting\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.growthbook.io/api/v1/projects")
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 \"owner\": \"<string>\",\n \"description\": \"<string>\",\n \"publicId\": \"<string>\",\n \"settings\": {\n \"statsEngine\": \"<string>\",\n \"confidenceLevel\": 123,\n \"pValueThreshold\": 123\n },\n \"restrictAccess\": true,\n \"allowTargeting\": true\n}"
response = http.request(request)
puts response.read_body{
"project": {
"id": "<string>",
"name": "<string>",
"dateCreated": "2023-11-07T05:31:56Z",
"dateUpdated": "2023-11-07T05:31:56Z",
"owner": "<string>",
"description": "<string>",
"publicId": "<string>",
"restrictAccess": true,
"allowTargeting": true,
"ownerEmail": "<string>",
"settings": {
"statsEngine": "<string>",
"confidenceLevel": 123,
"pValueThreshold": 123
}
}
}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 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.
10000URL-safe slug (lowercase letters, numbers, dashes). Auto-generated from name if not provided.
Project stats settings that, when set, override the organization settings.
Show child attributes
Show child attributes
When true, only members with an explicit role on this Project (directly or via a team) can access it. Members with the manageTeam permission retain access. Requires a Pro or Enterprise plan.
Whether Feature Flags owned by other Projects may add this Project to their Targeting Projects. Defaults to true. Turning it off blocks new targeting (and All Projects); existing targeting is kept.
Response
Resource created
Show child attributes
Show child attributes
Was this page helpful?
curl -X POST 'https://api.growthbook.io/api/v1/projects' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"name":"My Project","description":"Super cool project"}'import requests
url = "https://api.growthbook.io/api/v1/projects"
payload = {
"name": "<string>",
"owner": "<string>",
"description": "<string>",
"publicId": "<string>",
"settings": {
"statsEngine": "<string>",
"confidenceLevel": 123,
"pValueThreshold": 123
},
"restrictAccess": True,
"allowTargeting": 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>',
owner: '<string>',
description: '<string>',
publicId: '<string>',
settings: {statsEngine: '<string>', confidenceLevel: 123, pValueThreshold: 123},
restrictAccess: true,
allowTargeting: true
})
};
fetch('https://api.growthbook.io/api/v1/projects', 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/projects",
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>',
'owner' => '<string>',
'description' => '<string>',
'publicId' => '<string>',
'settings' => [
'statsEngine' => '<string>',
'confidenceLevel' => 123,
'pValueThreshold' => 123
],
'restrictAccess' => true,
'allowTargeting' => 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/projects"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"owner\": \"<string>\",\n \"description\": \"<string>\",\n \"publicId\": \"<string>\",\n \"settings\": {\n \"statsEngine\": \"<string>\",\n \"confidenceLevel\": 123,\n \"pValueThreshold\": 123\n },\n \"restrictAccess\": true,\n \"allowTargeting\": 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/projects")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"owner\": \"<string>\",\n \"description\": \"<string>\",\n \"publicId\": \"<string>\",\n \"settings\": {\n \"statsEngine\": \"<string>\",\n \"confidenceLevel\": 123,\n \"pValueThreshold\": 123\n },\n \"restrictAccess\": true,\n \"allowTargeting\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.growthbook.io/api/v1/projects")
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 \"owner\": \"<string>\",\n \"description\": \"<string>\",\n \"publicId\": \"<string>\",\n \"settings\": {\n \"statsEngine\": \"<string>\",\n \"confidenceLevel\": 123,\n \"pValueThreshold\": 123\n },\n \"restrictAccess\": true,\n \"allowTargeting\": true\n}"
response = http.request(request)
puts response.read_body{
"project": {
"id": "<string>",
"name": "<string>",
"dateCreated": "2023-11-07T05:31:56Z",
"dateUpdated": "2023-11-07T05:31:56Z",
"owner": "<string>",
"description": "<string>",
"publicId": "<string>",
"restrictAccess": true,
"allowTargeting": true,
"ownerEmail": "<string>",
"settings": {
"statsEngine": "<string>",
"confidenceLevel": 123,
"pValueThreshold": 123
}
}
}
