Update a single dashboard
curl -X PUT 'https://api.growthbook.io/api/v1/dashboards/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY'import requests
url = "https://api.growthbook.io/api/v1/dashboards/{id}"
payload = {
"title": "<string>",
"enableAutoUpdates": True,
"updateSchedule": {
"type": "stale",
"hours": 123
},
"projects": ["<string>"],
"globalControls": {
"projects": ["<string>"],
"experimentSearchString": "<string>"
},
"blocks": [{ "id": "<string>" }]
}
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({
title: '<string>',
enableAutoUpdates: true,
updateSchedule: {type: 'stale', hours: 123},
projects: ['<string>'],
globalControls: {projects: ['<string>'], experimentSearchString: '<string>'},
blocks: [{id: '<string>'}]
})
};
fetch('https://api.growthbook.io/api/v1/dashboards/{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://api.growthbook.io/api/v1/dashboards/{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([
'title' => '<string>',
'enableAutoUpdates' => true,
'updateSchedule' => [
'type' => 'stale',
'hours' => 123
],
'projects' => [
'<string>'
],
'globalControls' => [
'projects' => [
'<string>'
],
'experimentSearchString' => '<string>'
],
'blocks' => [
[
'id' => '<string>'
]
]
]),
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/dashboards/{id}"
payload := strings.NewReader("{\n \"title\": \"<string>\",\n \"enableAutoUpdates\": true,\n \"updateSchedule\": {\n \"type\": \"stale\",\n \"hours\": 123\n },\n \"projects\": [\n \"<string>\"\n ],\n \"globalControls\": {\n \"projects\": [\n \"<string>\"\n ],\n \"experimentSearchString\": \"<string>\"\n },\n \"blocks\": [\n {\n \"id\": \"<string>\"\n }\n ]\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/v1/dashboards/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"<string>\",\n \"enableAutoUpdates\": true,\n \"updateSchedule\": {\n \"type\": \"stale\",\n \"hours\": 123\n },\n \"projects\": [\n \"<string>\"\n ],\n \"globalControls\": {\n \"projects\": [\n \"<string>\"\n ],\n \"experimentSearchString\": \"<string>\"\n },\n \"blocks\": [\n {\n \"id\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.growthbook.io/api/v1/dashboards/{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 \"title\": \"<string>\",\n \"enableAutoUpdates\": true,\n \"updateSchedule\": {\n \"type\": \"stale\",\n \"hours\": 123\n },\n \"projects\": [\n \"<string>\"\n ],\n \"globalControls\": {\n \"projects\": [\n \"<string>\"\n ],\n \"experimentSearchString\": \"<string>\"\n },\n \"blocks\": [\n {\n \"id\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"dashboard": {
"id": "<string>",
"uid": "<string>",
"organization": "<string>",
"isDefault": true,
"isDeleted": true,
"userId": "<string>",
"editLevel": "published",
"shareLevel": "published",
"enableAutoUpdates": true,
"title": "<string>",
"dateCreated": "2023-11-07T05:31:56Z",
"dateUpdated": "2023-11-07T05:31:56Z",
"blocks": [
{
"organization": "<string>",
"id": "<string>",
"uid": "<string>",
"type": "metric-explorer",
"title": "<string>",
"description": "<string>",
"factMetricId": "<string>",
"visualizationType": "histogram",
"valueType": "avg",
"metricAnalysisId": "<string>",
"analysisSettings": {
"userIdType": "<string>",
"lookbackDays": 123,
"populationType": "metric",
"populationId": "<string>",
"startDate": "<string>",
"endDate": "<string>",
"additionalNumeratorFilters": [
"<string>"
],
"additionalDenominatorFilters": [
"<string>"
]
},
"snapshotId": "<string>",
"layout": {
"x": 11,
"y": 1,
"w": 12,
"h": 2,
"static": true
},
"comparison": {
"enabled": true,
"mode": "previousPeriod",
"previousTimeFrame": {
"predefined": "today",
"lookbackValue": 123,
"lookbackUnit": "hour",
"startDate": "<string>",
"endDate": "<string>"
}
},
"comparisonMetricAnalysisId": "<string>"
}
],
"experimentId": "<string>",
"updateSchedule": {
"type": "stale",
"hours": 123
},
"globalControls": {
"dateRange": {
"predefined": "today",
"lookbackValue": 123,
"lookbackUnit": "hour",
"startDate": "<string>",
"endDate": "<string>"
},
"dateGranularity": "auto",
"projects": [
"<string>"
],
"experimentSearchString": "<string>"
},
"comparison": {
"enabled": true,
"mode": "previousPeriod",
"previousTimeFrame": {
"predefined": "today",
"lookbackValue": 123,
"lookbackUnit": "hour",
"startDate": "<string>",
"endDate": "<string>"
}
},
"grid": {
"cols": 24,
"rowHeight": 40
},
"projects": [
"<string>"
],
"nextUpdate": "2023-11-07T05:31:56Z",
"lastUpdated": "2023-11-07T05:31:56Z"
}
}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"
Path Parameters
Body
The display name of the Dashboard
Dashboards that are "published" are editable by organization members with appropriate permissions
published, private General Dashboards only. Dashboards that are "published" are viewable by organization members with appropriate permissions
published, private If enabled for a General Dashboard, also requires an updateSchedule
General Dashboards only. Experiment Dashboards update based on the parent experiment instead
- Option 1
- Option 2
Show child attributes
Show child attributes
General Dashboards only, Experiment Dashboards use the experiment's projects
Show child attributes
Show child attributes
Dashboard-wide compare-to-previous-period. Takes precedence over any per-block comparison.
Show child attributes
Show child attributes
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
- Option 6
- Option 7
- Option 8
- Option 9
- Option 10
- Option 11
- Option 12
- Option 13
- Option 14
- Option 15
- Option 16
- Option 17
- Option 18
- Option 19
- Option 20
- Option 21
- Option 22
- Option 23
- Option 24
- Option 25
- Option 26
- Option 27
- Option 28
- Option 29
- Option 30
- Option 31
- Option 32
- Option 33
- Option 34
- Option 35
Show child attributes
Show child attributes
Response
Resource updated
Show child attributes
Show child attributes
Was this page helpful?
curl -X PUT 'https://api.growthbook.io/api/v1/dashboards/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY'import requests
url = "https://api.growthbook.io/api/v1/dashboards/{id}"
payload = {
"title": "<string>",
"enableAutoUpdates": True,
"updateSchedule": {
"type": "stale",
"hours": 123
},
"projects": ["<string>"],
"globalControls": {
"projects": ["<string>"],
"experimentSearchString": "<string>"
},
"blocks": [{ "id": "<string>" }]
}
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({
title: '<string>',
enableAutoUpdates: true,
updateSchedule: {type: 'stale', hours: 123},
projects: ['<string>'],
globalControls: {projects: ['<string>'], experimentSearchString: '<string>'},
blocks: [{id: '<string>'}]
})
};
fetch('https://api.growthbook.io/api/v1/dashboards/{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://api.growthbook.io/api/v1/dashboards/{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([
'title' => '<string>',
'enableAutoUpdates' => true,
'updateSchedule' => [
'type' => 'stale',
'hours' => 123
],
'projects' => [
'<string>'
],
'globalControls' => [
'projects' => [
'<string>'
],
'experimentSearchString' => '<string>'
],
'blocks' => [
[
'id' => '<string>'
]
]
]),
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/dashboards/{id}"
payload := strings.NewReader("{\n \"title\": \"<string>\",\n \"enableAutoUpdates\": true,\n \"updateSchedule\": {\n \"type\": \"stale\",\n \"hours\": 123\n },\n \"projects\": [\n \"<string>\"\n ],\n \"globalControls\": {\n \"projects\": [\n \"<string>\"\n ],\n \"experimentSearchString\": \"<string>\"\n },\n \"blocks\": [\n {\n \"id\": \"<string>\"\n }\n ]\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/v1/dashboards/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"<string>\",\n \"enableAutoUpdates\": true,\n \"updateSchedule\": {\n \"type\": \"stale\",\n \"hours\": 123\n },\n \"projects\": [\n \"<string>\"\n ],\n \"globalControls\": {\n \"projects\": [\n \"<string>\"\n ],\n \"experimentSearchString\": \"<string>\"\n },\n \"blocks\": [\n {\n \"id\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.growthbook.io/api/v1/dashboards/{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 \"title\": \"<string>\",\n \"enableAutoUpdates\": true,\n \"updateSchedule\": {\n \"type\": \"stale\",\n \"hours\": 123\n },\n \"projects\": [\n \"<string>\"\n ],\n \"globalControls\": {\n \"projects\": [\n \"<string>\"\n ],\n \"experimentSearchString\": \"<string>\"\n },\n \"blocks\": [\n {\n \"id\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"dashboard": {
"id": "<string>",
"uid": "<string>",
"organization": "<string>",
"isDefault": true,
"isDeleted": true,
"userId": "<string>",
"editLevel": "published",
"shareLevel": "published",
"enableAutoUpdates": true,
"title": "<string>",
"dateCreated": "2023-11-07T05:31:56Z",
"dateUpdated": "2023-11-07T05:31:56Z",
"blocks": [
{
"organization": "<string>",
"id": "<string>",
"uid": "<string>",
"type": "metric-explorer",
"title": "<string>",
"description": "<string>",
"factMetricId": "<string>",
"visualizationType": "histogram",
"valueType": "avg",
"metricAnalysisId": "<string>",
"analysisSettings": {
"userIdType": "<string>",
"lookbackDays": 123,
"populationType": "metric",
"populationId": "<string>",
"startDate": "<string>",
"endDate": "<string>",
"additionalNumeratorFilters": [
"<string>"
],
"additionalDenominatorFilters": [
"<string>"
]
},
"snapshotId": "<string>",
"layout": {
"x": 11,
"y": 1,
"w": 12,
"h": 2,
"static": true
},
"comparison": {
"enabled": true,
"mode": "previousPeriod",
"previousTimeFrame": {
"predefined": "today",
"lookbackValue": 123,
"lookbackUnit": "hour",
"startDate": "<string>",
"endDate": "<string>"
}
},
"comparisonMetricAnalysisId": "<string>"
}
],
"experimentId": "<string>",
"updateSchedule": {
"type": "stale",
"hours": 123
},
"globalControls": {
"dateRange": {
"predefined": "today",
"lookbackValue": 123,
"lookbackUnit": "hour",
"startDate": "<string>",
"endDate": "<string>"
},
"dateGranularity": "auto",
"projects": [
"<string>"
],
"experimentSearchString": "<string>"
},
"comparison": {
"enabled": true,
"mode": "previousPeriod",
"previousTimeFrame": {
"predefined": "today",
"lookbackValue": 123,
"lookbackUnit": "hour",
"startDate": "<string>",
"endDate": "<string>"
}
},
"grid": {
"cols": 24,
"rowHeight": 40
},
"projects": [
"<string>"
],
"nextUpdate": "2023-11-07T05:31:56Z",
"lastUpdated": "2023-11-07T05:31:56Z"
}
}
