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 - sliceTagsFilter - metricTagFilter - sortBy - sortDirection additionalProperties: false - type: object properties: organization: type: string id: type: string uid: type: string 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: - organization - id - uid - type - title - description - snapshotId - experimentId - dimensionId - dimensionValues - metricIds - variationIds - baselineRow - differenceType - columnsFilter - metricTagFilter - sortBy - sortDirection additionalProperties: false - type: object properties: organization: type: string id: type: string uid: type: string 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: - organization - id - uid - type - title - description - snapshotId - experimentId - metricIds - variationIds - differenceType - sliceTagsFilter - metricTagFilter - sortBy - sortDirection additionalProperties: false - type: object properties: organization: type: string id: type: string uid: type: string 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: - organization - id - uid - type - title - description - experimentId - showTable - showTimeseries additionalProperties: false - type: object properties: organization: type: string id: type: string uid: type: string 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: - organization - id - uid - type - title - description - savedQueryId - blockConfig additionalProperties: false - type: object properties: organization: type: string id: type: string uid: type: string type: type: string const: metric-exploration title: type: string description: type: string snapshotId: type: string explorerAnalysisId: type: string config: type: object properties: datasource: description: ID of the datasource to query type: string dimensions: type: array items: anyOf: - type: object properties: dimensionType: type: string const: date column: anyOf: - type: string - type: 'null' dateGranularity: type: string enum: - auto - hour - day - week - month - year required: - dimensionType - column - dateGranularity additionalProperties: false - type: object properties: dimensionType: type: string const: dynamic column: anyOf: - type: string - type: 'null' maxValues: type: number required: - dimensionType - column - maxValues additionalProperties: false - type: object properties: dimensionType: type: string const: static column: type: string values: type: array items: type: string required: - dimensionType - column - values additionalProperties: false - type: object properties: dimensionType: type: string const: slice slices: type: array items: type: object properties: name: type: string filters: type: array items: type: object properties: operator: type: string enum: - '=' - '!=' - < - <= - '>' - '>=' - in - not_in - contains - not_contains - starts_with - ends_with - is_null - not_null - is_true - is_false - sql_expr - saved_filter column: type: string values: type: array items: type: string required: - operator additionalProperties: false required: - name - filters additionalProperties: false required: - dimensionType - slices additionalProperties: false chartType: type: string enum: - line - area - timeseries-table - table - bar - stackedBar - horizontalBar - stackedHorizontalBar - bigNumber dateRange: type: object properties: predefined: type: string enum: - today - last7Days - last30Days - last90Days - customLookback - customDateRange lookbackValue: anyOf: - type: number - type: 'null' lookbackUnit: anyOf: - type: string enum: - hour - day - week - month - type: 'null' startDate: anyOf: - type: string - type: 'null' endDate: anyOf: - type: string - type: 'null' required: - predefined additionalProperties: false showAs: type: string enum: - total - per_unit type: type: string const: metric dataset: type: object properties: type: type: string const: metric values: type: array items: type: object properties: name: type: string rowFilters: type: array items: type: object properties: operator: type: string enum: - '=' - '!=' - < - <= - '>' - '>=' - in - not_in - contains - not_contains - starts_with - ends_with - is_null - not_null - is_true - is_false - sql_expr - saved_filter column: type: string values: type: array items: type: string required: - operator additionalProperties: false type: type: string const: metric metricId: type: string unit: anyOf: - type: string - type: 'null' denominatorUnit: anyOf: - type: string - type: 'null' required: - name - rowFilters - type - metricId - unit - denominatorUnit additionalProperties: false required: - type - values additionalProperties: false required: - datasource - dimensions - chartType - dateRange - type - dataset additionalProperties: false required: - organization - id - uid - type - title - description - explorerAnalysisId - config additionalProperties: false - type: object properties: organization: type: string id: type: string uid: type: string type: type: string const: fact-table-exploration title: type: string description: type: string snapshotId: type: string explorerAnalysisId: type: string config: type: object properties: datasource: description: ID of the datasource to query type: string dimensions: type: array items: anyOf: - type: object properties: dimensionType: type: string const: date column: anyOf: - type: string - type: 'null' dateGranularity: type: string enum: - auto - hour - day - week - month - year required: - dimensionType - column - dateGranularity additionalProperties: false - type: object properties: dimensionType: type: string const: dynamic column: anyOf: - type: string - type: 'null' maxValues: type: number required: - dimensionType - column - maxValues additionalProperties: false - type: object properties: dimensionType: type: string const: static column: type: string values: type: array items: type: string required: - dimensionType - column - values additionalProperties: false - type: object properties: dimensionType: type: string const: slice slices: type: array items: type: object properties: name: type: string filters: type: array items: type: object properties: operator: type: string enum: - '=' - '!=' - < - <= - '>' - '>=' - in - not_in - contains - not_contains - starts_with - ends_with - is_null - not_null - is_true - is_false - sql_expr - saved_filter column: type: string values: type: array items: type: string required: - operator additionalProperties: false required: - name - filters additionalProperties: false required: - dimensionType - slices additionalProperties: false chartType: type: string enum: - line - area - timeseries-table - table - bar - stackedBar - horizontalBar - stackedHorizontalBar - bigNumber dateRange: type: object properties: predefined: type: string enum: - today - last7Days - last30Days - last90Days - customLookback - customDateRange lookbackValue: anyOf: - type: number - type: 'null' lookbackUnit: anyOf: - type: string enum: - hour - day - week - month - type: 'null' startDate: anyOf: - type: string - type: 'null' endDate: anyOf: - type: string - type: 'null' required: - predefined additionalProperties: false showAs: type: string enum: - total - per_unit type: type: string const: fact_table dataset: type: object properties: type: type: string const: fact_table factTableId: anyOf: - type: string - type: 'null' values: type: array items: type: object properties: name: type: string rowFilters: type: array items: type: object properties: operator: type: string enum: - '=' - '!=' - < - <= - '>' - '>=' - in - not_in - contains - not_contains - starts_with - ends_with - is_null - not_null - is_true - is_false - sql_expr - saved_filter column: type: string values: type: array items: type: string required: - operator additionalProperties: false type: type: string const: fact_table valueType: type: string enum: - unit_count - count - sum valueColumn: anyOf: - type: string - type: 'null' unit: anyOf: - type: string - type: 'null' required: - name - rowFilters - type - valueType - valueColumn - unit additionalProperties: false required: - type - factTableId - values additionalProperties: false required: - datasource - dimensions - chartType - dateRange - type - dataset additionalProperties: false required: - organization - id - uid - type - title - description - explorerAnalysisId - config additionalProperties: false - type: object properties: organization: type: string id: type: string uid: type: string type: type: string const: data-source-exploration title: type: string description: type: string snapshotId: type: string explorerAnalysisId: type: string config: type: object properties: datasource: description: ID of the datasource to query type: string dimensions: type: array items: anyOf: - type: object properties: dimensionType: type: string const: date column: anyOf: - type: string - type: 'null' dateGranularity: type: string enum: - auto - hour - day - week - month - year required: - dimensionType - column - dateGranularity additionalProperties: false - type: object properties: dimensionType: type: string const: dynamic column: anyOf: - type: string - type: 'null' maxValues: type: number required: - dimensionType - column - maxValues additionalProperties: false - type: object properties: dimensionType: type: string const: static column: type: string values: type: array items: type: string required: - dimensionType - column - values additionalProperties: false - type: object properties: dimensionType: type: string const: slice slices: type: array items: type: object properties: name: type: string filters: type: array items: type: object properties: operator: type: string enum: - '=' - '!=' - < - <= - '>' - '>=' - in - not_in - contains - not_contains - starts_with - ends_with - is_null - not_null - is_true - is_false - sql_expr - saved_filter column: type: string values: type: array items: type: string required: - operator additionalProperties: false required: - name - filters additionalProperties: false required: - dimensionType - slices additionalProperties: false chartType: type: string enum: - line - area - timeseries-table - table - bar - stackedBar - horizontalBar - stackedHorizontalBar - bigNumber dateRange: type: object properties: predefined: type: string enum: - today - last7Days - last30Days - last90Days - customLookback - customDateRange lookbackValue: anyOf: - type: number - type: 'null' lookbackUnit: anyOf: - type: string enum: - hour - day - week - month - type: 'null' startDate: anyOf: - type: string - type: 'null' endDate: anyOf: - type: string - type: 'null' required: - predefined additionalProperties: false showAs: type: string enum: - total - per_unit type: type: string const: data_source dataset: type: object properties: type: type: string const: data_source table: type: string path: type: string timestampColumn: type: string columnTypes: type: object propertyNames: type: string additionalProperties: type: string enum: - string - number - date - boolean - other values: type: array items: type: object properties: name: type: string rowFilters: type: array items: type: object properties: operator: type: string enum: - '=' - '!=' - < - <= - '>' - '>=' - in - not_in - contains - not_contains - starts_with - ends_with - is_null - not_null - is_true - is_false - sql_expr - saved_filter column: type: string values: type: array items: type: string required: - operator additionalProperties: false type: type: string const: data_source valueType: type: string enum: - unit_count - count - sum valueColumn: anyOf: - type: string - type: 'null' unit: anyOf: - type: string - type: 'null' required: - name - rowFilters - type - valueType - valueColumn - unit additionalProperties: false required: - type - table - path - timestampColumn - columnTypes - values additionalProperties: false required: - datasource - dimensions - chartType - dateRange - type - dataset additionalProperties: false required: - organization - id - uid - type - title - description - explorerAnalysisId - config additionalProperties: false additionalProperties: false 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 PUT 'https://api.growthbook.io/api/v1/dashboards/{id}' \\\n -H 'Authorization: Bearer YOUR_API_KEY'" /v1/dashboards: post: operationId: createDashboard summary: Create a single dashboard tags: - Dashboards 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 experimentId: description: The parent experiment for an Experiment Dashboard, or undefined for a general dashboard type: string projects: description: General Dashboards only, Experiment Dashboards use the experiment's projects type: array items: type: string blocks: type: array items: 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 required: - title - editLevel - shareLevel - enableAutoUpdates - blocks additionalProperties: false 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 POST 'https://api.growthbook.io/api/v1/dashboards' \\\n -H 'Authorization: Bearer YOUR_API_KEY'" get: operationId: listDashboards summary: Get all dashboards tags: - Dashboards responses: '200': content: application/json: schema: type: object properties: dashboards: type: array items: $ref: '#/components/schemas/Dashboard' required: - dashboards additionalProperties: false x-codeSamples: - lang: cURL source: "curl -X GET 'https://api.growthbook.io/api/v1/dashboards' \\\n -H 'Authorization: Bearer YOUR_API_KEY'" /v1/dashboards/by-experiment/{experimentId}: get: operationId: getDashboardsForExperiment summary: Get all dashboards for an experiment tags: - Dashboards parameters: - name: experimentId in: path required: true description: '' schema: type: string responses: '200': content: application/json: schema: type: object properties: dashboards: type: array items: $ref: '#/components/schemas/Dashboard' required: - dashboards additionalProperties: false x-codeSamples: - lang: cURL source: "curl -X GET 'https://api.growthbook.io/api/v1/dashboards/by-experiment/{experimentId}' \\\n -H 'Authorization: Bearer YOUR_API_KEY'" components: schemas: Dashboard: type: object properties: id: type: string uid: type: string organization: type: string experimentId: type: string isDefault: type: boolean isDeleted: type: boolean userId: type: string editLevel: type: string enum: - published - private shareLevel: type: string enum: - published - private enableAutoUpdates: type: boolean updateSchedule: 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 title: type: string projects: type: array items: type: string nextUpdate: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ lastUpdated: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ dateCreated: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ dateUpdated: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ blocks: type: array items: 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 - sliceTagsFilter - metricTagFilter - sortBy - sortDirection additionalProperties: false - type: object properties: organization: type: string id: type: string uid: type: string 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: - organization - id - uid - type - title - description - snapshotId - experimentId - dimensionId - dimensionValues - metricIds - variationIds - baselineRow - differenceType - columnsFilter - metricTagFilter - sortBy - sortDirection additionalProperties: false - type: object properties: organization: type: string id: type: string uid: type: string 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: - organization - id - uid - type - title - description - snapshotId - experimentId - metricIds - variationIds - differenceType - sliceTagsFilter - metricTagFilter - sortBy - sortDirection additionalProperties: false - type: object properties: organization: type: string id: type: string uid: type: string 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: - organization - id - uid - type - title - description - experimentId - showTable - showTimeseries additionalProperties: false - type: object properties: organization: type: string id: type: string uid: type: string 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: - organization - id - uid - type - title - description - savedQueryId - blockConfig additionalProperties: false - type: object properties: organization: type: string id: type: string uid: type: string type: type: string const: metric-exploration title: type: string description: type: string snapshotId: type: string explorerAnalysisId: type: string config: type: object properties: datasource: description: ID of the datasource to query type: string dimensions: type: array items: anyOf: - type: object properties: dimensionType: type: string const: date column: anyOf: - type: string - type: 'null' dateGranularity: type: string enum: - auto - hour - day - week - month - year required: - dimensionType - column - dateGranularity additionalProperties: false - type: object properties: dimensionType: type: string const: dynamic column: anyOf: - type: string - type: 'null' maxValues: type: number required: - dimensionType - column - maxValues additionalProperties: false - type: object properties: dimensionType: type: string const: static column: type: string values: type: array items: type: string required: - dimensionType - column - values additionalProperties: false - type: object properties: dimensionType: type: string const: slice slices: type: array items: type: object properties: name: type: string filters: type: array items: type: object properties: operator: type: string enum: - '=' - '!=' - < - <= - '>' - '>=' - in - not_in - contains - not_contains - starts_with - ends_with - is_null - not_null - is_true - is_false - sql_expr - saved_filter column: type: string values: type: array items: type: string required: - operator additionalProperties: false required: - name - filters additionalProperties: false required: - dimensionType - slices additionalProperties: false chartType: type: string enum: - line - area - timeseries-table - table - bar - stackedBar - horizontalBar - stackedHorizontalBar - bigNumber dateRange: type: object properties: predefined: type: string enum: - today - last7Days - last30Days - last90Days - customLookback - customDateRange lookbackValue: anyOf: - type: number - type: 'null' lookbackUnit: anyOf: - type: string enum: - hour - day - week - month - type: 'null' startDate: anyOf: - type: string - type: 'null' endDate: anyOf: - type: string - type: 'null' required: - predefined additionalProperties: false showAs: type: string enum: - total - per_unit type: type: string const: metric dataset: type: object properties: type: type: string const: metric values: type: array items: type: object properties: name: type: string rowFilters: type: array items: type: object properties: operator: type: string enum: - '=' - '!=' - < - <= - '>' - '>=' - in - not_in - contains - not_contains - starts_with - ends_with - is_null - not_null - is_true - is_false - sql_expr - saved_filter column: type: string values: type: array items: type: string required: - operator additionalProperties: false type: type: string const: metric metricId: type: string unit: anyOf: - type: string - type: 'null' denominatorUnit: anyOf: - type: string - type: 'null' required: - name - rowFilters - type - metricId - unit - denominatorUnit additionalProperties: false required: - type - values additionalProperties: false required: - datasource - dimensions - chartType - dateRange - type - dataset additionalProperties: false required: - organization - id - uid - type - title - description - explorerAnalysisId - config additionalProperties: false - type: object properties: organization: type: string id: type: string uid: type: string type: type: string const: fact-table-exploration title: type: string description: type: string snapshotId: type: string explorerAnalysisId: type: string config: type: object properties: datasource: description: ID of the datasource to query type: string dimensions: type: array items: anyOf: - type: object properties: dimensionType: type: string const: date column: anyOf: - type: string - type: 'null' dateGranularity: type: string enum: - auto - hour - day - week - month - year required: - dimensionType - column - dateGranularity additionalProperties: false - type: object properties: dimensionType: type: string const: dynamic column: anyOf: - type: string - type: 'null' maxValues: type: number required: - dimensionType - column - maxValues additionalProperties: false - type: object properties: dimensionType: type: string const: static column: type: string values: type: array items: type: string required: - dimensionType - column - values additionalProperties: false - type: object properties: dimensionType: type: string const: slice slices: type: array items: type: object properties: name: type: string filters: type: array items: type: object properties: operator: type: string enum: - '=' - '!=' - < - <= - '>' - '>=' - in - not_in - contains - not_contains - starts_with - ends_with - is_null - not_null - is_true - is_false - sql_expr - saved_filter column: type: string values: type: array items: type: string required: - operator additionalProperties: false required: - name - filters additionalProperties: false required: - dimensionType - slices additionalProperties: false chartType: type: string enum: - line - area - timeseries-table - table - bar - stackedBar - horizontalBar - stackedHorizontalBar - bigNumber dateRange: type: object properties: predefined: type: string enum: - today - last7Days - last30Days - last90Days - customLookback - customDateRange lookbackValue: anyOf: - type: number - type: 'null' lookbackUnit: anyOf: - type: string enum: - hour - day - week - month - type: 'null' startDate: anyOf: - type: string - type: 'null' endDate: anyOf: - type: string - type: 'null' required: - predefined additionalProperties: false showAs: type: string enum: - total - per_unit type: type: string const: fact_table dataset: type: object properties: type: type: string const: fact_table factTableId: anyOf: - type: string - type: 'null' values: type: array items: type: object properties: name: type: string rowFilters: type: array items: type: object properties: operator: type: string enum: - '=' - '!=' - < - <= - '>' - '>=' - in - not_in - contains - not_contains - starts_with - ends_with - is_null - not_null - is_true - is_false - sql_expr - saved_filter column: type: string values: type: array items: type: string required: - operator additionalProperties: false type: type: string const: fact_table valueType: type: string enum: - unit_count - count - sum valueColumn: anyOf: - type: string - type: 'null' unit: anyOf: - type: string - type: 'null' required: - name - rowFilters - type - valueType - valueColumn - unit additionalProperties: false required: - type - factTableId - values additionalProperties: false required: - datasource - dimensions - chartType - dateRange - type - dataset additionalProperties: false required: - organization - id - uid - type - title - description - explorerAnalysisId - config additionalProperties: false - type: object properties: organization: type: string id: type: string uid: type: string type: type: string const: data-source-exploration title: type: string description: type: string snapshotId: type: string explorerAnalysisId: type: string config: type: object properties: datasource: description: ID of the datasource to query type: string dimensions: type: array items: anyOf: - type: object properties: dimensionType: type: string const: date column: anyOf: - type: string - type: 'null' dateGranularity: type: string enum: - auto - hour - day - week - month - year required: - dimensionType - column - dateGranularity additionalProperties: false - type: object properties: dimensionType: type: string const: dynamic column: anyOf: - type: string - type: 'null' maxValues: type: number required: - dimensionType - column - maxValues additionalProperties: false - type: object properties: dimensionType: type: string const: static column: type: string values: type: array items: type: string required: - dimensionType - column - values additionalProperties: false - type: object properties: dimensionType: type: string const: slice slices: type: array items: type: object properties: name: type: string filters: type: array items: type: object properties: operator: type: string enum: - '=' - '!=' - < - <= - '>' - '>=' - in - not_in - contains - not_contains - starts_with - ends_with - is_null - not_null - is_true - is_false - sql_expr - saved_filter column: type: string values: type: array items: type: string required: - operator additionalProperties: false required: - name - filters additionalProperties: false required: - dimensionType - slices additionalProperties: false chartType: type: string enum: - line - area - timeseries-table - table - bar - stackedBar - horizontalBar - stackedHorizontalBar - bigNumber dateRange: type: object properties: predefined: type: string enum: - today - last7Days - last30Days - last90Days - customLookback - customDateRange lookbackValue: anyOf: - type: number - type: 'null' lookbackUnit: anyOf: - type: string enum: - hour - day - week - month - type: 'null' startDate: anyOf: - type: string - type: 'null' endDate: anyOf: - type: string - type: 'null' required: - predefined additionalProperties: false showAs: type: string enum: - total - per_unit type: type: string const: data_source dataset: type: object properties: type: type: string const: data_source table: type: string path: type: string timestampColumn: type: string columnTypes: type: object propertyNames: type: string additionalProperties: type: string enum: - string - number - date - boolean - other values: type: array items: type: object properties: name: type: string rowFilters: type: array items: type: object properties: operator: type: string enum: - '=' - '!=' - < - <= - '>' - '>=' - in - not_in - contains - not_contains - starts_with - ends_with - is_null - not_null - is_true - is_false - sql_expr - saved_filter column: type: string values: type: array items: type: string required: - operator additionalProperties: false type: type: string const: data_source valueType: type: string enum: - unit_count - count - sum valueColumn: anyOf: - type: string - type: 'null' unit: anyOf: - type: string - type: 'null' required: - name - rowFilters - type - valueType - valueColumn - unit additionalProperties: false required: - type - table - path - timestampColumn - columnTypes - values additionalProperties: false required: - datasource - dimensions - chartType - dateRange - type - dataset additionalProperties: false required: - organization - id - uid - type - title - description - explorerAnalysisId - config additionalProperties: false required: - id - uid - organization - isDefault - isDeleted - userId - editLevel - shareLevel - enableAutoUpdates - title - dateCreated - dateUpdated - blocks additionalProperties: false securitySchemes: bearerAuth: type: http scheme: bearer description: 'If using Bearer auth, pass the Secret Key as the token: ```bash curl https://api.growthbook.io/api/v1/features -H "Authorization: Bearer secret_abc123DEF456" ``` ' basicAuth: type: http scheme: basic description: 'If using HTTP Basic auth, pass the Secret Key as the username and leave the password blank: ```bash curl https://api.growthbook.io/api/v1/features -u secret_abc123DEF456: # The ":" at the end stops curl from asking for a password ``` ' x-tagGroups: - name: Endpoints tags: - projects - environments - features-v2 - feature-revisions-v2 - features - feature-revisions - ramp-schedules - data-sources - fact-tables - fact-metrics - metrics - experiments - namespaces - snapshots - dimensions - segments - sdk-connections - visual-changesets - saved-groups - organizations - members - code-references - archetypes - queries - settings - attributes - usage - Dashboards - CustomFields - MetricGroups - Teams - ExperimentTemplates - AnalyticsExplorations - RampScheduleTemplates - name: Models tags: - AnalyticsExploration_model - Archetype_model - Attribute_model - CodeRef_model - CustomField_model - Dashboard_model - DataSource_model - Dimension_model - Environment_model - Experiment_model - ExperimentAnalysisSettings_model - ExperimentDecisionFrameworkSettings_model - ExperimentMetric_model - ExperimentMetricOverrideEntry_model - ExperimentResults_model - ExperimentSnapshot_model - ExperimentTemplate_model - ExperimentWithEnhancedStatus_model - FactMetric_model - FactTable_model - FactTableColumn_model - FactTableFilter_model - Feature_model - FeatureBaseRule_model - FeatureDefinition_model - FeatureEnvironment_model - FeatureEnvironmentV2_model - FeatureExperimentRefRule_model - FeatureExperimentRule_model - FeatureForceRule_model - FeatureRevision_model - FeatureRevisionV2_model - FeatureRolloutRule_model - FeatureRule_model - FeatureRuleV2_model - FeatureSafeRolloutRule_model - FeatureV2_model - FeatureWithRevisions_model - FeatureWithRevisionsV2_model - InformationSchema_model - InformationSchemaTable_model - LookbackOverride_model - Member_model - Metric_model - MetricAnalysis_model - MetricGroup_model - MetricUsage_model - Namespace_model - NamespaceExperimentMember_model - Organization_model - PaginationFields_model - Project_model - Query_model - RampSchedule_model - RampScheduleTemplate_model - SavedGroup_model - ScheduleRule_model - SdkConnection_model - Segment_model - Settings_model - Team_model - VisualChange_model - VisualChangeset_model