Amplitude · Schema

Amplitude Experiment

Schema for an Amplitude experiment or feature flag configuration including variants, targeting segments, and deployment settings.

A/B TestingAnalyticsExperimentationFeature FlagsProduct AnalyticsUser Behavior

Properties

Name Type Description
id string The unique identifier for the experiment or flag.
projectId string The project ID the experiment belongs to.
key string The unique key used to reference the experiment or flag in code.
name string The display name of the experiment or flag.
description string A description of the experiment's purpose and hypothesis.
type string The type of configuration.
enabled boolean Whether the experiment or flag is currently enabled.
evaluationMode string The evaluation mode determining where variants are computed.
state string The lifecycle state of the experiment or flag.
bucketingKey string The user property used for deterministic bucketing.
bucketingSalt string The salt used with the bucketing key for hash computation.
variants array Array of variant configurations for the experiment.
segments array Array of targeting segments that control which users see which variants.
deployments array Array of deployment IDs where this experiment is active.
rolledOutVariant string The variant key that was rolled out after the experiment concluded.
startDate string The date and time the experiment started.
endDate string The date and time the experiment ended.
View JSON Schema on GitHub

JSON Schema

amplitude-experiment-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://amplitude.com/schemas/amplitude/experiment.json",
  "title": "Amplitude Experiment",
  "description": "Schema for an Amplitude experiment or feature flag configuration including variants, targeting segments, and deployment settings.",
  "type": "object",
  "required": ["key"],
  "properties": {
    "id": {
      "type": "string",
      "description": "The unique identifier for the experiment or flag."
    },
    "projectId": {
      "type": "string",
      "description": "The project ID the experiment belongs to."
    },
    "key": {
      "type": "string",
      "description": "The unique key used to reference the experiment or flag in code.",
      "minLength": 1,
      "pattern": "^[a-z0-9_-]+$"
    },
    "name": {
      "type": "string",
      "description": "The display name of the experiment or flag.",
      "maxLength": 255
    },
    "description": {
      "type": "string",
      "description": "A description of the experiment's purpose and hypothesis."
    },
    "type": {
      "type": "string",
      "description": "The type of configuration.",
      "enum": ["experiment", "flag", "release"]
    },
    "enabled": {
      "type": "boolean",
      "description": "Whether the experiment or flag is currently enabled."
    },
    "evaluationMode": {
      "type": "string",
      "description": "The evaluation mode determining where variants are computed.",
      "enum": ["local", "remote"]
    },
    "state": {
      "type": "string",
      "description": "The lifecycle state of the experiment or flag.",
      "enum": ["draft", "running", "stopped", "active", "archived"]
    },
    "bucketingKey": {
      "type": "string",
      "description": "The user property used for deterministic bucketing."
    },
    "bucketingSalt": {
      "type": "string",
      "description": "The salt used with the bucketing key for hash computation."
    },
    "variants": {
      "type": "array",
      "description": "Array of variant configurations for the experiment.",
      "items": {
        "$ref": "#/$defs/Variant"
      }
    },
    "segments": {
      "type": "array",
      "description": "Array of targeting segments that control which users see which variants.",
      "items": {
        "$ref": "#/$defs/Segment"
      }
    },
    "deployments": {
      "type": "array",
      "description": "Array of deployment IDs where this experiment is active.",
      "items": {
        "type": "string"
      }
    },
    "rolledOutVariant": {
      "type": "string",
      "description": "The variant key that was rolled out after the experiment concluded."
    },
    "startDate": {
      "type": "string",
      "format": "date-time",
      "description": "The date and time the experiment started."
    },
    "endDate": {
      "type": "string",
      "format": "date-time",
      "description": "The date and time the experiment ended."
    }
  },
  "$defs": {
    "Variant": {
      "type": "object",
      "description": "A variant in an experiment or feature flag.",
      "required": ["key"],
      "properties": {
        "key": {
          "type": "string",
          "description": "The unique key identifying this variant.",
          "minLength": 1
        },
        "name": {
          "type": "string",
          "description": "The display name of the variant."
        },
        "description": {
          "type": "string",
          "description": "A description of what this variant does."
        },
        "payload": {
          "description": "An optional JSON payload associated with the variant for client-side configuration."
        },
        "rolloutWeight": {
          "type": "integer",
          "description": "The traffic allocation percentage for this variant.",
          "minimum": 0,
          "maximum": 100
        }
      }
    },
    "Segment": {
      "type": "object",
      "description": "A targeting segment that defines which users receive a specific variant.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The display name of the segment."
        },
        "conditions": {
          "type": "array",
          "description": "Array of targeting conditions that must all be true for the segment to match.",
          "items": {
            "$ref": "#/$defs/Condition"
          }
        },
        "variant": {
          "type": "string",
          "description": "The variant key to assign when this segment matches."
        },
        "percentage": {
          "type": "integer",
          "description": "The percentage of matching users to include.",
          "minimum": 0,
          "maximum": 100
        }
      }
    },
    "Condition": {
      "type": "object",
      "description": "A single targeting condition used in segment evaluation.",
      "properties": {
        "type": {
          "type": "string",
          "description": "The type of targeting condition.",
          "enum": ["user_property", "cohort", "device_id", "user_id"]
        },
        "prop": {
          "type": "string",
          "description": "The property name to evaluate."
        },
        "op": {
          "type": "string",
          "description": "The comparison operator.",
          "enum": ["is", "is_not", "contains", "does_not_contain", "greater_than", "less_than", "set", "not_set", "glob_match", "glob_does_not_match"]
        },
        "values": {
          "type": "array",
          "description": "The values to compare against.",
          "items": {
            "type": "string"
          }
        }
      }
    }
  }
}