GrowthBook ExperimentTemplates API

The ExperimentTemplates API from GrowthBook — 3 operation(s) for experimenttemplates.

OpenAPI Specification

growthbook-experimenttemplates-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  version: 1.0.0
  title: GrowthBook REST AnalyticsExplorations ExperimentTemplates 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: ExperimentTemplates
  x-displayName: Experiment Templates
  description: ''
paths:
  /v1/experiment-templates/{id}:
    get:
      operationId: getExperimentTemplate
      summary: Get a single experimentTemplate
      tags:
      - ExperimentTemplates
      parameters:
      - name: id
        in: path
        required: true
        description: ''
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                properties:
                  experimentTemplate:
                    $ref: '#/components/schemas/ExperimentTemplate'
                required:
                - experimentTemplate
                additionalProperties: false
      x-codeSamples:
      - lang: cURL
        source: "curl -X GET 'https://api.growthbook.io/api/v1/experiment-templates/{id}' \\\n  -H 'Authorization: Bearer YOUR_API_KEY'"
    delete:
      operationId: deleteExperimentTemplate
      summary: Delete a single experimentTemplate
      tags:
      - ExperimentTemplates
      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/experiment-templates/{id}' \\\n  -H 'Authorization: Bearer YOUR_API_KEY'"
    put:
      operationId: updateExperimentTemplate
      summary: Update a single experimentTemplate
      tags:
      - ExperimentTemplates
      parameters:
      - name: id
        in: path
        required: true
        description: ''
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                project:
                  type: string
                templateMetadata:
                  type: object
                  properties:
                    name:
                      type: string
                    description:
                      type: string
                  required:
                  - name
                  additionalProperties: false
                type:
                  type: string
                  enum:
                  - standard
                hypothesis:
                  type: string
                description:
                  type: string
                tags:
                  type: array
                  items:
                    type: string
                customFields:
                  type: object
                  propertyNames:
                    type: string
                  additionalProperties:
                    type: string
                datasource:
                  type: string
                exposureQueryId:
                  type: string
                hashAttribute:
                  type: string
                fallbackAttribute:
                  type: string
                disableStickyBucketing:
                  type: boolean
                goalMetrics:
                  type: array
                  items:
                    type: string
                secondaryMetrics:
                  type: array
                  items:
                    type: string
                guardrailMetrics:
                  type: array
                  items:
                    type: string
                activationMetric:
                  type: string
                statsEngine:
                  type: string
                  enum:
                  - bayesian
                  - frequentist
                segment:
                  type: string
                skipPartialData:
                  type: boolean
                targeting:
                  type: object
                  properties:
                    coverage:
                      type: number
                    savedGroups:
                      type: array
                      items:
                        type: object
                        properties:
                          match:
                            type: string
                            enum:
                            - all
                            - none
                            - any
                          ids:
                            type: array
                            items:
                              type: string
                        required:
                        - match
                        - ids
                        additionalProperties: false
                    prerequisites:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          condition:
                            type: string
                        required:
                        - id
                        - condition
                        additionalProperties: false
                    condition:
                      type: string
                  required:
                  - coverage
                  - condition
                  additionalProperties: false
                customMetricSlices:
                  type: array
                  items:
                    type: object
                    properties:
                      slices:
                        type: array
                        items:
                          type: object
                          properties:
                            column:
                              type: string
                            levels:
                              type: array
                              items:
                                type: string
                          required:
                          - column
                          - levels
                          additionalProperties: false
                    required:
                    - slices
                    additionalProperties: false
              additionalProperties: false
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                properties:
                  experimentTemplate:
                    $ref: '#/components/schemas/ExperimentTemplate'
                required:
                - experimentTemplate
                additionalProperties: false
      x-codeSamples:
      - lang: cURL
        source: "curl -X PUT 'https://api.growthbook.io/api/v1/experiment-templates/{id}' \\\n  -H 'Authorization: Bearer YOUR_API_KEY'"
  /v1/experiment-templates:
    post:
      operationId: createExperimentTemplate
      summary: Create a single experimentTemplate
      tags:
      - ExperimentTemplates
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                project:
                  type: string
                templateMetadata:
                  type: object
                  properties:
                    name:
                      type: string
                    description:
                      type: string
                  required:
                  - name
                  additionalProperties: false
                type:
                  type: string
                  enum:
                  - standard
                hypothesis:
                  type: string
                description:
                  type: string
                tags:
                  type: array
                  items:
                    type: string
                customFields:
                  type: object
                  propertyNames:
                    type: string
                  additionalProperties:
                    type: string
                datasource:
                  type: string
                exposureQueryId:
                  type: string
                hashAttribute:
                  type: string
                fallbackAttribute:
                  type: string
                disableStickyBucketing:
                  type: boolean
                goalMetrics:
                  type: array
                  items:
                    type: string
                secondaryMetrics:
                  type: array
                  items:
                    type: string
                guardrailMetrics:
                  type: array
                  items:
                    type: string
                activationMetric:
                  type: string
                statsEngine:
                  type: string
                  enum:
                  - bayesian
                  - frequentist
                segment:
                  type: string
                skipPartialData:
                  type: boolean
                targeting:
                  type: object
                  properties:
                    coverage:
                      type: number
                    savedGroups:
                      type: array
                      items:
                        type: object
                        properties:
                          match:
                            type: string
                            enum:
                            - all
                            - none
                            - any
                          ids:
                            type: array
                            items:
                              type: string
                        required:
                        - match
                        - ids
                        additionalProperties: false
                    prerequisites:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          condition:
                            type: string
                        required:
                        - id
                        - condition
                        additionalProperties: false
                    condition:
                      type: string
                  required:
                  - coverage
                  - condition
                  additionalProperties: false
                customMetricSlices:
                  type: array
                  items:
                    type: object
                    properties:
                      slices:
                        type: array
                        items:
                          type: object
                          properties:
                            column:
                              type: string
                            levels:
                              type: array
                              items:
                                type: string
                          required:
                          - column
                          - levels
                          additionalProperties: false
                    required:
                    - slices
                    additionalProperties: false
              required:
              - templateMetadata
              - type
              - datasource
              - exposureQueryId
              - statsEngine
              - targeting
              additionalProperties: false
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                properties:
                  experimentTemplate:
                    $ref: '#/components/schemas/ExperimentTemplate'
                required:
                - experimentTemplate
                additionalProperties: false
      x-codeSamples:
      - lang: cURL
        source: "curl -X POST 'https://api.growthbook.io/api/v1/experiment-templates' \\\n  -H 'Authorization: Bearer YOUR_API_KEY'"
    get:
      operationId: listExperimentTemplates
      summary: Get all experimentTemplates
      tags:
      - ExperimentTemplates
      parameters:
      - name: projectId
        in: query
        description: ''
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                properties:
                  experimentTemplates:
                    type: array
                    items:
                      $ref: '#/components/schemas/ExperimentTemplate'
                required:
                - experimentTemplates
                additionalProperties: false
      x-codeSamples:
      - lang: cURL
        source: "curl -X GET 'https://api.growthbook.io/api/v1/experiment-templates' \\\n  -H 'Authorization: Bearer YOUR_API_KEY'"
  /v1/experiment-templates/bulk-import:
    post:
      operationId: bulkImportExperimentTemplates
      summary: Bulk create or update experiment templates
      tags:
      - ExperimentTemplates
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                templates:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                      data:
                        type: object
                        properties:
                          project:
                            type: string
                          templateMetadata:
                            type: object
                            properties:
                              name:
                                type: string
                              description:
                                type: string
                            required:
                            - name
                            additionalProperties: false
                          type:
                            type: string
                            enum:
                            - standard
                          hypothesis:
                            type: string
                          description:
                            type: string
                          tags:
                            type: array
                            items:
                              type: string
                          customFields:
                            type: object
                            propertyNames:
                              type: string
                            additionalProperties:
                              type: string
                          datasource:
                            type: string
                          exposureQueryId:
                            type: string
                          hashAttribute:
                            type: string
                          fallbackAttribute:
                            type: string
                          disableStickyBucketing:
                            type: boolean
                          goalMetrics:
                            type: array
                            items:
                              type: string
                          secondaryMetrics:
                            type: array
                            items:
                              type: string
                          guardrailMetrics:
                            type: array
                            items:
                              type: string
                          activationMetric:
                            type: string
                          statsEngine:
                            type: string
                            enum:
                            - bayesian
                            - frequentist
                          segment:
                            type: string
                          skipPartialData:
                            type: boolean
                          targeting:
                            type: object
                            properties:
                              coverage:
                                type: number
                              savedGroups:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    match:
                                      type: string
                                      enum:
                                      - all
                                      - none
                                      - any
                                    ids:
                                      type: array
                                      items:
                                        type: string
                                  required:
                                  - match
                                  - ids
                                  additionalProperties: false
                              prerequisites:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    condition:
                                      type: string
                                  required:
                                  - id
                                  - condition
                                  additionalProperties: false
                              condition:
                                type: string
                            required:
                            - coverage
                            - condition
                            additionalProperties: false
                          customMetricSlices:
                            type: array
                            items:
                              type: object
                              properties:
                                slices:
                                  type: array
                                  items:
                                    type: object
                                    properties:
                                      column:
                                        type: string
                                      levels:
                                        type: array
                                        items:
                                          type: string
                                    required:
                                    - column
                                    - levels
                                    additionalProperties: false
                              required:
                              - slices
                              additionalProperties: false
                        required:
                        - templateMetadata
                        - type
                        - datasource
                        - exposureQueryId
                        - statsEngine
                        - targeting
                        additionalProperties: false
                    required:
                    - id
                    - data
                    additionalProperties: false
              required:
              - templates
              additionalProperties: false
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                properties:
                  added:
                    type: integer
                  updated:
                    type: integer
                required:
                - added
                - updated
                additionalProperties: false
      x-codeSamples:
      - lang: cURL
        source: "curl -X POST 'https://api.growthbook.io/api/v1/experiment-templates/bulk-import' \\\n  -H 'Authorization: Bearer YOUR_API_KEY'"
