---
updatedAt: 2026-05-20T20:59:45.000Z
agentTools:
  projectIndex: https://docs.developers.convert.com/llms.txt
---

# Delete a hypothesis

Permanently removes a hypothesis from a project. This action is irreversible.


# OpenAPI definition

```json
{
  "openapi": "3.0.3",
  "info": {
    "title": "Convert Management API",
    "description": "Move your app forward with the Convert API. The Convert API allows\nyou to manage your Convert Experiences projects using code. The REST API is\nan interface for managing and extending functionality of Convert. For\nexample, instead of creating and maintaining projects using the Convert\nExperiences web dashboard you can create an experiment programmatically.\nAdditionally, if you prefer to run custom analysis on experiment results you\ncan leverage the API to pull data from Convert Experiences into your own\nworkflow. If you do not have a Convert account already, sign up for a free\ndeveloper account at https://www.convert.com/api/.\n\n*[Convert API V1](/doc/v1) is still available and documentation can be found [here](/doc/v1) but using it is highly discouraged\nas it will be phased out in the future*\n",
    "version": "2.0.0"
  },
  "x-tagGroups": [
    {
      "name": "Client Authentication",
      "tags": [
        "API KEY Authentication",
        "Cookie Authentication",
        "OAuth Authorization"
      ]
    },
    {
      "name": "Common Parameters",
      "tags": [
        "Optional Fields",
        "Expandable Fields"
      ]
    },
    {
      "name": "Requests",
      "tags": [
        "User",
        "Accounts",
        "AI content",
        "Collaborators",
        "API Keys",
        "Notifications",
        "Projects",
        "SDK Keys",
        "Experiences",
        "Experience Variations",
        "Experience Sections",
        "Section Versions",
        "Version Changes",
        "Experiences Reports",
        "Experiences Heatmaps",
        "Goals",
        "Hypotheses",
        "Knowledge Bases",
        "Observations",
        "Locations",
        "Audiences",
        "Domains",
        "Cdn Images",
        "Files",
        "Tags",
        "Features",
        "Visitor Insights",
        "Visitors Data",
        "Visitor Data Placeholders",
        "OAuth",
        "Approval Requests"
      ]
    }
  ],
  "tags": [
    {
      "name": "Hypotheses",
      "description": "A hypothesis is an assumption that a proposed change in your website would lead to visitors taking the action that you want them to. Read more information about <a href=\"https://support.convert.com/hc/en-us/articles/360037227891?_ga=2.37896292.616154853.1594029871-1191511577.1590603567\">Hypotheses</a>."
    }
  ],
  "paths": {
    "/accounts/{account_id}/projects/{project_id}/hypotheses/{hypothesis_id}/delete": {
      "delete": {
        "operationId": "deleteHypothesis",
        "x-mutates": true,
        "summary": "Delete a hypothesis",
        "description": "Permanently removes a hypothesis from a project. This action is irreversible.\n",
        "tags": [
          "Hypotheses"
        ],
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "description": "ID of the account that owns the retrieved/saved data",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "project_id",
            "in": "path",
            "required": true,
            "description": "ID of the project from which the hypothesis is to be deleted",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "hypothesis_id",
            "in": "path",
            "required": true,
            "description": "ID of the hypothesis to be deleted",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/HypothesisResponse"
          },
          "default": {
            "$ref": "#/components/responses/ErrorResponse"
          }
        }
      }
    }
  },
  "servers": [
    {
      "url": "https://api.convert.com/api/v2",
      "description": "Live API server"
    },
    {
      "url": "https://apidev.convert.com/api/v2",
      "description": "DEV API server"
    },
    {
      "url": "http://apidev.convert.com:5000/api/v2",
      "description": "DEV mocked API server"
    }
  ],
  "components": {
    "securitySchemes": {
      "secretKey": {
        "type": "http",
        "scheme": "bearer",
        "description": "See **[API Key Authentication](/reference/api-key-authentication)** for more information.\n"
      },
      "cookieAuthentication": {
        "type": "apiKey",
        "in": "cookie",
        "name": "sid",
        "description": "Cookie authentication is used against Convert's own IdentityProvider  or third party identity providers and is described more in the \"[Cookie Authentication](/reference/cookie-authentication)\" section"
      },
      "requestSigningAppId": {
        "type": "apiKey",
        "in": "header",
        "name": "Convert-Application-ID",
        "description": "HMAC request signing — the Application ID from your Convert account. See **[API Key Authentication](/reference/api-key-authentication)** for how to generate the full three-header set."
      },
      "requestSigningExpires": {
        "type": "apiKey",
        "in": "header",
        "name": "Expires",
        "description": "HMAC request signing — UNIX timestamp after which the signature expires. See **[API Key Authentication](/reference/api-key-authentication)** for how to compute it."
      },
      "requestSigningAuthorization": {
        "type": "apiKey",
        "in": "header",
        "name": "Authorization",
        "description": "HMAC request signing — format: `Convert-HMAC-SHA256 Signature=<hex-hmac-sha256(AppID\\nExpires\\nURL\\nBody, Secret)>`. See **[API Key Authentication](/reference/api-key-authentication)** for the signing algorithm. The \"Try It\" playground cannot compute this for you; paste a pre-computed signature here or use the Bearer method instead."
      }
    },
    "responses": {
      "HypothesisResponse": {
        "description": "Detailed information for a single hypothesis, including its name, objective, prioritization model (PIE/ICE) and scores, status, start/end dates, summary, and links to associated experiences and tags.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Hypothesis"
            }
          }
        }
      },
      "ErrorResponse": {
        "description": "Indicates an error occurred while processing the request. The `code` provides an HTTP status code, `message` offers a human-readable explanation or an array of validation errors, and `fields` (if present) specifies which input fields were problematic.\n",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorData"
            }
          }
        }
      }
    },
    "schemas": {
      "SimpleAudienceExpandable": {
        "anyOf": [
          {
            "type": "integer",
            "description": "Audience ID"
          },
          {
            "$ref": "#/components/schemas/SimpleAudience"
          }
        ]
      },
      "SimpleAudience": {
        "type": "object",
        "properties": {
          "id": {
            "description": "The unique numerical identifier of the audience.",
            "type": "integer"
          },
          "name": {
            "description": "The user-defined, friendly name of the audience.",
            "type": "string"
          }
        }
      },
      "ErrorData": {
        "type": "object",
        "properties": {
          "code": {
            "type": "integer",
            "format": "int32"
          },
          "message": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "fields": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "context": {
            "type": "object",
            "description": "Additional context about the error."
          }
        }
      },
      "UTC_Offset": {
        "type": "integer",
        "description": "The time offset from Coordinated Universal Time (UTC) in seconds.\nFor example, UTC-5 (EST) would be -18000. UTC+2 would be 7200.\nUsed for interpreting or displaying date/time information according to a specific timezone.\n",
        "default": 0,
        "minimum": -43200,
        "maximum": 50400
      },
      "GA_SettingsBase": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "If true, integration with Google Analytics is enabled for this project or experience, allowing experiment data to be sent to GA."
          }
        }
      },
      "IntegrationGA3": {
        "type": "object",
        "properties": {
          "type": {
            "enum": [
              "ga3"
            ]
          },
          "property_UA": {
            "type": "string",
            "maxLength": 150,
            "nullable": true,
            "description": "The Universal Analytics Property ID (e.g., \"UA-XXXXXXXX-Y\") to which Convert experiment data will be sent."
          }
        }
      },
      "IntegrationGA4Base": {
        "type": "object",
        "properties": {
          "type": {
            "enum": [
              "ga4"
            ]
          },
          "measurementId": {
            "type": "string",
            "description": "The GA4 Measurement ID (e.g., \"G-XXXXXXXXXX\") for the data stream where Convert experiment data will be sent."
          }
        }
      },
      "IntegrationGA4": {
        "allOf": [
          {
            "$ref": "#/components/schemas/IntegrationGA4Base"
          },
          {
            "type": "object",
            "properties": {
              "propertyId": {
                "type": "string",
                "description": "ID of the ga4 property where data will be sent. Used internally for API calls to GoogleAnalytics"
              }
            }
          }
        ]
      },
      "VisitorInsightsBase": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "If true, Convert Signals™ is enabled for the project, allowing the system to capture sessions exhibiting user frustration or usability issues.\n"
          },
          "obfuscate_text": {
            "type": "boolean",
            "default": false,
            "description": "True when all text elements (apart from placeholders) should be obfuscated inside a recording.\n"
          },
          "sampling_rate": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100,
            "default": 5,
            "description": "The percentage of visitors included in sampling for Convert Signals session recordings and Heatmaps for this project.\nHigher values collect data from a larger share of traffic and consume allocation faster.\n"
          },
          "heatmap_visits_limit": {
            "type": "integer",
            "default": 2500,
            "enum": [
              2500,
              5000,
              10000,
              15000
            ],
            "description": "Maximum number of visits per variation used when generating a heatmap for this project.\nApplies to newly created heatmaps when an experience is activated.\n"
          }
        }
      },
      "NumericOutlierTypes": {
        "description": "The method used for detecting and handling order outliers in revenue or product count tracking:\n- `none`: No outlier detection is applied.\n- `min_max`: Orders with values below a specified minimum or above a specified maximum are capped at those boundaries.\n- `percentile`: Orders falling below a lower percentile or above an upper percentile are capped at the values corresponding to those percentiles.\n",
        "type": "string",
        "enum": [
          "none",
          "min_max",
          "percentile"
        ]
      },
      "NumericOutlierBase": {
        "type": "object",
        "properties": {
          "detection_type": {
            "$ref": "#/components/schemas/NumericOutlierTypes"
          }
        },
        "required": [
          "detection_type"
        ]
      },
      "NumericOutlierNone": {
        "allOf": [
          {
            "$ref": "#/components/schemas/NumericOutlierBase"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "detection_type": {
                "enum": [
                  "none"
                ]
              }
            }
          }
        ]
      },
      "NumericOutlierMinMax": {
        "allOf": [
          {
            "$ref": "#/components/schemas/NumericOutlierBase"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "detection_type": {
                "enum": [
                  "min_max"
                ]
              },
              "min": {
                "type": "number",
                "description": "Minimum value for the outlier detection, under which, the value is considered an outlier"
              },
              "max": {
                "type": "number",
                "description": "Maximum value for the outlier detection, over which, the value is considered an outlier"
              }
            }
          }
        ]
      },
      "NumericOutlierPercentile": {
        "allOf": [
          {
            "$ref": "#/components/schemas/NumericOutlierBase"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "detection_type": {
                "enum": [
                  "percentile"
                ]
              },
              "min": {
                "allOf": [
                  {
                    "description": "Minimum percentile value for the outlier detection; values outside this percentile are considered outliers"
                  },
                  {
                    "$ref": "#/components/schemas/Percentiles"
                  }
                ]
              },
              "max": {
                "allOf": [
                  {
                    "description": "Maximum percentile value for the outlier detection; values outside this percentile are considered outliers"
                  },
                  {
                    "$ref": "#/components/schemas/Percentiles"
                  }
                ]
              }
            }
          }
        ]
      },
      "NumericOutlier": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/NumericOutlierNone"
          },
          {
            "$ref": "#/components/schemas/NumericOutlierMinMax"
          },
          {
            "$ref": "#/components/schemas/NumericOutlierPercentile"
          }
        ],
        "discriminator": {
          "propertyName": "detection_type",
          "mapping": {
            "none": "#/components/schemas/NumericOutlierNone",
            "min_max": "#/components/schemas/NumericOutlierMinMax",
            "percentile": "#/components/schemas/NumericOutlierPercentile"
          }
        }
      },
      "Percentiles": {
        "type": "number",
        "description": "Standard percentile values used for outlier detection thresholds.\nFor example, a `min` of 5 and `max` of 95 means orders in the bottom 5% and top 5% of values are considered outliers and capped.\n",
        "enum": [
          1,
          5,
          10,
          25,
          50,
          75,
          90,
          95,
          99
        ]
      },
      "UploadedFileData": {
        "type": "object",
        "description": "File Object",
        "additionalProperties": false,
        "properties": {
          "key": {
            "description": "Storage key of the uploaded file.",
            "type": "string",
            "maxLength": 500
          },
          "name": {
            "description": "Original name of the uploaded file.",
            "type": "string",
            "maxLength": 250
          },
          "url": {
            "description": "Endpoint to access the file resource associated with the project.",
            "type": "string",
            "readOnly": true,
            "example": "https://api.convert.com/api/v2/accounts/{account_id}/projects/{project_id}/files/{fileKey}"
          }
        }
      },
      "Domain": {
        "type": "object",
        "description": "A website domain data.",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Domain ID.",
            "readOnly": true
          },
          "url": {
            "type": "string",
            "maxLength": 150,
            "pattern": "^(http|https)://",
            "description": "Domain's homepage url"
          },
          "code_installed": {
            "type": "boolean",
            "description": "Indicating whether code installed check passed sometimes in the past.",
            "default": false
          }
        }
      },
      "SE_ProcTypes": {
        "type": "string",
        "description": "The statistical methodology used for analyzing experiment results and determining winners.\n- `frequentist`: Traditional hypothesis testing approach using p-values and confidence intervals (e.g., T-tests). KB: \"Statistical Methods Used\".\n- `bayesian`: Bayesian statistical approach providing probabilities of one variation being better than another (e.g., Chance to Win). KB: \"Statistical Models in Convert.com's A/B Testing Platform\".\n",
        "enum": [
          "frequentist",
          "bayesian"
        ]
      },
      "SE_MabSettings": {
        "type": "object",
        "description": "Configuration for Multi-Armed Bandit (MAB) traffic allocation. If `null`, MAB is disabled and manual traffic allocation is used.\nMAB dynamically allocates more traffic to better-performing variations based on the `primary_metric` of the `primary_goal`.\nKB: \"Multi-Armed Bandit (MAB) & Auto-Allocation in Convert\".\n",
        "properties": {
          "strategy": {
            "description": "The MAB algorithm used for dynamic traffic allocation:\n- `epsilon_greedy`: Mostly exploits the best-known variation, but explores others with a small probability (epsilon).\n- `ucb`: Upper Confidence Bound, balances exploration and exploitation based on uncertainty and potential.\n- `thompson_sampling`: (Default) A Bayesian approach that samples from posterior distributions to choose variations.\n",
            "type": "string",
            "enum": [
              "epsilon_greedy",
              "ucb",
              "thompson_sampling"
            ],
            "default": "thompson_sampling"
          },
          "exploration_rate": {
            "description": "For `epsilon_greedy` strategy, this is the 'epsilon' value (0 to 1) representing the probability of choosing a random variation for exploration instead of the current best-performing one.\nA higher value means more exploration. Default is often 0.1 or 0.3.\n",
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "enum": [
              0,
              0.1,
              0.2,
              0.3,
              0.4,
              0.5,
              0.6,
              0.7,
              0.8,
              0.9,
              1
            ],
            "default": 0.3
          }
        }
      },
      "SE_ProcSettings": {
        "description": "Overall settings for the statistical engine processing results for this experience.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/SE_ProcSettingsFrequentist"
          },
          {
            "$ref": "#/components/schemas/SE_ProcSettingsBayesian"
          }
        ],
        "discriminator": {
          "propertyName": "stats_type",
          "mapping": {
            "frequentist": "#/components/schemas/SE_ProcSettingsFrequentist",
            "bayesian": "#/components/schemas/SE_ProcSettingsBayesian"
          }
        }
      },
      "SE_ProcSettingsBase": {
        "type": "object",
        "properties": {
          "stats_type": {
            "$ref": "#/components/schemas/SE_ProcTypes"
          }
        }
      },
      "SE_ProcSettingsFrequentist": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SE_ProcSettingsBase"
          },
          {
            "type": "object",
            "description": "Stats Engine Settings needed for the Frequentist processing",
            "properties": {
              "stats_type": {
                "enum": [
                  "frequentist"
                ]
              },
              "confidence": {
                "description": "Confidence value to be used (in percent)",
                "type": "number",
                "minimum": 50,
                "maximum": 99,
                "multipleOf": 1
              },
              "power": {
                "description": "Statistical power value to be used (in percent)",
                "type": "number",
                "minimum": 10,
                "maximum": 99,
                "multipleOf": 1
              },
              "test_type": {
                "description": "The type of test applied to the data",
                "type": "string",
                "default": "two_tails",
                "enum": [
                  "one_tail",
                  "one_tail_left",
                  "one_tail_right",
                  "two_tails",
                  "sequential"
                ]
              },
              "multiple_comparison_correction": {
                "description": "Multiple comparison correction",
                "type": "string",
                "enum": [
                  "none",
                  "bonferroni",
                  "sidak"
                ]
              },
              "power_calculation_type": {
                "description": "Power calculation type",
                "type": "string",
                "default": "dynamic_mde",
                "enum": [
                  "dynamic_mde",
                  "fixed_mde"
                ]
              },
              "fixed_mde": {
                "description": "Fixed minimum detectable effect (corresponding to the relative improvement in percent)",
                "type": "number",
                "minimum": 0,
                "maximum": 10000
              },
              "mab_settings": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SE_MabSettings"
                  }
                ],
                "nullable": true
              }
            }
          }
        ]
      },
      "SE_ProcSettingsBayesian": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SE_ProcSettingsBase"
          },
          {
            "type": "object",
            "description": "Stats Engine Settings needed for the Bayesian processing",
            "properties": {
              "stats_type": {
                "enum": [
                  "bayesian"
                ]
              },
              "decision_threshold": {
                "description": "Threshold after which a decision can be made",
                "type": "number",
                "minimum": 50,
                "maximum": 99,
                "multipleOf": 1
              },
              "risk_threshold": {
                "description": "The maximum acceptable level of potential loss if the chosen variant turns out to be worse than the control. It represents the threshold below which the relative risk of preferring a variant over the control must fall to consider the variant as a strong and relatively safe choice.",
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "multipleOf": 1
              },
              "mab_settings": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SE_MabSettings"
                  }
                ],
                "nullable": true
              }
            }
          }
        ]
      },
      "ExperienceReportingSettings": {
        "type": "object",
        "description": "Comprehensive settings governing how an experience's results are reported and analyzed.",
        "properties": {
          "primary_metric": {
            "description": "The key performance indicator (KPI) that the statistical engine will primarily use to evaluate variations and determine winners, especially for MAB allocation or automated decisions.\n- `conversion_rate`: Based on the conversion rate of the primary goal. (Default)\n- `avg_revenue_visitor`: Based on Revenue Per Visitor (RPV) from a revenue goal.\n- `avg_products_ordered_visitor`: Based on Average Products Per Visitor (APPV) from a revenue goal.\n",
            "default": "conversion_rate",
            "allOf": [
              {
                "$ref": "#/components/schemas/MetricTypes"
              }
            ]
          },
          "stats_engine_processing": {
            "$ref": "#/components/schemas/SE_ProcSettings"
          },
          "confidence": {
            "description": "(Deprecated) Legacy setting for confidence level. Use `stats_engine_processing.confidence` for Frequentist settings instead.",
            "deprecated": true,
            "type": "number",
            "minimum": 0
          },
          "keep_winner": {
            "description": "If true, after an experience is marked as 'Completed' because a winning variation was found, that winning variation will continue to receive 100% of the experience traffic.\nIf false (default), traffic might revert to the original or be evenly split, or the experience might simply stop serving.\nKB: \"My Experiments Stopped, What Happened?\" - \"An experiment can keep winning variation running\".\n",
            "type": "boolean"
          },
          "min_order_value": {
            "description": "(Deprecated) Minimum order value for transaction outliers. Use `outliers.order_value.min` instead.",
            "type": "number",
            "minimum": 0,
            "deprecated": true
          },
          "max_order_value": {
            "description": "(Deprecated) Maximum order value for transaction outliers. Use `outliers.order_value.max` instead.",
            "type": "number",
            "deprecated": true,
            "minimum": 0
          },
          "outliers": {
            "description": "Configuration for handling statistical outliers in order-related data (revenue and product counts) to prevent skewed results.\nKB: \"Setting limits for Order Outliers\" and \"How Outlier Detection Works in Convert Reports and Exports\".\n",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "order_value": {
                "description": "Outlier detection settings for the monetary value of orders.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/NumericOutlier"
                  }
                ]
              },
              "products_ordered_count": {
                "description": "Outlier detection settings for the number of products in an order.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/NumericOutlier"
                  }
                ]
              }
            }
          },
          "max_running_time": {
            "description": "The maximum number of days the experience should run. If no clear winner is found by this time, the experience may be automatically completed or paused.\nSet to 0 for no maximum limit.\nKB: \"Setting an end date for running an experiment.\" (Mentions max days in Stats section).\n",
            "type": "integer",
            "minimum": 0,
            "maximum": 999
          },
          "max_variation_visitors": {
            "description": "(Deprecated) Maximum number of visitors per variation. Use `max_experience_visitors` or rely on statistical significance.",
            "deprecated": true,
            "type": "integer",
            "minimum": 0
          },
          "max_experience_visitors": {
            "description": "The maximum total number of unique visitors to be included in the entire experience. Once reached, the experience may be automatically paused or completed. Set to 0 for no limit.",
            "type": "integer",
            "minimum": 0
          },
          "min_variation_conversions": {
            "type": "integer",
            "minimum": 0,
            "description": "The minimum number of conversions a variation must achieve before its statistical significance (confidence/chance to win) is calculated and displayed in reports.\nDefault is often 5. Helps avoid premature conclusions based on very small conversion numbers.\nKB: \"Experiment Report\" - \"Confidence Level (statistical significance)\".\n"
          },
          "min_conversion_value": {
            "description": "(Deprecated or unclear) Minimum conversion value per variation. Might relate to revenue goals or be a legacy setting.",
            "type": "integer",
            "minimum": 0,
            "deprecated": true
          },
          "min_running_time": {
            "description": "The minimum number of days the experience must run before it can be automatically completed, even if a winner is found earlier.\nHelps ensure stability and account for weekly variations. Set to 0 for no minimum.\nKB: \"My Experiments Stopped, What Happened?\".\n",
            "type": "integer",
            "minimum": 0,
            "maximum": 999
          },
          "min_variation_visitors": {
            "description": "The minimum number of unique visitors each variation (including the original) must receive before statistical significance is calculated.\nHelps ensure a sufficient sample size for reliable results.\n",
            "type": "integer",
            "minimum": 0
          },
          "stop_loser": {
            "description": "If true, variations that are statistically determined to be performing significantly worse than the baseline (losing variations) will be automatically stopped.\nTheir traffic is then redistributed among the remaining active variations.\nKB: \"My Experiments Stopped, What Happened?\" - \"An experiment can stop losing variations\".\n",
            "type": "boolean"
          },
          "keep_running_until_confidence": {
            "type": "boolean",
            "description": "If true, the experiment does not auto-complete when planned sample size (100% progress) is reached alone.\nIt only auto-completes when both planned sample size is reached and the confidence threshold is met.\nIf false, the experiment completes automatically when planned sample size is reached, regardless of confidence level.\nDefault depends on automation toggle: when keep_winner or stop_loser is enabled, default is true; otherwise false.\n"
          },
          "srm_check": {
            "type": "boolean",
            "nullable": true,
            "description": "If true, enables Sample Ratio Mismatch (SRM) checks for the experience.\nSRM occurs when the distribution of visitors to variations significantly deviates from the intended traffic allocation, potentially indicating a problem with the experiment setup.\nIf not provided at experience level, project-level setting is used.\nKB: \"What is SRM?\".\n"
          },
          "directional_indicator_colors": {
            "type": "boolean",
            "default": true,
            "description": "When enabled, arrows are colored once a variant reaches the significance threshold for your chosen testing method.\nDisable to show arrows in neutral color only.\n"
          },
          "visual_editor": {
            "description": "Settings related to the behavior and configuration of Convert's Visual Editor when used for this experience.",
            "type": "object",
            "properties": {
              "selector_blacklist": {
                "description": "A list of keywords (newline-separated string). If an element's attribute (class, ID) contains any of these keywords, that attribute part will be ignored when Convert generates CSS selectors for changes.\nUseful for avoiding dynamic or unstable selectors (e.g., from Squarespace, Bootstrap).\nKB: \"My changes created on the Visual Editor don't get saved when using Squarespace\", \"Issues while editing websites on Bootstrap\".\n",
                "type": "string",
                "nullable": true
              },
              "screen_width": {
                "description": "The emulated screen width (in pixels) used when loading the page in the Visual Editor. Allows previewing and editing for different responsive views.",
                "type": "number",
                "minimum": 240,
                "maximum": 7680,
                "nullable": true
              },
              "user_agent": {
                "$ref": "#/components/schemas/VisualEditorUserAgents"
              }
            }
          }
        }
      },
      "VisualEditorUserAgents": {
        "description": "Predefined User-Agent strings that the Visual Editor can emulate for responsive design and device-specific testing.",
        "type": "string",
        "nullable": true,
        "enum": [
          "chrome_desktop",
          "chrome_ipad",
          "chrome_iphone",
          "chrome_android",
          "safari_mac",
          "safari_ipad",
          "safari_iphone",
          "firefox_desktop",
          "firefox_ipad",
          "firefox_iphone",
          "firefox_android",
          "edge_desktop",
          "edge_tablet",
          "brave_desktop",
          "brave_ipad",
          "brave_iphone",
          "brave_android",
          "opera_desktop",
          "opera_ipad",
          "opera_iphone",
          "opera_android"
        ]
      },
      "ExperienceId": {
        "type": "integer",
        "description": "The unique numerical identifier for an experience."
      },
      "BaseSimpleExperience": {
        "type": "object",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/ExperienceId"
          },
          "name": {
            "description": "The user-defined, friendly name of the experience.",
            "type": "string"
          }
        }
      },
      "BaseExperienceExpandable": {
        "description": "Represents an experience, either as its unique ID or as a simple object with its ID and name. Used when an experience is referenced by another entity and can be optionally expanded.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/ExperienceId"
          },
          {
            "$ref": "#/components/schemas/BaseSimpleExperience"
          }
        ]
      },
      "SimpleGoal": {
        "type": "object",
        "properties": {
          "id": {
            "description": "The unique numerical identifier of the goal.",
            "type": "integer"
          },
          "name": {
            "description": "The user-defined, friendly name of the goal.",
            "type": "string"
          }
        }
      },
      "SimpleGoalExpandable": {
        "oneOf": [
          {
            "type": "integer",
            "description": "Goal ID"
          },
          {
            "$ref": "#/components/schemas/SimpleGoal"
          }
        ]
      },
      "HypothesisBase": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique numerical identifier for the hypothesis.",
            "readOnly": true
          },
          "name": {
            "type": "string",
            "description": "A user-defined, concise name for the hypothesis (e.g., \"Changing CTA Button Color to Green\", \"Simplifying Signup Form\"). This name appears in the Compass section of Convert.",
            "maxLength": 100
          },
          "url": {
            "type": "string",
            "description": "(Optional) A URL relevant to this hypothesis, such as the page where the proposed change would be implemented or a link to supporting research/data.",
            "maxLength": 2048,
            "nullable": true
          },
          "project": {
            "$ref": "#/components/schemas/ProjectExpandable"
          },
          "prioritization_score": {
            "readOnly": true,
            "type": "string",
            "description": "The calculated priority score for this hypothesis, based on the chosen `prioritization_score_type` (PIE or ICE) and its attribute scores.\nHelps in ranking hypotheses to decide which to test next.\nKB: \"Hypotheses (Compass)\" - \"How to Prioritize a Hypothesis\".\n"
          },
          "objective": {
            "type": "string",
            "maxLength": 5000,
            "description": "A detailed description of the hypothesis. This should clearly state:\n1. The **problem** observed (e.g., \"Low click-through rate on the main CTA\").\n2. The **proposed solution/change** (e.g., \"Change the CTA button text from 'Learn More' to 'Get Started Now'\").\n3. The **expected outcome/impact** (e.g., \"This will increase clicks on the CTA by 15% because 'Get Started Now' is more action-oriented\").\nKB: \"Hypotheses (Compass)\" - \"What is a Hypothesis\".\n"
          },
          "status": {
            "$ref": "#/components/schemas/HypothesisStatuses"
          },
          "start_date": {
            "description": "(Optional) The date (YYYY-MM-DD) when this hypothesis was conceptualized or formally logged.",
            "type": "string",
            "maxLength": 10,
            "format": "date",
            "nullable": true
          },
          "end_date": {
            "description": "(Optional) The target date (YYYY-MM-DD) by which this hypothesis is expected to be tested or resolved.",
            "type": "string",
            "maxLength": 10,
            "format": "date",
            "nullable": true
          },
          "summary": {
            "type": "string",
            "description": "(Optional) A brief summary or key takeaway from this hypothesis, often filled in after testing.",
            "maxLength": 500
          },
          "description": {
            "type": "string",
            "nullable": true,
            "maxLength": 5000,
            "description": "This is more details that want to be added besides the name of the hypothesis"
          },
          "files": {
            "type": "array",
            "description": "Files attached to the hypothesis",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/UploadedFileData"
            }
          },
          "created_at": {
            "type": "integer",
            "description": "Unix timestamp (UTC) indicating when this hypothesis was created in the system."
          },
          "updated_at": {
            "type": "integer",
            "readOnly": true,
            "description": "Unix timestamp (UTC) indicating when this hypothesis entry was last updated or created."
          },
          "created_by": {
            "type": "string",
            "readOnly": true,
            "nullable": true,
            "description": "The name or identifier of the user who created this hypothesis."
          }
        }
      },
      "Hypothesis": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/HypothesisPIE"
          },
          {
            "$ref": "#/components/schemas/HypothesisICE"
          }
        ],
        "discriminator": {
          "propertyName": "prioritization_score_type",
          "mapping": {
            "PIE": "#/components/schemas/HypothesisPIE",
            "ICE": "#/components/schemas/HypothesisICE"
          }
        }
      },
      "HypothesisPIEBase": {
        "allOf": [
          {
            "$ref": "#/components/schemas/HypothesisBase"
          },
          {
            "type": "object",
            "properties": {
              "prioritization_score_type": {
                "type": "string",
                "description": "A given description of prioritizing model",
                "enum": [
                  "PIE"
                ]
              },
              "prioritization_score_attributes": {
                "$ref": "#/components/schemas/PIE_Attributes"
              }
            }
          }
        ]
      },
      "HypothesisPIE": {
        "allOf": [
          {
            "$ref": "#/components/schemas/HypothesisPIEBase"
          },
          {
            "type": "object",
            "properties": {
              "experiences": {
                "type": "array",
                "nullable": true,
                "description": "The list of experiences connected to this hypothesis",
                "items": {
                  "$ref": "#/components/schemas/BaseExperienceExpandable"
                }
              },
              "tags": {
                "type": "array",
                "nullable": true,
                "description": "The list of tags connected to this hypothesis",
                "items": {
                  "$ref": "#/components/schemas/TagExpandable"
                }
              }
            }
          }
        ]
      },
      "HypothesisICEBase": {
        "allOf": [
          {
            "$ref": "#/components/schemas/HypothesisBase"
          },
          {
            "type": "object",
            "properties": {
              "prioritization_score_type": {
                "type": "string",
                "description": "A given description of prioritizing model",
                "enum": [
                  "ICE"
                ]
              },
              "prioritization_score_attributes": {
                "$ref": "#/components/schemas/ICE_Attributes"
              }
            }
          }
        ]
      },
      "HypothesisICE": {
        "allOf": [
          {
            "$ref": "#/components/schemas/HypothesisICEBase"
          },
          {
            "type": "object",
            "properties": {
              "experiences": {
                "type": "array",
                "nullable": true,
                "description": "The list of experiences connected to this hypothesis",
                "items": {
                  "$ref": "#/components/schemas/BaseExperienceExpandable"
                }
              },
              "tags": {
                "type": "array",
                "nullable": true,
                "description": "The list of tags connected to this hypothesis",
                "items": {
                  "$ref": "#/components/schemas/TagExpandable"
                }
              }
            }
          }
        ]
      },
      "PIE_Attributes": {
        "description": "Scores for the PIE (Potential, Importance, Ease) prioritization model. Each attribute is scored on a scale of 1 to 5.\nKB: \"Hypotheses (Compass)\" - \"PIE prioritization model\".\n",
        "title": "PIE_Attributes",
        "type": "object",
        "properties": {
          "potential": {
            "type": "integer",
            "description": "Score (1-5, 5 highest): How likely is this hypothesis to result in a significant improvement if successful?",
            "minimum": 1,
            "maximum": 5
          },
          "importance": {
            "type": "integer",
            "description": "Score (1-5, 5 highest): How valuable is the traffic or user segment this hypothesis targets? (e.g., high-traffic pages, critical conversion funnel steps).",
            "minimum": 1,
            "maximum": 5
          },
          "ease": {
            "type": "integer",
            "description": "Score (1-5, 5 easiest): How easy is it to implement the changes required to test this hypothesis, considering technical complexity and resource requirements?",
            "minimum": 1,
            "maximum": 5
          }
        }
      },
      "ICE_Attributes": {
        "description": "Scores for the ICE (Impact, Confidence, Ease) prioritization model. Each attribute is scored on a scale of 1 to 5.\nKB: \"Hypotheses (Compass)\" - \"ICE prioritization model\".\n",
        "title": "ICE_Attributes",
        "type": "object",
        "properties": {
          "impact": {
            "type": "integer",
            "description": "Score (1-5, 5 highest): If this hypothesis is successful, how much positive impact will it have on the key metric(s) you're trying to improve?",
            "minimum": 1,
            "maximum": 5
          },
          "confidence": {
            "type": "integer",
            "description": "Score (1-5, 5 highest): How confident are you that this hypothesis will achieve the desired impact and that the proposed changes are technically feasible?",
            "minimum": 1,
            "maximum": 5
          },
          "ease": {
            "type": "integer",
            "description": "Score (1-5, 5 easiest): How easy is it to implement the changes required to test this hypothesis, considering technical complexity and resource requirements?",
            "minimum": 1,
            "maximum": 5
          }
        }
      },
      "HypothesisStatuses": {
        "description": "The current stage or outcome of a hypothesis in its lifecycle:\n- `draft`: The hypothesis is still being formulated or refined; not yet ready for testing.\n- `completed`: The hypothesis definition is finalized and it's ready to be linked to an experiment or tested.\n- `applied`: The hypothesis is currently being tested in one or more active experiences.\n- `proven`: Testing has concluded, and the hypothesis was validated (i.e., the proposed change led to a positive, statistically significant outcome). Can be moved to Knowledge Base.\n- `disproven`: Testing has concluded, and the hypothesis was invalidated (i.e., the proposed change did not lead to the expected positive outcome or had a negative impact). Can be moved to Knowledge Base.\n- `archived`: The hypothesis is no longer active or relevant for current testing but is kept for historical records.\nKB: \"Hypotheses (Compass)\" - \"Status of Hypothesis\".\n",
        "type": "string",
        "enum": [
          "applied",
          "archived",
          "completed",
          "draft",
          "proven",
          "disproven"
        ]
      },
      "SimpleLocation": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique numerical identifier of the location.",
            "readOnly": true
          },
          "name": {
            "type": "string",
            "description": "The user-defined, friendly name of the location.",
            "maxLength": 100
          }
        }
      },
      "SimpleLocationExpandable": {
        "anyOf": [
          {
            "type": "integer",
            "description": "Location ID"
          },
          {
            "$ref": "#/components/schemas/SimpleLocation"
          }
        ]
      },
      "Project": {
        "description": "Represents a Convert project, which is a container for organizing a set of related optimization activities (experiences),\ntheir goals, target audiences, associated website domains, and collaborators.\nEach project has its own unique tracking script.\nKnowledge Base: \"What is a Project?\".\n",
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseProject"
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer",
                "description": "Unique identifier representing a specific project in an user account. The project Id is part of the tracking snippet"
              },
              "accessRole": {
                "$ref": "#/components/schemas/AccessRoleNames"
              },
              "owner_email": {
                "type": "string",
                "description": "Used only internally - An email of project owner. This field will exist only if project type is shared."
              },
              "account_id": {
                "type": "integer",
                "description": "The unique ID of the account under which this project is created. Account ID is also part of the tracking snippet"
              },
              "created_at": {
                "type": "integer",
                "description": "Unix timestamp when project was created, in UTC time."
              },
              "modified_at": {
                "type": "integer",
                "description": "Unix timestamp when project was last modified, in UTC time."
              },
              "tracking_snippet": {
                "type": "string",
                "description": "The tracking code that needs to be placed on site in order to serve experiences from this project."
              },
              "updateMetadata": {
                "type": "object",
                "description": "Live update status for CDN invalidation of this project's data and JS bundle.\nThese fields allow the UI to inform the user when changes are pending and when they took effect.\nAll timestamps are in seconds (UTC).\n",
                "properties": {
                  "pendingChanges": {
                    "type": "object",
                    "description": "Flags indicating if changes are pending CDN invalidation.",
                    "properties": {
                      "data": {
                        "type": "boolean",
                        "description": "True if data changes are pending CDN invalidation."
                      },
                      "js": {
                        "type": "boolean",
                        "description": "True if JS bundle changes are pending CDN invalidation."
                      }
                    }
                  },
                  "lastInvalidation": {
                    "type": "object",
                    "description": "Timestamps for the last completed CDN invalidations.",
                    "properties": {
                      "js": {
                        "type": "integer",
                        "nullable": true,
                        "description": "Timestamp (seconds) when the last JS CDN invalidation completed."
                      },
                      "data": {
                        "type": "integer",
                        "nullable": true,
                        "description": "Timestamp (seconds) when the last Data CDN invalidation completed."
                      }
                    }
                  },
                  "nextInvalidation": {
                    "type": "object",
                    "description": "Timestamps for the nearest scheduled CDN invalidations.",
                    "properties": {
                      "js": {
                        "type": "integer",
                        "nullable": true,
                        "description": "The nearest scheduled CDN invalidation time (seconds) for the JS bundle if pending."
                      },
                      "data": {
                        "type": "integer",
                        "nullable": true,
                        "description": "The nearest scheduled CDN invalidation time (seconds) for Data if pending."
                      }
                    }
                  }
                }
              },
              "type": {
                "type": "string",
                "description": "Used only internally - A value which describes project ownership. Can be own or shared.",
                "enum": [
                  "own",
                  "shared"
                ]
              },
              "stats": {
                "type": "object",
                "description": "Various stats for this project. Optional field, controlled using [include fields](/reference/optional-fields)",
                "properties": {
                  "visitor_data": {
                    "type": "object",
                    "description": "Visitor Data usage statistics for current project",
                    "properties": {
                      "visitor_profiles_count": {
                        "type": "integer",
                        "description": "The total count of Visitor Data records inside current project."
                      },
                      "visitor_profiles_fields_count": {
                        "type": "integer",
                        "description": "The total count of Visitor Data Placeholders inside current project."
                      },
                      "active_personalised_experiences_count": {
                        "type": "integer",
                        "description": "The total count of active experiences that use Visitor Data Placeholders inside current project."
                      }
                    }
                  },
                  "google_analytics": {
                    "description": "Various stats related to google analytics integration",
                    "type": "object",
                    "properties": {
                      "used_slots": {
                        "description": "List of Google Analytics Classic implementation slots used by experiences integrations",
                        "type": "array",
                        "items": {
                          "type": "integer"
                        },
                        "deprecated": true
                      },
                      "used_dimensions": {
                        "description": "List of Google Analytics Universal implementation custom dimensions used by experiences integrations",
                        "type": "array",
                        "items": {
                          "type": "integer"
                        }
                      }
                    }
                  },
                  "usage": {
                    "type": "object",
                    "description": "Usage metrics for the current billing period",
                    "properties": {
                      "used_tested_users": {
                        "type": "integer",
                        "description": "The number of tested users counted into the current project in the current billing interval. This counter is used towards account's usage quota for certain billing plans."
                      },
                      "used_tested_visitors": {
                        "type": "integer",
                        "description": "The number of tested visitors counted into the current project in the current billing interval. This counter is used towards account's usage quota for certain billing plans."
                      }
                    }
                  },
                  "active_segments_count": {
                    "type": "integer",
                    "description": "Total number of Audiences with type segment inside this project."
                  },
                  "segments_count": {
                    "type": "integer",
                    "deprecated": true,
                    "description": "Total number of Audiences with type segment inside this project."
                  },
                  "experiences_count": {
                    "type": "integer",
                    "description": "The total number of experiences existing inside current project."
                  },
                  "active_experiences_count": {
                    "type": "integer",
                    "description": "The number of active experiences existing inside current project."
                  },
                  "active_experiments_count": {
                    "type": "integer",
                    "description": "The number of active experiments inside the project besides deploys."
                  },
                  "active_goals_count": {
                    "type": "integer",
                    "description": "The number of active goals existing inside current project."
                  },
                  "visitor_insights": {
                    "type": "object",
                    "description": "Visitor Insights usage statistics for Convert Signals session recordings and Heatmaps for the current project.",
                    "properties": {
                      "consumption": {
                        "type": "object",
                        "description": "Session recording and heatmap capacity consumption for the current billing period.",
                        "properties": {
                          "usage": {
                            "type": "number",
                            "format": "float",
                            "nullable": true,
                            "description": "The proportion of the allocated capacity used for session recordings and heatmaps for this project in the current billing period,\nexpressed as a decimal between 0 and 1 (for example 0.75 means 75% of the allocation is used).\n"
                          },
                          "stp_limit": {
                            "type": "number",
                            "format": "float",
                            "nullable": true,
                            "description": "The total allocated capacity for session recordings and heatmaps for this project in the current billing period.\n"
                          },
                          "stp_consumed": {
                            "type": "number",
                            "format": "float",
                            "nullable": true,
                            "description": "The amount of allocated capacity consumed for session recordings and heatmaps for this project in the current billing period.\n"
                          },
                          "reset_at": {
                            "type": "string",
                            "format": "date-time",
                            "nullable": true,
                            "description": "The date and time when the capacity allocation for session recordings and heatmaps resets for the current billing period.\n"
                          }
                        }
                      }
                    }
                  }
                }
              },
              "domains": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Domain"
                },
                "description": "The list of websites included in this project."
              },
              "sdk_key": {
                "type": "string",
                "readOnly": true,
                "nullable": true,
                "description": "An autogenerated hash key used to retrieve data of fullstack project. Available only for fullstack projects type."
              }
            }
          }
        ]
      },
      "DNSRecordTypes": {
        "description": "The type of the DNS record.",
        "type": "string",
        "enum": [
          "TXT",
          "CNAME"
        ]
      },
      "CustomDomainOwnershipVerificationItem": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the DNS record."
          },
          "type": {
            "$ref": "#/components/schemas/DNSRecordTypes"
          },
          "value": {
            "type": "string",
            "description": "The value of the DNS record."
          }
        }
      },
      "BaseProject": {
        "type": "object",
        "properties": {
          "global_javascript": {
            "type": "string",
            "nullable": true,
            "description": "Custom JavaScript code that will be included on all pages where this project's tracking script is installed.\nThis script runs before any experience-specific code, making it suitable for global helper functions, third-party integrations setup (like analytics), or defining global variables.\nKB: \"Project, Experience, Variation Javascript\" - \"Global Project JavaScript\".\n"
          },
          "name": {
            "type": "string",
            "maxLength": 200,
            "description": "A user-defined, friendly name for the project (e.g., \"Main Website Optimization\", \"Q3 Marketing Campaigns\", \"Mobile App Features\")."
          },
          "project_type": {
            "type": "string",
            "description": "The type of project, determining its capabilities and how it's used:\n- `web`: For traditional website A/B testing, MVT, Split URL, personalization, and deploys using the client-side JavaScript tracking snippet.\n- `fullstack`: For server-side experiments, feature flagging, and mobile app testing using Convert's Full Stack SDKs.\nKB: \"Full Stack Experiments on Convert\".\n",
            "enum": [
              "web",
              "fullstack"
            ],
            "default": "web"
          },
          "reporting_settings": {
            "allOf": [
              {
                "type": "object",
                "description": "Project settings used for reporting",
                "properties": {
                  "tested_visitors_quota": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Maximum number of tested visitors that is allowed to go through this project in a billing cycle. After that number has been reached, no experiences that have influence over tested visitors will run in this project."
                  },
                  "currency_symbol": {
                    "type": "string",
                    "description": "Currency symbol used in the reporting.",
                    "maxLength": 10
                  },
                  "blocked_ips": {
                    "type": "object",
                    "nullable": true,
                    "properties": {
                      "single": {
                        "type": "array",
                        "description": "List of single ip addresses blocked.",
                        "items": {
                          "type": "object",
                          "minProperties": 1,
                          "properties": {
                            "value": {
                              "type": "string",
                              "format": "ip-address"
                            },
                            "name": {
                              "type": "string",
                              "nullable": true,
                              "maxLength": 64
                            }
                          },
                          "required": [
                            "value"
                          ]
                        }
                      },
                      "range": {
                        "type": "array",
                        "description": "List of ip addresses range.",
                        "items": {
                          "type": "object",
                          "minProperties": 1,
                          "properties": {
                            "start": {
                              "type": "string",
                              "format": "ip-address",
                              "description": "Starts from ip."
                            },
                            "end": {
                              "type": "string",
                              "format": "ip-address",
                              "description": "Ends with ip."
                            },
                            "name": {
                              "type": "string",
                              "nullable": true,
                              "maxLength": 64
                            }
                          },
                          "required": [
                            "start",
                            "end"
                          ]
                        }
                      }
                    },
                    "description": "A list of blocked IPs that are not allowed to be counted in the reports"
                  },
                  "stop_tracking_goals_after_days": {
                    "type": "string",
                    "description": "Defines goals tracking life time: goals won't be tracking after specified days unless used in active experiments.",
                    "enum": [
                      "OFF",
                      "1 day",
                      "15 days",
                      "30 days",
                      "60 days"
                    ]
                  },
                  "smart_recommendations": {
                    "type": "boolean",
                    "default": true,
                    "description": "Whether to run or not Smart Recommendations.\n"
                  },
                  "keep_running_until_confidence": {
                    "type": "boolean",
                    "description": "If true, experiments do not auto-complete when planned sample size (100% progress) is reached alone.\nThey only auto-complete when both planned sample size is reached and the confidence threshold is met.\nIf false, experiments complete automatically when planned sample size is reached, regardless of confidence level.\nDefault depends on automation toggle: when keep_winner or stop_loser is enabled, default is true; otherwise false.\n"
                  },
                  "disable_automatic_experience_completion": {
                    "type": "boolean",
                    "default": false,
                    "description": "If true, active experiences in this project are not automatically completed by the automations worker\n(statistical winner, max run time with complete action, or only baseline remaining).\nManual completion remains available. Auto-pause and stop losing variation automations are unaffected.\n"
                  },
                  "directional_indicator_colors": {
                    "type": "boolean",
                    "default": true,
                    "description": "When enabled, arrows are colored once a variant reaches the significance threshold for your chosen testing method.\nDisable to show arrows in neutral color only.\nIf not set at the experience level, the project-level value is inherited.\n"
                  }
                }
              },
              {
                "$ref": "#/components/schemas/ExperienceReportingSettings"
              }
            ]
          },
          "settings": {
            "type": "object",
            "description": "General operational settings for the project.",
            "properties": {
              "allow_crossdomain_tracking": {
                "type": "boolean",
                "description": "If true, enables automatic passing of Convert tracking cookies (`_conv_v`, `_conv_s`) as URL parameters when visitors navigate between different domains listed in this project's `Active Websites`.\nEssential for maintaining consistent visitor identity and experiment bucketing across multiple domains (e.g., main site to a separate checkout domain).\nKB: \"Cookies and Cross-Domain Testing\".\n"
              },
              "allow_gdpr": {
                "type": "boolean",
                "description": "If true, displays GDPR-related warnings in the Convert UI for settings or features that might have privacy implications (e.g., using certain audience conditions, enabling cross-domain tracking).\nKB: \"GDPR warnings\".\n"
              },
              "data_anonymization": {
                "type": "boolean",
                "description": "If true, masks the names of experiences, variations, segments, and goals in the public JavaScript tracking snippet and in data sent to some third-party integrations.\nInstead of names, their numerical IDs are used. Enhances privacy by preventing public disclosure of experiment details.\nKB: \"Prevent Experiment Details Data Leak with Data Anonymization\".\n"
              },
              "do_not_track": {
                "type": "string",
                "enum": [
                  "OFF",
                  "EU ONLY",
                  "EEA ONLY",
                  "Worldwide"
                ],
                "description": "Configures if and how the project respects the \"Do Not Track\" (DNT) browser setting sent by visitors.\n- `OFF`: DNT signals are ignored.\n- `EU ONLY`: Respects DNT for visitors from EU countries.\n- `EEA ONLY`: Respects DNT for visitors from European Economic Area countries.\n- `Worldwide`: Respects DNT for all visitors globally.\nIf respected, the Convert script may not load or track for visitors with DNT enabled.\nKB: \"Respect Browser Do Not Track Setting\".\n"
              },
              "global_privacy_control": {
                "type": "string",
                "enum": [
                  "OFF",
                  "EU ONLY",
                  "EEA ONLY",
                  "Worldwide"
                ],
                "description": "Configures if and how the project respects Global Privacy Control (GPC) signals sent by visitors' browsers.\nOptions are similar to `do_not_track`. If respected, data collection and tracking may be limited.\nKB: \"Respect Browser Do Not Track Setting\" - \"Global Privacy Control (GPC)\".\n"
              },
              "include_jquery": {
                "type": "boolean",
                "description": "(For legacy tracking script) If true, Convert's tracking script will include its own version of the jQuery library.\nIf your website already loads jQuery, set this to false to avoid loading it twice and improve page performance. Ensure your site's jQuery loads before the Convert script.\nKB: \"Do not include jQuery into the tracking scripts\".\n"
              },
              "include_jquery_v1": {
                "type": "boolean",
                "default": false,
                "description": "(For new v1 tracking script) If true, includes a jQuery-compatible API within the Convert script, even though the core script is jQuery-independent.\nSet to true if your variation code or global JS relies on `convert.$()` syntax and your site doesn't globally provide jQuery.\nThe new script itself does not require jQuery to function.\n"
              },
              "disable_spa_functionality": {
                "type": "boolean",
                "default": false,
                "description": "If true, disables Convert's built-in optimizations and automatic handling for Single Page Applications (SPAs).\nMost SPAs work well with default SPA functionality enabled. Only disable if encountering specific conflicts or issues.\nKB: \"SPA Optimizations\", \"Running Experiments on Single Page Apps\".\n"
              },
              "do_not_track_referral": {
                "type": "boolean",
                "default": false,
                "description": "If true, Convert will not store referral data (like HTTP referrer or UTM parameters) in visitor cookies for use across subsequent pages or sessions.\nReferral data will still be used for targeting on the initial page view where it's present.\n"
              },
              "time_zone": {
                "type": "string",
                "description": "The primary timezone for this project (e.g., \"America/New_York\", \"Europe/London\", \"UTC\").\nThis timezone is used for scheduling experiences, interpreting time-based audience conditions (like 'hour of day - project_tz'), and displaying timestamps in reports.\n"
              },
              "utc_offset": {
                "$ref": "#/components/schemas/UTC_Offset"
              },
              "time_format": {
                "type": "string",
                "description": "Preferred time format for display within the Convert application UI for this project (12-hour or 24-hour).",
                "enum": [
                  "12h",
                  "24h"
                ]
              },
              "debug_token": {
                "$ref": "#/components/schemas/GenerateDebugTokenData"
              },
              "disable_default_config": {
                "type": "boolean",
                "default": false,
                "description": "(For Full Stack projects) If true, disables the default public configuration endpoint for this project.\nAccess to project configuration via SDKs would then strictly require an authenticated SDK key. Enhances security for Full Stack projects.\n"
              },
              "include_experience_collaborators": {
                "type": "boolean",
                "default": false,
                "description": "If true, experience details retrieved via API will include information about the experience owner and collaborators.\nKB: \"Assign Visible Owners and Collaborators to Experiences\".\n"
              },
              "version": {
                "type": "string",
                "maxLength": 50,
                "nullable": true,
                "readOnly": true,
                "description": "An internal version identifier for the project's configuration.\nThis version string changes whenever a modification is made that affects the tracking script's content (e.g., updating an experience, goal, or project setting).\nFormat: [ISO_datetime]-[incremental_number].\n"
              },
              "legacy_script": {
                "type": "boolean",
                "default": false,
                "description": "If true, this project is configured to use Convert's legacy tracking script.\nIf false, it uses the newer, more performant v1 tracking script.\nNew projects default to `false`. Existing projects retain their current script setting.\nKB: \"How to Install the Main Tag / Convert Tracking Code / JavaScript\" - \"The Tracking Script vs Legacy Tracking Script\".\n"
              },
              "ignore_unused_locations": {
                "type": "boolean",
                "default": false,
                "description": "If true, locations that are not currently associated with any active experiences will be excluded from the tracking script data downloaded by visitors.\nThis can help reduce snippet size and improve performance.\nKB: \"Benefits of Archiving Unused Goals, Locations, and Audiences.\" (Related concept for goals).\n"
              },
              "personalization": {
                "type": "object",
                "nullable": true,
                "description": "Personalization settings.",
                "properties": {
                  "enabled": {
                    "type": "boolean",
                    "default": false,
                    "description": "Indicates whether personalization is enabled for this project."
                  }
                }
              },
              "tracking_script": {
                "type": "object",
                "description": "Settings related to the management and versioning of the Convert tracking script for this project.\nAllows choosing a release strategy (manual, latest, scheduled) and viewing available/applied script versions.\nKB: \"Tracking Script Version Management\".\n",
                "additionalProperties": false,
                "nullable": true,
                "properties": {
                  "current_version": {
                    "description": "The version string of the tracking script currently active for this project (e.g., \"v2.11.3\").",
                    "type": "string"
                  },
                  "previous_version": {
                    "type": "string",
                    "description": "The version string of the tracking script that was active before the `current_version`. Only available if a rollback is possible (manual mode).",
                    "nullable": true,
                    "readOnly": true
                  },
                  "available_versions": {
                    "$ref": "#/components/schemas/TrackingScriptAvailableVersions"
                  },
                  "release": {
                    "$ref": "#/components/schemas/TrackingScriptRelease"
                  }
                }
              },
              "visitor_insights": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/VisitorInsightsBase"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "readOnly": true,
                        "description": "Id of the visitor insights",
                        "nullable": true
                      }
                    }
                  }
                ],
                "description": "Settings for Convert Signals™ (Visitor Insights), which captures sessions with user frustration signals.\nKB: \"Understanding Convert Signals™ and signals.observer.min.js script in Convert\".\n"
              }
            }
          },
          "integrations_settings": {
            "type": "object",
            "description": "Project-wide settings for various third-party integrations (e.g., Google Analytics, Crazy Egg, Hotjar). Experience-level settings can sometimes override these.",
            "properties": {
              "crazyegg": {
                "description": "Settings for Crazy Egg integration. Requires API key and secret for certain functionalities like automatically creating snapshots for variations.\nKB: \"Integrate Convert Experiences with Crazy Egg\".\n",
                "properties": {
                  "api_key": {
                    "type": "string",
                    "maxLength": 100,
                    "nullable": true,
                    "description": "Crazy Egg API key for this project."
                  },
                  "api_secret": {
                    "type": "string",
                    "maxLength": 100,
                    "nullable": true,
                    "description": "Crazy Egg API secret. Not returned in GET requests for security."
                  }
                }
              },
              "google_analytics": {
                "$ref": "#/components/schemas/GA_Settings"
              },
              "kissmetrics": {
                "type": "object",
                "properties": {
                  "enabled": {
                    "type": "boolean",
                    "description": "If true, enables sending of Convert experiment data to Kissmetrics for this project."
                  }
                }
              },
              "hotjar": {
                "type": "object",
                "properties": {
                  "enabled": {
                    "type": "boolean",
                    "description": "If true, enables sending of Convert experiment data (as tags) to Hotjar for this project."
                  }
                }
              }
            }
          },
          "status": {
            "$ref": "#/components/schemas/ProjectStatuses"
          },
          "custom_domain": {
            "type": "object",
            "nullable": true,
            "description": "Configuration for using a custom domain (CNAME) to serve the Convert tracking script and receive tracking data.\nThis can improve branding and potentially reduce issues with ad blockers or third-party cookie restrictions.\nRequires DNS setup.\n",
            "required": [
              "domain"
            ],
            "properties": {
              "domain": {
                "type": "string",
                "description": "The custom domain name (e.g., \"analytics.yourcompany.com\") to be used for Convert tracking.",
                "maxLength": 150,
                "pattern": "^.+\\..+"
              },
              "status": {
                "type": "string",
                "description": "The activation status of the custom domain:\n- `pending`: DNS changes are made, awaiting verification and activation by Convert.\n- `active`: Custom domain is verified and actively being used for tracking.\n",
                "readOnly": true,
                "enum": [
                  "pending",
                  "active"
                ]
              },
              "ownership_verification": {
                "type": "array",
                "nullable": true,
                "readOnly": true,
                "description": "DNS records and values required to verify ownership of the custom domain. Provided by Convert during setup.",
                "items": {
                  "$ref": "#/components/schemas/CustomDomainOwnershipVerificationItem"
                }
              },
              "version": {
                "type": "string",
                "description": "The version of the custom domain.",
                "readOnly": true
              }
            }
          },
          "environments": {
            "type": "object",
            "description": "A user-defined map of environments for this project (e.g., \"production\", \"staging\", \"development\").\nEach environment has its own variant of the tracking script. Experiences are typically configured to run in a specific environment.\nThe number of allowed environments depends on the account's subscription plan.\nKB: \"The Environments Feature\".\n",
            "additionalProperties": {
              "type": "object",
              "description": "Defines a single environment. The key of this object in the parent `environments` map is the environment's machine-readable name (e.g., \"production\").",
              "properties": {
                "label": {
                  "type": "string",
                  "description": "A user-friendly display name for the environment (e.g., \"Production Live Site\", \"QA Staging Server\")."
                },
                "is_default": {
                  "type": "boolean",
                  "description": "If true, this environment is considered the default for the project. New experiences might default to this environment if not specified. Only one environment can be the default."
                },
                "js": {
                  "type": "string",
                  "nullable": true,
                  "description": "The environment-specific javascript code that will be loaded after the project's global javascript.\nWhen an environment is specified in the request, this code will be appended to the project's global_javascript with a newline character.\n"
                }
              },
              "required": [
                "label",
                "is_default"
              ]
            },
            "default": {
              "production": {
                "label": "Production",
                "is_default": true
              }
            }
          },
          "default_goals": {
            "type": "array",
            "description": "A list of Goal IDs that will be automatically added to any new experience created within this project.",
            "items": {
              "$ref": "#/components/schemas/SimpleGoalExpandable"
            }
          },
          "default_audiences": {
            "type": "array",
            "description": "A list of Audience IDs that will be automatically added to any new experience created within this project.",
            "items": {
              "$ref": "#/components/schemas/SimpleAudienceExpandable"
            }
          },
          "default_locations": {
            "type": "array",
            "description": "A list of Location IDs that will be automatically added to any new experience created within this project.",
            "items": {
              "$ref": "#/components/schemas/SimpleLocationExpandable"
            }
          }
        }
      },
      "TrackingScriptAvailableVersions": {
        "type": "array",
        "description": "A list of available versions for the Convert tracking script, each with a version tag, changelog, release date, and potentially the date it was or will be applied to the project.",
        "readOnly": true,
        "items": {
          "type": "object",
          "properties": {
            "version": {
              "type": "string",
              "description": "The version tag string (e.g., \"v2.11.3\", \"v3.0.0-beta1\")."
            },
            "changelog": {
              "type": "string",
              "nullable": true,
              "description": "A summary of changes, improvements, and bug fixes included in this script version."
            },
            "released_date": {
              "type": "integer",
              "format": "int64",
              "description": "Unix timestamp (UTC) when this script version was officially released by Convert."
            },
            "apply_date": {
              "type": "integer",
              "format": "int64",
              "nullable": true,
              "description": "Unix timestamp (UTC) when this version was (or is scheduled to be) applied to the project, if using manual or scheduled updates."
            }
          }
        }
      },
      "TrackingScriptReleaseBase": {
        "type": "object",
        "description": "Base settings for managing how new versions of the Convert tracking script are applied to the project.",
        "properties": {
          "type": {
            "type": "string",
            "description": "The chosen strategy for updating the tracking script: 'manual', 'latest' (auto-update), or 'scheduled'.\n"
          }
        }
      },
      "TrackingScriptReleaseAutomaticApplyOn": {
        "type": "object",
        "description": "Configuration for scheduled tracking script updates, specifying the day of the week and time for automatic application of new versions.",
        "additionalProperties": false,
        "properties": {
          "day": {
            "type": "integer",
            "description": "Day of the week for scheduled updates (e.g., 1 for Monday, 7 for Sunday - convention needs to be clear).",
            "minimum": 1,
            "maximum": 7
          },
          "time": {
            "type": "string",
            "pattern": "^([01]?[0-9]|2[0-4]):([0-5][0-9])$",
            "description": "Time of day (in project's timezone or UTC, needs clarification) in HH:MM format for scheduled updates (e.g., \"03:00\" for 3 AM)."
          }
        },
        "required": [
          "day",
          "time"
        ]
      },
      "TrackingScriptReleaseManual": {
        "allOf": [
          {
            "$ref": "#/components/schemas/TrackingScriptReleaseBase"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "type": {
                "enum": [
                  "manual"
                ]
              }
            }
          }
        ]
      },
      "TrackingScriptReleaseLatest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/TrackingScriptReleaseBase"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "type": {
                "enum": [
                  "latest"
                ]
              }
            }
          }
        ]
      },
      "TrackingScriptReleaseScheduled": {
        "allOf": [
          {
            "$ref": "#/components/schemas/TrackingScriptReleaseBase"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "type": {
                "enum": [
                  "scheduled"
                ]
              },
              "automatic_apply_on": {
                "$ref": "#/components/schemas/TrackingScriptReleaseAutomaticApplyOn"
              }
            }
          }
        ]
      },
      "TrackingScriptRelease": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/TrackingScriptReleaseManual"
          },
          {
            "$ref": "#/components/schemas/TrackingScriptReleaseLatest"
          },
          {
            "$ref": "#/components/schemas/TrackingScriptReleaseScheduled"
          }
        ],
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "manual": "#/components/schemas/TrackingScriptReleaseManual",
            "latest": "#/components/schemas/TrackingScriptReleaseLatest",
            "scheduled": "#/components/schemas/TrackingScriptReleaseScheduled"
          }
        }
      },
      "ProjectGASettingsBase": {
        "allOf": [
          {
            "$ref": "#/components/schemas/GA_SettingsBase"
          },
          {
            "type": "object",
            "properties": {
              "auto_revenue_tracking": {
                "type": "boolean",
                "description": "Attempt to pull revenue data from Google Analytics Revenue Tracking code."
              },
              "track_first_exposure_only": {
                "type": "boolean",
                "default": false,
                "description": "When enabled, the experience_impression event is sent only the first time a visitor is exposed to an experience, instead of on every subsequent qualifying page view. Opt-in and disabled by default."
              }
            }
          }
        ]
      },
      "ProjectIntegrationGA3": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ProjectGASettingsBase"
          },
          {
            "$ref": "#/components/schemas/IntegrationGA3"
          }
        ]
      },
      "ProjectIntegrationGA4": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ProjectGASettingsBase"
          },
          {
            "$ref": "#/components/schemas/IntegrationGA4"
          },
          {
            "type": "object",
            "properties": {
              "no_wait_pageview": {
                "type": "boolean",
                "description": "Boolean indicating whether to wait for the page view event to complete before sending other events."
              }
            }
          }
        ]
      },
      "GA_Settings": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/ProjectIntegrationGA3"
          },
          {
            "$ref": "#/components/schemas/ProjectIntegrationGA4"
          }
        ],
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "ga3": "#/components/schemas/ProjectIntegrationGA3",
            "ga4": "#/components/schemas/ProjectIntegrationGA4"
          }
        }
      },
      "ProjectStatuses": {
        "description": "The overall status of a project:\n- `active`: The project is active, and experiences within it can run and track data.\n- `inactive`: The project is inactive (archived or paused). No experiences within it will run, and no new data will be tracked.\n- `suspended`: The project (or account) has been suspended, typically due to billing issues or terms of service violations. Services are disabled.\n",
        "type": "string",
        "enum": [
          "active",
          "inactive",
          "suspended"
        ]
      },
      "ProjectExpandable": {
        "readOnly": true,
        "anyOf": [
          {
            "type": "integer",
            "description": "Project ID to which the data belongs to"
          },
          {
            "$ref": "#/components/schemas/Project"
          }
        ]
      },
      "GenerateDebugTokenData": {
        "type": "object",
        "readOnly": true,
        "properties": {
          "value": {
            "type": "string",
            "nullable": true,
            "description": "The raw debug token. Only returned when token is not expired or force_regenerate is true.\n"
          },
          "value_print": {
            "type": "string",
            "nullable": true,
            "description": "A masked fingerprint of the token (first and last characters), safe to display for identification."
          },
          "ttl": {
            "type": "integer",
            "description": "Unix timestamp (UTC) indicating when this debug token will expire and become invalid."
          }
        }
      },
      "MetricTypes": {
        "description": "The primary types of performance metrics calculated by the reporting engine for each goal.\n- `conversion_rate`: The percentage of visitors who completed the goal (Conversions / Visitors).\n- `avg_revenue_visitor`: Average Revenue Per Visitor (RPV = Total Revenue / Total Visitors). Applicable for revenue goals.\n- `avg_products_ordered_visitor`: Average Products Per Visitor (APPV = Total Products Ordered / Total Visitors). Applicable for revenue goals tracking product counts.\n- `average_order_value`: Average Order Value (AOV = Total Revenue / Total Conversions). Applicable for revenue goals tracking order value.\n- `average_products_per_order`: Average Products Per Order (APPO = Total Products Ordered Per Visitor / Total Conversions). Applicable for revenue goals tracking product counts.\nKnowledge Base: \"Understanding Report Metrics in Convert\".\n",
        "anyOf": [
          {
            "$ref": "#/components/schemas/WithStatisticsMetricTypes"
          },
          {
            "$ref": "#/components/schemas/WithoutStatisticsMetricTypes"
          }
        ]
      },
      "WithStatisticsMetricTypes": {
        "type": "string",
        "enum": [
          "conversion_rate",
          "avg_revenue_visitor",
          "avg_products_ordered_visitor"
        ]
      },
      "WithoutStatisticsMetricTypes": {
        "type": "string",
        "enum": [
          "average_order_value",
          "average_products_per_order"
        ]
      },
      "AccessRoleNames": {
        "type": "string",
        "description": "The predefined names for user access roles within the Convert system. Each role grants a specific set of permissions.\n- `owner`: Highest level, full control over account, billing, users, and all projects. Typically the account creator.\n- `account_manager`: Broad administrative rights over the account, often including billing and user management, but might not be able to delete the account itself.\n- `admin`: Full control over projects they are assigned to, including creating/editing/deleting experiences, goals, audiences, and managing project settings. May also manage project-level collaborators.\n- `browse`: Read-only access. Can view experiences, reports, and settings but cannot make changes.\n- `edit`: Can create and modify entities like experiences, goals, audiences within assigned projects, but typically cannot activate/publish experiences or manage project settings.\n- `publish`: Can do everything an 'editor' can, plus activate/pause/complete experiences.\n- `review`: Can view and comment, but not make direct changes. Suited for stakeholders who need to approve or provide feedback.\nKnowledge Base: \"Collaborators - Share With Multiple Users / Accounts\" (describes access levels).\n",
        "enum": [
          "owner",
          "account_manager",
          "admin",
          "browse",
          "edit",
          "publish",
          "review"
        ]
      },
      "Tag": {
        "type": "object",
        "description": "Represents a tag (keyword or label) that can be associated with various Convert entities like experiences, goals, audiences, hypotheses, and observations.\nTags help organize and categorize these entities for easier filtering, searching, and management.\nKnowledge Base: \"Adding tags to your Experiences\".\n",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true,
            "description": "The unique numerical identifier for the tag."
          },
          "name": {
            "type": "string",
            "description": "The user-defined name of the tag (e.g., \"Q3 Campaigns\", \"Homepage Tests\", \"High Priority\", \"Mobile Specific\"). This is the primary identifier shown in the UI.",
            "maxLength": 100
          },
          "description": {
            "type": "string",
            "description": "(Optional) A brief explanation of the tag's purpose or the criteria for its application.",
            "maxLength": 200,
            "nullable": true
          }
        }
      },
      "TagExpandable": {
        "description": "Represents a tag, either as its unique ID or as the full tag object (ID, name, description) if expanded.",
        "oneOf": [
          {
            "type": "integer",
            "description": "Tag ID"
          },
          {
            "$ref": "#/components/schemas/Tag"
          }
        ]
      }
    }
  },
  "security": [
    {
      "requestSigningAppId": [],
      "requestSigningExpires": [],
      "requestSigningAuthorization": []
    },
    {
      "secretKey": []
    },
    {
      "cookieAuthentication": []
    }
  ]
}
```