GrowthBook Dashboards API
The Dashboards API from GrowthBook — 3 operation(s) for dashboards.
The Dashboards API from GrowthBook — 3 operation(s) for dashboards.
openapi: 3.1.0
info:
version: 1.0.0
title: GrowthBook REST AnalyticsExplorations Dashboards API
description: "GrowthBook offers a full REST API for interacting with the application.\n\nRequest data can use either JSON or Form data encoding (with proper `Content-Type` headers). All response bodies are JSON-encoded.\n\nThe API base URL for GrowthBook Cloud is `https://api.growthbook.io/api`. For self-hosted deployments, it is the same as your API_HOST environment variable (defaults to `http://localhost:3100/api`). The rest of these docs will assume you are using GrowthBook Cloud.\n\n## Versioning\n\nEndpoints are versioned by path prefix:\n\n- `/v1/...` — stable, widely-supported endpoints\n- `/v2/...` — updated endpoints with improved shapes (e.g. unified per-rule environment scope for feature flags)\n\nNew integrations should prefer v2 where available.\n\n## Authentication\n\nWe support both the HTTP Basic and Bearer authentication schemes for convenience.\n\nYou first need to generate a new API Key in GrowthBook. Different keys have different permissions:\n\n- **Personal Access Tokens**: These are sensitive and provide the same level of access as the user has to an organization. These can be created by going to `Personal Access Tokens` under the your user menu.\n- **Secret Keys**: These are sensitive and provide the level of access for the role, which currently is either `admin` or `readonly`. Only Admins with the `manageApiKeys` permission can manage Secret Keys on behalf of an organization. These can be created by going to `Settings -> API Keys`\n\nIf using HTTP Basic auth, pass the Secret Key as the username and leave the password blank (when using curl, add `:` at the end of the secret to indicate an empty password)\n\n```bash\ncurl https://api.growthbook.io/api/v1/features \\\n -u secret_abc123DEF456:\n```\n\nIf using Bearer auth, pass the Secret Key as the token:\n\n```bash\ncurl https://api.growthbook.io/api/v1/features \\\n-H \"Authorization: Bearer secret_abc123DEF456\"\n```\n\n## Errors\n\nThe API may return the following error status codes:\n\n- **400** - Bad Request - Often due to a missing required parameter\n- **401** - Unauthorized - No valid API key provided\n- **402** - Request Failed - The parameters are valid, but the request failed\n- **403** - Forbidden - Provided API key does not have the required access\n- **404** - Not Found - Unknown API route or requested resource\n- **429** - Too Many Requests - You exceeded the rate limit of 60 requests per minute. Try again later.\n- **5XX** - Server Error - Something went wrong on GrowthBook's end (these are rare)\n\nThe response body will be a JSON object with the following properties:\n\n- **message** - Information about the error\n"
servers:
- url: https://api.growthbook.io/api
description: GrowthBook Cloud
- url: https://{domain}/api
description: Self-hosted GrowthBook
security:
- bearerAuth: []
- basicAuth: []
tags:
- name: Dashboards
x-displayName: Dashboards
description: ''
paths:
/v1/dashboards/{id}:
get:
operationId: getDashboard
summary: Get a single dashboard
tags:
- Dashboards
parameters:
- name: id
in: path
required: true
description: ''
schema:
type: string
responses:
'200':
content:
application/json:
schema:
type: object
properties:
dashboard:
$ref: '#/components/schemas/Dashboard'
required:
- dashboard
additionalProperties: false
x-codeSamples:
- lang: cURL
source: "curl -X GET 'https://api.growthbook.io/api/v1/dashboards/{id}' \\\n -H 'Authorization: Bearer YOUR_API_KEY'"
delete:
operationId: deleteDashboard
summary: Delete a single dashboard
tags:
- Dashboards
parameters:
- name: id
in: path
required: true
description: ''
schema:
type: string
responses:
'200':
content:
application/json:
schema:
type: object
properties:
deletedId:
type: string
required:
- deletedId
additionalProperties: false
x-codeSamples:
- lang: cURL
source: "curl -X DELETE 'https://api.growthbook.io/api/v1/dashboards/{id}' \\\n -H 'Authorization: Bearer YOUR_API_KEY'"
put:
operationId: updateDashboard
summary: Update a single dashboard
tags:
- Dashboards
parameters:
- name: id
in: path
required: true
description: ''
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
title:
description: The display name of the Dashboard
type: string
editLevel:
description: Dashboards that are "published" are editable by organization members with appropriate permissions
type: string
enum:
- published
- private
shareLevel:
description: General Dashboards only. Dashboards that are "published" are viewable by organization members with appropriate permissions
type: string
enum:
- published
- private
enableAutoUpdates:
description: If enabled for a General Dashboard, also requires an updateSchedule
type: boolean
updateSchedule:
description: General Dashboards only. Experiment Dashboards update based on the parent experiment instead
anyOf:
- type: object
properties:
type:
type: string
const: stale
hours:
type: number
required:
- type
- hours
additionalProperties: false
- type: object
properties:
type:
type: string
const: cron
cron:
type: string
required:
- type
- cron
additionalProperties: false
projects:
description: General Dashboards only, Experiment Dashboards use the experiment's projects
type: array
items:
type: string
blocks:
type: array
items:
anyOf:
- anyOf:
- type: object
properties:
type:
type: string
const: markdown
title:
type: string
description:
type: string
snapshotId:
type: string
content:
type: string
required:
- type
- title
- description
- content
additionalProperties: false
- type: object
properties:
type:
type: string
const: experiment-metadata
title:
type: string
description:
type: string
snapshotId:
type: string
experimentId:
type: string
showDescription:
type: boolean
showHypothesis:
type: boolean
showVariationImages:
type: boolean
variationIds:
type: array
items:
type: string
required:
- type
- title
- description
- experimentId
- showDescription
- showHypothesis
- showVariationImages
additionalProperties: false
- type: object
properties:
type:
type: string
const: experiment-metric
title:
type: string
description:
type: string
snapshotId:
type: string
experimentId:
type: string
metricIds:
type: array
items:
type: string
variationIds:
type: array
items:
type: string
baselineRow:
type: number
differenceType:
type: string
enum:
- absolute
- relative
- scaled
columnsFilter:
type: array
items:
type: string
enum:
- Metric & Variation Names
- Baseline Average
- Variation Averages
- Chance to Win
- CI Graph
- Lift
sliceTagsFilter:
type: array
items:
type: string
metricTagFilter:
type: array
items:
type: string
sortBy:
anyOf:
- type: string
enum:
- metrics
- metricTags
- significance
- change
- type: 'null'
sortDirection:
anyOf:
- type: string
enum:
- asc
- desc
- type: 'null'
required:
- type
- title
- description
- snapshotId
- experimentId
- metricIds
- variationIds
- baselineRow
- differenceType
- columnsFilter
- sliceTagsFilter
- metricTagFilter
- sortBy
- sortDirection
additionalProperties: false
- type: object
properties:
type:
type: string
const: experiment-dimension
title:
type: string
description:
type: string
snapshotId:
type: string
experimentId:
type: string
dimensionId:
type: string
dimensionValues:
type: array
items:
type: string
metricIds:
type: array
items:
type: string
variationIds:
type: array
items:
type: string
baselineRow:
type: number
differenceType:
type: string
enum:
- absolute
- relative
- scaled
columnsFilter:
type: array
items:
type: string
enum:
- Metric & Variation Names
- Baseline Average
- Variation Averages
- Chance to Win
- CI Graph
- Lift
metricTagFilter:
type: array
items:
type: string
sortBy:
anyOf:
- type: string
enum:
- metrics
- metricTags
- significance
- change
- type: 'null'
sortDirection:
anyOf:
- type: string
enum:
- asc
- desc
- type: 'null'
required:
- type
- title
- description
- snapshotId
- experimentId
- dimensionId
- dimensionValues
- metricIds
- variationIds
- baselineRow
- differenceType
- columnsFilter
- metricTagFilter
- sortBy
- sortDirection
additionalProperties: false
- type: object
properties:
type:
type: string
const: experiment-time-series
title:
type: string
description:
type: string
snapshotId:
type: string
experimentId:
type: string
metricId:
type: string
metricIds:
type: array
items:
type: string
variationIds:
type: array
items:
type: string
differenceType:
type: string
enum:
- absolute
- relative
- scaled
sliceTagsFilter:
type: array
items:
type: string
metricTagFilter:
type: array
items:
type: string
sortBy:
anyOf:
- type: string
enum:
- metrics
- metricTags
- significance
- change
- type: 'null'
sortDirection:
anyOf:
- type: string
enum:
- asc
- desc
- type: 'null'
required:
- type
- title
- description
- snapshotId
- experimentId
- metricIds
- variationIds
- differenceType
- sliceTagsFilter
- metricTagFilter
- sortBy
- sortDirection
additionalProperties: false
- type: object
properties:
type:
type: string
const: experiment-traffic
title:
type: string
description:
type: string
snapshotId:
type: string
experimentId:
type: string
showTable:
type: boolean
showTimeseries:
type: boolean
required:
- type
- title
- description
- experimentId
- showTable
- showTimeseries
additionalProperties: false
- type: object
properties:
type:
type: string
const: sql-explorer
title:
type: string
description:
type: string
snapshotId:
type: string
savedQueryId:
type: string
dataVizConfigIndex:
type: number
blockConfig:
type: array
items:
type: string
required:
- type
- title
- description
- savedQueryId
- blockConfig
additionalProperties: false
- type: object
properties:
type:
type: string
const: metric-explorer
title:
type: string
description:
type: string
snapshotId:
type: string
factMetricId:
type: string
visualizationType:
type: string
enum:
- histogram
- bigNumber
- timeseries
valueType:
type: string
enum:
- avg
- sum
metricAnalysisId:
type: string
analysisSettings:
type: object
properties:
userIdType:
type: string
lookbackDays:
type: number
populationType:
type: string
enum:
- metric
- factTable
- exposureQuery
- population
- segment
populationId:
anyOf:
- type: string
- type: 'null'
additionalNumeratorFilters:
type: array
items:
type: string
additionalDenominatorFilters:
type: array
items:
type: string
startDate:
type: string
endDate:
type: string
required:
- userIdType
- lookbackDays
- populationType
- populationId
- startDate
- endDate
additionalProperties: false
required:
- type
- title
- description
- factMetricId
- visualizationType
- valueType
- metricAnalysisId
- analysisSettings
additionalProperties: false
- anyOf:
- type: object
properties:
organization:
type: string
id:
type: string
uid:
type: string
type:
type: string
const: metric-explorer
title:
type: string
description:
type: string
snapshotId:
type: string
factMetricId:
type: string
visualizationType:
type: string
enum:
- histogram
- bigNumber
- timeseries
valueType:
type: string
enum:
- avg
- sum
metricAnalysisId:
type: string
analysisSettings:
type: object
properties:
userIdType:
type: string
lookbackDays:
type: number
populationType:
type: string
enum:
- metric
- factTable
- exposureQuery
- population
- segment
populationId:
anyOf:
- type: string
- type: 'null'
additionalNumeratorFilters:
type: array
items:
type: string
additionalDenominatorFilters:
type: array
items:
type: string
startDate:
type: string
endDate:
type: string
required:
- userIdType
- lookbackDays
- populationType
- populationId
- startDate
- endDate
additionalProperties: false
required:
- organization
- id
- uid
- type
- title
- description
- factMetricId
- visualizationType
- valueType
- metricAnalysisId
- analysisSettings
additionalProperties: false
- type: object
properties:
organization:
type: string
id:
type: string
uid:
type: string
type:
type: string
const: markdown
title:
type: string
description:
type: string
snapshotId:
type: string
content:
type: string
required:
- organization
- id
- uid
- type
- title
- description
- content
additionalProperties: false
- type: object
properties:
organization:
type: string
id:
type: string
uid:
type: string
type:
type: string
const: experiment-metadata
title:
type: string
description:
type: string
snapshotId:
type: string
experimentId:
type: string
showDescription:
type: boolean
showHypothesis:
type: boolean
showVariationImages:
type: boolean
variationIds:
type: array
items:
type: string
required:
- organization
- id
- uid
- type
- title
- description
- experimentId
- showDescription
- showHypothesis
- showVariationImages
additionalProperties: false
- type: object
properties:
organization:
type: string
id:
type: string
uid:
type: string
type:
type: string
const: experiment-metric
title:
type: string
description:
type: string
snapshotId:
type: string
experimentId:
type: string
metricIds:
type: array
items:
type: string
variationIds:
type: array
items:
type: string
baselineRow:
type: number
differenceType:
type: string
enum:
- absolute
- relative
- scaled
columnsFilter:
type: array
items:
type: string
enum:
- Metric & Variation Names
- Baseline Average
- Variation Averages
- Chance to Win
- CI Graph
- Lift
sliceTagsFilter:
type: array
items:
type: string
metricTagFilter:
type: array
items:
type: string
sortBy:
anyOf:
- type: string
enum:
- metrics
- metricTags
- significance
- change
- type: 'null'
sortDirection:
anyOf:
- type: string
enum:
- asc
- desc
- type: 'null'
required:
- organization
- id
- uid
- type
- title
- description
- snapshotId
- experimentId
- metricIds
- variationIds
- baselineRow
- differenceType
- columnsFilter
-
# --- truncated at 32 KB (159 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/growthbook/refs/heads/main/openapi/growthbook-dashboards-api-openapi.yml