components:
  schemas:
    ExperimentTemplate:
      type: object
      properties:
        id:
          type: string
        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))$
        project:
          type: string
        owner:
          description: The userId of the owner (or raw owner name/email for legacy records)
          type: string
        ownerEmail:
          description: The email address of the owner, when the owner can be resolved to a known user.
          type: string
        templateMetadata:
          type: object
          properties:
            name:
              type: string
            description:
              type: string
          required:
          - name
          additionalProperties: false
        type:
          type: string
          enum:
          - standard
        hypothesis:
          type: string
        description:
          type: string
        tags:
          type: array
          items:
            type: string
        customFields:
          type: object
          propertyNames:
            type: string
          additionalProperties:
            type: string
        datasource:
          type: string
        exposureQueryId:
          type: string
        hashAttribute:
          type: string
        fallbackAttribute:
          type: string
        disableStickyBucketing:
          type: boolean
        goalMetrics:
          type: array
          items:
            type: string
        secondaryMetrics:
          type: array
          items:
            type: string
        guardrailMetrics:
          type: array
          items:
            type: string
        activationMetric:
          type: string
        statsEngine:
          type: string
          enum:
          - bayesian
          - frequentist
        segment:
          type: string
        skipPartialData:
          type: boolean
        targeting:
          type: object
          properties:
            coverage:
              type: number
            savedGroups:
              type: array
              items:
                type: object
                properties:
                  match:
                    type: string
                    enum:
                    - all
                    - none
                    - any
                  ids:
                    type: array
                    items:
                      type: string
                required:
                - match
                - ids
                additionalProperties: false
            prerequisites:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                  condition:
                    type: string
                required:
                - id
                - condition
                additionalProperties: false
            condition:
              type: string
          required:
          - coverage
          - condition
          additionalProperties: false
        customMetricSlices:
          type: array
          items:
            type: object
            properties:
              slices:
                type: array
                items:
                  type: object
                  properties:
                    column:
                      type: string
                    levels:
                      type: array
                      items:
                        type: string
                  required:
                  - column
                  - levels
                  additionalProperties: false
            required:
            - slices
            additionalProperties: false
      required:
      - id
      - dateCreated
      - dateUpdated
      - owner
      - templateMetadata
      - type
      - datasource
      - exposureQueryId
      - statsEngine
      - targeting
      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