Set the default value in a draft revision
curl -X PUT 'https://api.growthbook.io/api/v2/features/{id}/revisions/{version}/default-value' \
-H 'Authorization: Bearer YOUR_API_KEY'import requests
url = "https://api.growthbook.io/api/v2/features/{id}/revisions/{version}/default-value"
payload = {
"defaultValue": "<string>",
"defaultValueConfig": "<string>",
"revisionTitle": "<string>",
"revisionComment": "<string>",
"ignoreWarnings": True,
"skipSchemaValidation": True,
"skipHooks": True
}
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({
defaultValue: '<string>',
defaultValueConfig: '<string>',
revisionTitle: '<string>',
revisionComment: '<string>',
ignoreWarnings: true,
skipSchemaValidation: true,
skipHooks: true
})
};
fetch('https://api.growthbook.io/api/v2/features/{id}/revisions/{version}/default-value', 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/v2/features/{id}/revisions/{version}/default-value",
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([
'defaultValue' => '<string>',
'defaultValueConfig' => '<string>',
'revisionTitle' => '<string>',
'revisionComment' => '<string>',
'ignoreWarnings' => true,
'skipSchemaValidation' => true,
'skipHooks' => 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/v2/features/{id}/revisions/{version}/default-value"
payload := strings.NewReader("{\n \"defaultValue\": \"<string>\",\n \"defaultValueConfig\": \"<string>\",\n \"revisionTitle\": \"<string>\",\n \"revisionComment\": \"<string>\",\n \"ignoreWarnings\": true,\n \"skipSchemaValidation\": true,\n \"skipHooks\": true\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://api.growthbook.io/api/v2/features/{id}/revisions/{version}/default-value")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"defaultValue\": \"<string>\",\n \"defaultValueConfig\": \"<string>\",\n \"revisionTitle\": \"<string>\",\n \"revisionComment\": \"<string>\",\n \"ignoreWarnings\": true,\n \"skipSchemaValidation\": true,\n \"skipHooks\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.growthbook.io/api/v2/features/{id}/revisions/{version}/default-value")
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 \"defaultValue\": \"<string>\",\n \"defaultValueConfig\": \"<string>\",\n \"revisionTitle\": \"<string>\",\n \"revisionComment\": \"<string>\",\n \"ignoreWarnings\": true,\n \"skipSchemaValidation\": true,\n \"skipHooks\": true\n}"
response = http.request(request)
puts response.read_body{
"revision": {
"id": "<string>",
"featureId": "<string>",
"baseVersion": 123,
"version": 123,
"comment": "<string>",
"date": "2023-11-07T05:31:56Z",
"status": "<string>",
"rules": [
{
"description": "<string>",
"id": "<string>",
"enabled": true,
"type": "force",
"value": "<string>",
"allEnvironments": true,
"condition": "<string>",
"scheduleRules": [
{
"enabled": true,
"timestamp": "2023-11-07T05:31:56Z"
}
],
"scheduleType": "none",
"rampScheduleId": "<string>",
"savedGroupTargeting": [
{
"matchType": "all",
"savedGroups": [
"<string>"
]
}
],
"prerequisites": [
{
"id": "<string>",
"condition": "<string>"
}
],
"allProjects": true,
"projects": [
"<string>"
],
"sparse": true,
"config": "<string>",
"environments": [
"<string>"
],
"pendingRamp": "create"
}
],
"createdBy": {
"type": "dashboard",
"id": "<string>",
"name": "<string>",
"email": "<string>"
},
"publishedBy": {
"type": "dashboard",
"id": "<string>",
"name": "<string>",
"email": "<string>"
},
"defaultValue": "<string>",
"defaultValueConfig": "<string>",
"definitions": {},
"environmentsEnabled": {},
"envPrerequisites": {},
"prerequisites": [
{
"id": "<string>"
}
],
"metadata": {
"description": "<string>",
"owner": "<string>",
"project": "<string>",
"tags": [
"<string>"
],
"neverStale": true,
"valueType": "<string>",
"jsonSchema": {
"schemaType": "schema",
"schema": "<string>",
"simple": {},
"date": "2023-11-07T05:31:56Z",
"enabled": true
},
"customFields": {},
"baseConfig": "<string>"
},
"rampActions": [
{
"mode": "create",
"ruleId": "<string>",
"name": "<string>",
"environment": "<string>",
"templateId": "<string>",
"startActions": [
{
"patch": {
"ruleId": "<string>",
"coverage": 0.5,
"condition": "<string>",
"savedGroups": [
{
"match": "all",
"ids": [
"<string>"
]
}
],
"prerequisites": [
{
"id": "<string>",
"condition": "<string>"
}
],
"allEnvironments": true,
"environments": [
"<string>"
],
"force": "<unknown>",
"enabled": true
},
"targetType": "feature-rule",
"targetId": "<string>"
}
],
"steps": [
{
"interval": 1,
"actions": [
{
"patch": {
"ruleId": "<string>",
"coverage": 0.5,
"condition": "<string>",
"savedGroups": [
{
"match": "all",
"ids": [
"<string>"
]
}
],
"prerequisites": [
{
"id": "<string>",
"condition": "<string>"
}
],
"allEnvironments": true,
"environments": [
"<string>"
],
"force": "<unknown>",
"enabled": true
},
"targetType": "feature-rule",
"targetId": "<string>"
}
],
"approvalNotes": "<string>",
"monitored": true,
"holdConditions": {
"minSampleSize": 123,
"requiresApproval": true
}
}
],
"endActions": [
{
"patch": {
"ruleId": "<string>",
"coverage": 0.5,
"condition": "<string>",
"savedGroups": [
{
"match": "all",
"ids": [
"<string>"
]
}
],
"prerequisites": [
{
"id": "<string>",
"condition": "<string>"
}
],
"allEnvironments": true,
"environments": [
"<string>"
],
"force": "<unknown>",
"enabled": true
},
"targetType": "feature-rule",
"targetId": "<string>"
}
],
"startDate": "2023-11-07T05:31:56Z",
"cutoffDate": "2023-11-07T05:31:56Z",
"monitoringConfig": {
"datasourceId": "<string>",
"exposureQueryId": "<string>",
"guardrailMetricIds": [
"<string>"
],
"signalMetricIds": [
"<string>"
],
"updateScheduleMinutes": 11,
"monitoringMode": "auto",
"autoUpdate": true,
"srmAction": "rollback",
"noTrafficAction": "rollback",
"noTrafficGracePeriodHours": 1,
"multipleExposureAction": "rollback"
},
"lockdownConfig": {
"mode": "none"
},
"requiresStartApproval": true
}
],
"autoPublishOnApproval": true,
"scheduledPublishAt": "2023-11-07T05:31:56Z",
"scheduledPublishLockEdits": true,
"scheduledPublishLockOthers": true,
"scheduledPublishBypassApproval": true,
"scheduledPublishLastError": "<string>",
"autoPublishEnabledBy": "<string>",
"scheduledPublishAttempts": 123,
"scheduledPublishGaveUpAt": "2023-11-07T05:31:56Z",
"reviews": [
{
"userId": "<string>",
"status": "approved",
"timestamp": "2023-11-07T05:31:56Z",
"user": {
"type": "dashboard",
"id": "<string>",
"name": "<string>",
"email": "<string>"
}
}
]
}
}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"
Query Parameters
Deprecated — pass skipSchemaValidation in the request body instead.
"true"Deprecated — pass ignoreWarnings in the request body instead.
"true"Body
New default value. In Config mode (feature has baseConfig), the default must be exactly a config with no overrides: send "{}" to use baseConfig, or set defaultValueConfig to point at a descendant.
Key of a config within the feature's baseConfig family that the default value resolves to (the base itself or a descendant). The default is exactly that config with no overrides; pass null to use baseConfig. Do not embed @config: in defaultValue — use this field.
Title for a newly created draft. Only used when version is "new"; ignored for existing revisions.
Comment for a newly created draft. Only used when version is "new"; ignored for existing revisions.
Set to true to acknowledge the warnings listed in a blocked response and continue. This covers experiment guards, locked dependents, and references affected by an archive. When the organization treats schema failures as warnings, it also covers schema and invariant warnings. It never bypasses a rejected Custom Hook. On revision publish endpoints, it can also force-publish an out-of-date draft when the caller has Bypass draft approvals access.
Set to true to publish despite schema validation errors, failed invariants, or schema changes that invalidate dependent resources. This does not bypass a rejected Custom Hook; use skipHooks for that. The caller must have Bypass draft approvals access for Feature Flags, Configs, and Constants in every Project. Otherwise, this field is ignored.
Set to true to publish despite a Custom Hook rejection. This does not bypass schema validation; use skipSchemaValidation for that. The caller must have Bypass draft approvals access for Feature Flags, Configs, and Constants in every Project. Otherwise, this field is ignored.
Response
Resource updated
Show child attributes
Show child attributes
Was this page helpful?
curl -X PUT 'https://api.growthbook.io/api/v2/features/{id}/revisions/{version}/default-value' \
-H 'Authorization: Bearer YOUR_API_KEY'import requests
url = "https://api.growthbook.io/api/v2/features/{id}/revisions/{version}/default-value"
payload = {
"defaultValue": "<string>",
"defaultValueConfig": "<string>",
"revisionTitle": "<string>",
"revisionComment": "<string>",
"ignoreWarnings": True,
"skipSchemaValidation": True,
"skipHooks": True
}
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({
defaultValue: '<string>',
defaultValueConfig: '<string>',
revisionTitle: '<string>',
revisionComment: '<string>',
ignoreWarnings: true,
skipSchemaValidation: true,
skipHooks: true
})
};
fetch('https://api.growthbook.io/api/v2/features/{id}/revisions/{version}/default-value', 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/v2/features/{id}/revisions/{version}/default-value",
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([
'defaultValue' => '<string>',
'defaultValueConfig' => '<string>',
'revisionTitle' => '<string>',
'revisionComment' => '<string>',
'ignoreWarnings' => true,
'skipSchemaValidation' => true,
'skipHooks' => 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/v2/features/{id}/revisions/{version}/default-value"
payload := strings.NewReader("{\n \"defaultValue\": \"<string>\",\n \"defaultValueConfig\": \"<string>\",\n \"revisionTitle\": \"<string>\",\n \"revisionComment\": \"<string>\",\n \"ignoreWarnings\": true,\n \"skipSchemaValidation\": true,\n \"skipHooks\": true\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://api.growthbook.io/api/v2/features/{id}/revisions/{version}/default-value")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"defaultValue\": \"<string>\",\n \"defaultValueConfig\": \"<string>\",\n \"revisionTitle\": \"<string>\",\n \"revisionComment\": \"<string>\",\n \"ignoreWarnings\": true,\n \"skipSchemaValidation\": true,\n \"skipHooks\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.growthbook.io/api/v2/features/{id}/revisions/{version}/default-value")
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 \"defaultValue\": \"<string>\",\n \"defaultValueConfig\": \"<string>\",\n \"revisionTitle\": \"<string>\",\n \"revisionComment\": \"<string>\",\n \"ignoreWarnings\": true,\n \"skipSchemaValidation\": true,\n \"skipHooks\": true\n}"
response = http.request(request)
puts response.read_body{
"revision": {
"id": "<string>",
"featureId": "<string>",
"baseVersion": 123,
"version": 123,
"comment": "<string>",
"date": "2023-11-07T05:31:56Z",
"status": "<string>",
"rules": [
{
"description": "<string>",
"id": "<string>",
"enabled": true,
"type": "force",
"value": "<string>",
"allEnvironments": true,
"condition": "<string>",
"scheduleRules": [
{
"enabled": true,
"timestamp": "2023-11-07T05:31:56Z"
}
],
"scheduleType": "none",
"rampScheduleId": "<string>",
"savedGroupTargeting": [
{
"matchType": "all",
"savedGroups": [
"<string>"
]
}
],
"prerequisites": [
{
"id": "<string>",
"condition": "<string>"
}
],
"allProjects": true,
"projects": [
"<string>"
],
"sparse": true,
"config": "<string>",
"environments": [
"<string>"
],
"pendingRamp": "create"
}
],
"createdBy": {
"type": "dashboard",
"id": "<string>",
"name": "<string>",
"email": "<string>"
},
"publishedBy": {
"type": "dashboard",
"id": "<string>",
"name": "<string>",
"email": "<string>"
},
"defaultValue": "<string>",
"defaultValueConfig": "<string>",
"definitions": {},
"environmentsEnabled": {},
"envPrerequisites": {},
"prerequisites": [
{
"id": "<string>"
}
],
"metadata": {
"description": "<string>",
"owner": "<string>",
"project": "<string>",
"tags": [
"<string>"
],
"neverStale": true,
"valueType": "<string>",
"jsonSchema": {
"schemaType": "schema",
"schema": "<string>",
"simple": {},
"date": "2023-11-07T05:31:56Z",
"enabled": true
},
"customFields": {},
"baseConfig": "<string>"
},
"rampActions": [
{
"mode": "create",
"ruleId": "<string>",
"name": "<string>",
"environment": "<string>",
"templateId": "<string>",
"startActions": [
{
"patch": {
"ruleId": "<string>",
"coverage": 0.5,
"condition": "<string>",
"savedGroups": [
{
"match": "all",
"ids": [
"<string>"
]
}
],
"prerequisites": [
{
"id": "<string>",
"condition": "<string>"
}
],
"allEnvironments": true,
"environments": [
"<string>"
],
"force": "<unknown>",
"enabled": true
},
"targetType": "feature-rule",
"targetId": "<string>"
}
],
"steps": [
{
"interval": 1,
"actions": [
{
"patch": {
"ruleId": "<string>",
"coverage": 0.5,
"condition": "<string>",
"savedGroups": [
{
"match": "all",
"ids": [
"<string>"
]
}
],
"prerequisites": [
{
"id": "<string>",
"condition": "<string>"
}
],
"allEnvironments": true,
"environments": [
"<string>"
],
"force": "<unknown>",
"enabled": true
},
"targetType": "feature-rule",
"targetId": "<string>"
}
],
"approvalNotes": "<string>",
"monitored": true,
"holdConditions": {
"minSampleSize": 123,
"requiresApproval": true
}
}
],
"endActions": [
{
"patch": {
"ruleId": "<string>",
"coverage": 0.5,
"condition": "<string>",
"savedGroups": [
{
"match": "all",
"ids": [
"<string>"
]
}
],
"prerequisites": [
{
"id": "<string>",
"condition": "<string>"
}
],
"allEnvironments": true,
"environments": [
"<string>"
],
"force": "<unknown>",
"enabled": true
},
"targetType": "feature-rule",
"targetId": "<string>"
}
],
"startDate": "2023-11-07T05:31:56Z",
"cutoffDate": "2023-11-07T05:31:56Z",
"monitoringConfig": {
"datasourceId": "<string>",
"exposureQueryId": "<string>",
"guardrailMetricIds": [
"<string>"
],
"signalMetricIds": [
"<string>"
],
"updateScheduleMinutes": 11,
"monitoringMode": "auto",
"autoUpdate": true,
"srmAction": "rollback",
"noTrafficAction": "rollback",
"noTrafficGracePeriodHours": 1,
"multipleExposureAction": "rollback"
},
"lockdownConfig": {
"mode": "none"
},
"requiresStartApproval": true
}
],
"autoPublishOnApproval": true,
"scheduledPublishAt": "2023-11-07T05:31:56Z",
"scheduledPublishLockEdits": true,
"scheduledPublishLockOthers": true,
"scheduledPublishBypassApproval": true,
"scheduledPublishLastError": "<string>",
"autoPublishEnabledBy": "<string>",
"scheduledPublishAttempts": 123,
"scheduledPublishGaveUpAt": "2023-11-07T05:31:56Z",
"reviews": [
{
"userId": "<string>",
"status": "approved",
"timestamp": "2023-11-07T05:31:56Z",
"user": {
"type": "dashboard",
"id": "<string>",
"name": "<string>",
"email": "<string>"
}
}
]
}
}
