Experiments

For instructions on how to authenticate to use this endpoint, see API overview.

Endpoints

GET
POST
GET
PATCH
DELETE
POST
POST
POST
POST

List all experiments

List experiments for the current project. Supports filtering by status and archival state.

Required API key scopes

experiment:read

Path parameters

  • project_id
    string

Query parameters

  • limit
    integer
  • offset
    integer

Response


Example request

GET /api/projects/:project_id/experiments
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/experiments/

Example response

Status 200
RESPONSE
{
"count": 123,
"next": "http://api.example.org/accounts/?offset=400&limit=100",
"previous": "http://api.example.org/accounts/?offset=200&limit=100",
"results": [
{
"id": 0,
"name": "string",
"description": "string",
"start_date": "2019-08-24T14:15:22Z",
"end_date": "2019-08-24T14:15:22Z",
"feature_flag_key": "string",
"feature_flag": {
"id": 0,
"team_id": 0,
"name": "string",
"key": "string",
"filters": {
"property1": null,
"property2": null
},
"deleted": true,
"active": true,
"ensure_experience_continuity": true,
"has_encrypted_payloads": true,
"version": -2147483648,
"evaluation_runtime": "server",
"bucketing_identifier": "distinct_id",
"evaluation_contexts": [
"string"
]
},
"holdout": {
"id": 0,
"name": "string",
"description": "string",
"filters": null,
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {
"property1": null,
"property2": null
},
"role_at_organization": "engineering"
},
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z"
},
"holdout_id": 0,
"exposure_cohort": 0,
"parameters": {
"feature_flag_variants": null,
"minimum_detectable_effect": null,
"rollout_percentage": null
},
"secondary_metrics": null,
"saved_metrics": [
{
"id": 0,
"experiment": 0,
"saved_metric": 0,
"metadata": null,
"created_at": "2019-08-24T14:15:22Z",
"query": null,
"name": "string"
}
],
"saved_metrics_ids": [
null
],
"filters": null,
"archived": false,
"deleted": true,
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {
"property1": null,
"property2": null
},
"role_at_organization": "engineering"
},
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"type": "web",
"exposure_criteria": {
"exposure_config": {
"event": "string",
"kind": "ExperimentEventExposureConfig",
"properties": [
{
"key": "string",
"label": null,
"operator": "exact",
"type": "event",
"value": null
}
]
},
"filterTestAccounts": null
},
"metrics": [
{
"completion_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"conversion_window": null,
"denominator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"goal": "increase",
"kind": "ExperimentMetric",
"metric_type": "funnel",
"name": null,
"numerator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"retention_window_end": null,
"retention_window_start": null,
"retention_window_unit": "second",
"series": null,
"source": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_handling": "first_seen",
"uuid": null
}
],
"metrics_secondary": [
{
"completion_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"conversion_window": null,
"denominator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"goal": "increase",
"kind": "ExperimentMetric",
"metric_type": "funnel",
"name": null,
"numerator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"retention_window_end": null,
"retention_window_start": null,
"retention_window_unit": "second",
"series": null,
"source": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_handling": "first_seen",
"uuid": null
}
],
"stats_config": null,
"scheduling_config": null,
"allow_unknown_events": false,
"_create_in_folder": "string",
"conclusion": "won",
"conclusion_comment": "string",
"primary_metrics_ordered_uuids": null,
"secondary_metrics_ordered_uuids": null,
"only_count_matured_users": true,
"update_feature_flag_params": false,
"status": "draft",
"user_access_level": "string"
}
]
}

List all experiments

List experiments for the current project. Supports filtering by status and archival state.

Required API key scopes

experiment:read

Path parameters

  • project_id
    string

Query parameters

  • limit
    integer
  • offset
    integer

Response


Example request

GET /api/projects/:project_id/experiments
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/experiments/

Example response

Status 200
RESPONSE
{
"count": 123,
"next": "http://api.example.org/accounts/?offset=400&limit=100",
"previous": "http://api.example.org/accounts/?offset=200&limit=100",
"results": [
{
"id": 0,
"name": "string",
"description": "string",
"start_date": "2019-08-24T14:15:22Z",
"end_date": "2019-08-24T14:15:22Z",
"feature_flag_key": "string",
"feature_flag": {
"id": 0,
"team_id": 0,
"name": "string",
"key": "string",
"filters": {
"property1": null,
"property2": null
},
"deleted": true,
"active": true,
"ensure_experience_continuity": true,
"has_encrypted_payloads": true,
"version": -2147483648,
"evaluation_runtime": "server",
"bucketing_identifier": "distinct_id",
"evaluation_contexts": [
"string"
]
},
"holdout": {
"id": 0,
"name": "string",
"description": "string",
"filters": null,
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {
"property1": null,
"property2": null
},
"role_at_organization": "engineering"
},
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z"
},
"holdout_id": 0,
"exposure_cohort": 0,
"parameters": {
"feature_flag_variants": null,
"minimum_detectable_effect": null,
"rollout_percentage": null
},
"secondary_metrics": null,
"saved_metrics": [
{
"id": 0,
"experiment": 0,
"saved_metric": 0,
"metadata": null,
"created_at": "2019-08-24T14:15:22Z",
"query": null,
"name": "string"
}
],
"saved_metrics_ids": [
null
],
"filters": null,
"archived": false,
"deleted": true,
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {
"property1": null,
"property2": null
},
"role_at_organization": "engineering"
},
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"type": "web",
"exposure_criteria": {
"exposure_config": {
"event": "string",
"kind": "ExperimentEventExposureConfig",
"properties": [
{
"key": "string",
"label": null,
"operator": "exact",
"type": "event",
"value": null
}
]
},
"filterTestAccounts": null
},
"metrics": [
{
"completion_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"conversion_window": null,
"denominator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"goal": "increase",
"kind": "ExperimentMetric",
"metric_type": "funnel",
"name": null,
"numerator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"retention_window_end": null,
"retention_window_start": null,
"retention_window_unit": "second",
"series": null,
"source": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_handling": "first_seen",
"uuid": null
}
],
"metrics_secondary": [
{
"completion_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"conversion_window": null,
"denominator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"goal": "increase",
"kind": "ExperimentMetric",
"metric_type": "funnel",
"name": null,
"numerator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"retention_window_end": null,
"retention_window_start": null,
"retention_window_unit": "second",
"series": null,
"source": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_handling": "first_seen",
"uuid": null
}
],
"stats_config": null,
"scheduling_config": null,
"allow_unknown_events": false,
"_create_in_folder": "string",
"conclusion": "won",
"conclusion_comment": "string",
"primary_metrics_ordered_uuids": null,
"secondary_metrics_ordered_uuids": null,
"only_count_matured_users": true,
"update_feature_flag_params": false,
"status": "draft",
"user_access_level": "string"
}
]
}

Create experiments

Create a new experiment in draft status with optional metrics.

Required API key scopes

experiment:write

Path parameters

  • project_id
    string

Request parameters

  • name
    string
  • description
    string
  • start_date
    string
  • end_date
    string
  • feature_flag_key
    string
  • holdout_id
    integer
  • parameters
  • secondary_metrics
  • saved_metrics_ids
    array
  • filters
  • archived
    boolean
    Default: false
  • deleted
    boolean
  • type
  • exposure_criteria
  • metrics
  • metrics_secondary
  • stats_config
  • scheduling_config
  • allow_unknown_events
    boolean
    Default: false
  • _create_in_folder
    string
  • conclusion
  • conclusion_comment
    string
  • primary_metrics_ordered_uuids
  • secondary_metrics_ordered_uuids
  • only_count_matured_users
    boolean
  • update_feature_flag_params
    boolean
    Default: false

Response


Example request

POST /api/projects/:project_id/experiments
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl
-H 'Content-Type: application/json'\
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/experiments/\
-d name="string",\
-d feature_flag_key="string"

Example response

Status 201
RESPONSE
{
"id": 0,
"name": "string",
"description": "string",
"start_date": "2019-08-24T14:15:22Z",
"end_date": "2019-08-24T14:15:22Z",
"feature_flag_key": "string",
"feature_flag": {
"id": 0,
"team_id": 0,
"name": "string",
"key": "string",
"filters": {
"property1": null,
"property2": null
},
"deleted": true,
"active": true,
"ensure_experience_continuity": true,
"has_encrypted_payloads": true,
"version": -2147483648,
"evaluation_runtime": "server",
"bucketing_identifier": "distinct_id",
"evaluation_contexts": [
"string"
]
},
"holdout": {
"id": 0,
"name": "string",
"description": "string",
"filters": null,
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {
"property1": null,
"property2": null
},
"role_at_organization": "engineering"
},
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z"
},
"holdout_id": 0,
"exposure_cohort": 0,
"parameters": {
"feature_flag_variants": null,
"minimum_detectable_effect": null,
"rollout_percentage": null
},
"secondary_metrics": null,
"saved_metrics": [
{
"id": 0,
"experiment": 0,
"saved_metric": 0,
"metadata": null,
"created_at": "2019-08-24T14:15:22Z",
"query": null,
"name": "string"
}
],
"saved_metrics_ids": [
null
],
"filters": null,
"archived": false,
"deleted": true,
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {
"property1": null,
"property2": null
},
"role_at_organization": "engineering"
},
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"type": "web",
"exposure_criteria": {
"exposure_config": {
"event": "string",
"kind": "ExperimentEventExposureConfig",
"properties": [
{
"key": "string",
"label": null,
"operator": "exact",
"type": "event",
"value": null
}
]
},
"filterTestAccounts": null
},
"metrics": [
{
"completion_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"conversion_window": null,
"denominator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"goal": "increase",
"kind": "ExperimentMetric",
"metric_type": "funnel",
"name": null,
"numerator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"retention_window_end": null,
"retention_window_start": null,
"retention_window_unit": "second",
"series": null,
"source": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_handling": "first_seen",
"uuid": null
}
],
"metrics_secondary": [
{
"completion_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"conversion_window": null,
"denominator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"goal": "increase",
"kind": "ExperimentMetric",
"metric_type": "funnel",
"name": null,
"numerator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"retention_window_end": null,
"retention_window_start": null,
"retention_window_unit": "second",
"series": null,
"source": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_handling": "first_seen",
"uuid": null
}
],
"stats_config": null,
"scheduling_config": null,
"allow_unknown_events": false,
"_create_in_folder": "string",
"conclusion": "won",
"conclusion_comment": "string",
"primary_metrics_ordered_uuids": null,
"secondary_metrics_ordered_uuids": null,
"only_count_matured_users": true,
"update_feature_flag_params": false,
"status": "draft",
"user_access_level": "string"
}

Create experiments

Create a new experiment in draft status with optional metrics.

Required API key scopes

experiment:write

Path parameters

  • project_id
    string

Request parameters

  • name
    string
  • description
    string
  • start_date
    string
  • end_date
    string
  • feature_flag_key
    string
  • holdout_id
    integer
  • parameters
  • secondary_metrics
  • saved_metrics_ids
    array
  • filters
  • archived
    boolean
    Default: false
  • deleted
    boolean
  • type
  • exposure_criteria
  • metrics
  • metrics_secondary
  • stats_config
  • scheduling_config
  • allow_unknown_events
    boolean
    Default: false
  • _create_in_folder
    string
  • conclusion
  • conclusion_comment
    string
  • primary_metrics_ordered_uuids
  • secondary_metrics_ordered_uuids
  • only_count_matured_users
    boolean
  • update_feature_flag_params
    boolean
    Default: false

Response


Example request

POST /api/projects/:project_id/experiments
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl
-H 'Content-Type: application/json'\
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/experiments/\
-d name="string",\
-d feature_flag_key="string"

Example response

Status 201
RESPONSE
{
"id": 0,
"name": "string",
"description": "string",
"start_date": "2019-08-24T14:15:22Z",
"end_date": "2019-08-24T14:15:22Z",
"feature_flag_key": "string",
"feature_flag": {
"id": 0,
"team_id": 0,
"name": "string",
"key": "string",
"filters": {
"property1": null,
"property2": null
},
"deleted": true,
"active": true,
"ensure_experience_continuity": true,
"has_encrypted_payloads": true,
"version": -2147483648,
"evaluation_runtime": "server",
"bucketing_identifier": "distinct_id",
"evaluation_contexts": [
"string"
]
},
"holdout": {
"id": 0,
"name": "string",
"description": "string",
"filters": null,
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {
"property1": null,
"property2": null
},
"role_at_organization": "engineering"
},
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z"
},
"holdout_id": 0,
"exposure_cohort": 0,
"parameters": {
"feature_flag_variants": null,
"minimum_detectable_effect": null,
"rollout_percentage": null
},
"secondary_metrics": null,
"saved_metrics": [
{
"id": 0,
"experiment": 0,
"saved_metric": 0,
"metadata": null,
"created_at": "2019-08-24T14:15:22Z",
"query": null,
"name": "string"
}
],
"saved_metrics_ids": [
null
],
"filters": null,
"archived": false,
"deleted": true,
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {
"property1": null,
"property2": null
},
"role_at_organization": "engineering"
},
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"type": "web",
"exposure_criteria": {
"exposure_config": {
"event": "string",
"kind": "ExperimentEventExposureConfig",
"properties": [
{
"key": "string",
"label": null,
"operator": "exact",
"type": "event",
"value": null
}
]
},
"filterTestAccounts": null
},
"metrics": [
{
"completion_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"conversion_window": null,
"denominator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"goal": "increase",
"kind": "ExperimentMetric",
"metric_type": "funnel",
"name": null,
"numerator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"retention_window_end": null,
"retention_window_start": null,
"retention_window_unit": "second",
"series": null,
"source": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_handling": "first_seen",
"uuid": null
}
],
"metrics_secondary": [
{
"completion_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"conversion_window": null,
"denominator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"goal": "increase",
"kind": "ExperimentMetric",
"metric_type": "funnel",
"name": null,
"numerator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"retention_window_end": null,
"retention_window_start": null,
"retention_window_unit": "second",
"series": null,
"source": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_handling": "first_seen",
"uuid": null
}
],
"stats_config": null,
"scheduling_config": null,
"allow_unknown_events": false,
"_create_in_folder": "string",
"conclusion": "won",
"conclusion_comment": "string",
"primary_metrics_ordered_uuids": null,
"secondary_metrics_ordered_uuids": null,
"only_count_matured_users": true,
"update_feature_flag_params": false,
"status": "draft",
"user_access_level": "string"
}

Retrieve experiments

Retrieve a single experiment by ID, including its current status, metrics, feature flag, and results metadata.

Required API key scopes

experiment:read

Path parameters

  • id
    integer
  • project_id
    string

Response


Example request

GET /api/projects/:project_id/experiments/:id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/experiments/:id/

Example response

Status 200
RESPONSE
{
"id": 0,
"name": "string",
"description": "string",
"start_date": "2019-08-24T14:15:22Z",
"end_date": "2019-08-24T14:15:22Z",
"feature_flag_key": "string",
"feature_flag": {
"id": 0,
"team_id": 0,
"name": "string",
"key": "string",
"filters": {
"property1": null,
"property2": null
},
"deleted": true,
"active": true,
"ensure_experience_continuity": true,
"has_encrypted_payloads": true,
"version": -2147483648,
"evaluation_runtime": "server",
"bucketing_identifier": "distinct_id",
"evaluation_contexts": [
"string"
]
},
"holdout": {
"id": 0,
"name": "string",
"description": "string",
"filters": null,
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {
"property1": null,
"property2": null
},
"role_at_organization": "engineering"
},
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z"
},
"holdout_id": 0,
"exposure_cohort": 0,
"parameters": {
"feature_flag_variants": null,
"minimum_detectable_effect": null,
"rollout_percentage": null
},
"secondary_metrics": null,
"saved_metrics": [
{
"id": 0,
"experiment": 0,
"saved_metric": 0,
"metadata": null,
"created_at": "2019-08-24T14:15:22Z",
"query": null,
"name": "string"
}
],
"saved_metrics_ids": [
null
],
"filters": null,
"archived": false,
"deleted": true,
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {
"property1": null,
"property2": null
},
"role_at_organization": "engineering"
},
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"type": "web",
"exposure_criteria": {
"exposure_config": {
"event": "string",
"kind": "ExperimentEventExposureConfig",
"properties": [
{
"key": "string",
"label": null,
"operator": "exact",
"type": "event",
"value": null
}
]
},
"filterTestAccounts": null
},
"metrics": [
{
"completion_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"conversion_window": null,
"denominator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"goal": "increase",
"kind": "ExperimentMetric",
"metric_type": "funnel",
"name": null,
"numerator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"retention_window_end": null,
"retention_window_start": null,
"retention_window_unit": "second",
"series": null,
"source": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_handling": "first_seen",
"uuid": null
}
],
"metrics_secondary": [
{
"completion_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"conversion_window": null,
"denominator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"goal": "increase",
"kind": "ExperimentMetric",
"metric_type": "funnel",
"name": null,
"numerator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"retention_window_end": null,
"retention_window_start": null,
"retention_window_unit": "second",
"series": null,
"source": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_handling": "first_seen",
"uuid": null
}
],
"stats_config": null,
"scheduling_config": null,
"allow_unknown_events": false,
"_create_in_folder": "string",
"conclusion": "won",
"conclusion_comment": "string",
"primary_metrics_ordered_uuids": null,
"secondary_metrics_ordered_uuids": null,
"only_count_matured_users": true,
"update_feature_flag_params": false,
"status": "draft",
"user_access_level": "string"
}

Retrieve experiments

Retrieve a single experiment by ID, including its current status, metrics, feature flag, and results metadata.

Required API key scopes

experiment:read

Path parameters

  • id
    integer
  • project_id
    string

Response


Example request

GET /api/projects/:project_id/experiments/:id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/experiments/:id/

Example response

Status 200
RESPONSE
{
"id": 0,
"name": "string",
"description": "string",
"start_date": "2019-08-24T14:15:22Z",
"end_date": "2019-08-24T14:15:22Z",
"feature_flag_key": "string",
"feature_flag": {
"id": 0,
"team_id": 0,
"name": "string",
"key": "string",
"filters": {
"property1": null,
"property2": null
},
"deleted": true,
"active": true,
"ensure_experience_continuity": true,
"has_encrypted_payloads": true,
"version": -2147483648,
"evaluation_runtime": "server",
"bucketing_identifier": "distinct_id",
"evaluation_contexts": [
"string"
]
},
"holdout": {
"id": 0,
"name": "string",
"description": "string",
"filters": null,
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {
"property1": null,
"property2": null
},
"role_at_organization": "engineering"
},
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z"
},
"holdout_id": 0,
"exposure_cohort": 0,
"parameters": {
"feature_flag_variants": null,
"minimum_detectable_effect": null,
"rollout_percentage": null
},
"secondary_metrics": null,
"saved_metrics": [
{
"id": 0,
"experiment": 0,
"saved_metric": 0,
"metadata": null,
"created_at": "2019-08-24T14:15:22Z",
"query": null,
"name": "string"
}
],
"saved_metrics_ids": [
null
],
"filters": null,
"archived": false,
"deleted": true,
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {
"property1": null,
"property2": null
},
"role_at_organization": "engineering"
},
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"type": "web",
"exposure_criteria": {
"exposure_config": {
"event": "string",
"kind": "ExperimentEventExposureConfig",
"properties": [
{
"key": "string",
"label": null,
"operator": "exact",
"type": "event",
"value": null
}
]
},
"filterTestAccounts": null
},
"metrics": [
{
"completion_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"conversion_window": null,
"denominator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"goal": "increase",
"kind": "ExperimentMetric",
"metric_type": "funnel",
"name": null,
"numerator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"retention_window_end": null,
"retention_window_start": null,
"retention_window_unit": "second",
"series": null,
"source": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_handling": "first_seen",
"uuid": null
}
],
"metrics_secondary": [
{
"completion_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"conversion_window": null,
"denominator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"goal": "increase",
"kind": "ExperimentMetric",
"metric_type": "funnel",
"name": null,
"numerator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"retention_window_end": null,
"retention_window_start": null,
"retention_window_unit": "second",
"series": null,
"source": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_handling": "first_seen",
"uuid": null
}
],
"stats_config": null,
"scheduling_config": null,
"allow_unknown_events": false,
"_create_in_folder": "string",
"conclusion": "won",
"conclusion_comment": "string",
"primary_metrics_ordered_uuids": null,
"secondary_metrics_ordered_uuids": null,
"only_count_matured_users": true,
"update_feature_flag_params": false,
"status": "draft",
"user_access_level": "string"
}

Update experiments

Update an experiment. Use this to modify experiment properties such as name, description, metrics, variants, and configuration. Metrics can be added, changed and removed at any time.

Required API key scopes

experiment:write

Path parameters

  • id
    integer
  • project_id
    string

Request parameters

  • name
    string
  • description
    string
  • start_date
    string
  • end_date
    string
  • feature_flag_key
    string
  • holdout_id
    integer
  • parameters
  • secondary_metrics
  • saved_metrics_ids
    array
  • filters
  • archived
    boolean
    Default: false
  • deleted
    boolean
  • type
  • exposure_criteria
  • metrics
  • metrics_secondary
  • stats_config
  • scheduling_config
  • allow_unknown_events
    boolean
    Default: false
  • _create_in_folder
    string
  • conclusion
  • conclusion_comment
    string
  • primary_metrics_ordered_uuids
  • secondary_metrics_ordered_uuids
  • only_count_matured_users
    boolean
  • update_feature_flag_params
    boolean
    Default: false

Response


Example request

PATCH /api/projects/:project_id/experiments/:id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl -X PATCH \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/experiments/:id/\
-d name="string"

Example response

Status 200
RESPONSE
{
"id": 0,
"name": "string",
"description": "string",
"start_date": "2019-08-24T14:15:22Z",
"end_date": "2019-08-24T14:15:22Z",
"feature_flag_key": "string",
"feature_flag": {
"id": 0,
"team_id": 0,
"name": "string",
"key": "string",
"filters": {
"property1": null,
"property2": null
},
"deleted": true,
"active": true,
"ensure_experience_continuity": true,
"has_encrypted_payloads": true,
"version": -2147483648,
"evaluation_runtime": "server",
"bucketing_identifier": "distinct_id",
"evaluation_contexts": [
"string"
]
},
"holdout": {
"id": 0,
"name": "string",
"description": "string",
"filters": null,
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {
"property1": null,
"property2": null
},
"role_at_organization": "engineering"
},
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z"
},
"holdout_id": 0,
"exposure_cohort": 0,
"parameters": {
"feature_flag_variants": null,
"minimum_detectable_effect": null,
"rollout_percentage": null
},
"secondary_metrics": null,
"saved_metrics": [
{
"id": 0,
"experiment": 0,
"saved_metric": 0,
"metadata": null,
"created_at": "2019-08-24T14:15:22Z",
"query": null,
"name": "string"
}
],
"saved_metrics_ids": [
null
],
"filters": null,
"archived": false,
"deleted": true,
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {
"property1": null,
"property2": null
},
"role_at_organization": "engineering"
},
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"type": "web",
"exposure_criteria": {
"exposure_config": {
"event": "string",
"kind": "ExperimentEventExposureConfig",
"properties": [
{
"key": "string",
"label": null,
"operator": "exact",
"type": "event",
"value": null
}
]
},
"filterTestAccounts": null
},
"metrics": [
{
"completion_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"conversion_window": null,
"denominator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"goal": "increase",
"kind": "ExperimentMetric",
"metric_type": "funnel",
"name": null,
"numerator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"retention_window_end": null,
"retention_window_start": null,
"retention_window_unit": "second",
"series": null,
"source": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_handling": "first_seen",
"uuid": null
}
],
"metrics_secondary": [
{
"completion_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"conversion_window": null,
"denominator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"goal": "increase",
"kind": "ExperimentMetric",
"metric_type": "funnel",
"name": null,
"numerator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"retention_window_end": null,
"retention_window_start": null,
"retention_window_unit": "second",
"series": null,
"source": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_handling": "first_seen",
"uuid": null
}
],
"stats_config": null,
"scheduling_config": null,
"allow_unknown_events": false,
"_create_in_folder": "string",
"conclusion": "won",
"conclusion_comment": "string",
"primary_metrics_ordered_uuids": null,
"secondary_metrics_ordered_uuids": null,
"only_count_matured_users": true,
"update_feature_flag_params": false,
"status": "draft",
"user_access_level": "string"
}

Update experiments

Update an experiment. Use this to modify experiment properties such as name, description, metrics, variants, and configuration. Metrics can be added, changed and removed at any time.

Required API key scopes

experiment:write

Path parameters

  • id
    integer
  • project_id
    string

Request parameters

  • name
    string
  • description
    string
  • start_date
    string
  • end_date
    string
  • feature_flag_key
    string
  • holdout_id
    integer
  • parameters
  • secondary_metrics
  • saved_metrics_ids
    array
  • filters
  • archived
    boolean
    Default: false
  • deleted
    boolean
  • type
  • exposure_criteria
  • metrics
  • metrics_secondary
  • stats_config
  • scheduling_config
  • allow_unknown_events
    boolean
    Default: false
  • _create_in_folder
    string
  • conclusion
  • conclusion_comment
    string
  • primary_metrics_ordered_uuids
  • secondary_metrics_ordered_uuids
  • only_count_matured_users
    boolean
  • update_feature_flag_params
    boolean
    Default: false

Response


Example request

PATCH /api/projects/:project_id/experiments/:id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl -X PATCH \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/experiments/:id/\
-d name="string"

Example response

Status 200
RESPONSE
{
"id": 0,
"name": "string",
"description": "string",
"start_date": "2019-08-24T14:15:22Z",
"end_date": "2019-08-24T14:15:22Z",
"feature_flag_key": "string",
"feature_flag": {
"id": 0,
"team_id": 0,
"name": "string",
"key": "string",
"filters": {
"property1": null,
"property2": null
},
"deleted": true,
"active": true,
"ensure_experience_continuity": true,
"has_encrypted_payloads": true,
"version": -2147483648,
"evaluation_runtime": "server",
"bucketing_identifier": "distinct_id",
"evaluation_contexts": [
"string"
]
},
"holdout": {
"id": 0,
"name": "string",
"description": "string",
"filters": null,
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {
"property1": null,
"property2": null
},
"role_at_organization": "engineering"
},
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z"
},
"holdout_id": 0,
"exposure_cohort": 0,
"parameters": {
"feature_flag_variants": null,
"minimum_detectable_effect": null,
"rollout_percentage": null
},
"secondary_metrics": null,
"saved_metrics": [
{
"id": 0,
"experiment": 0,
"saved_metric": 0,
"metadata": null,
"created_at": "2019-08-24T14:15:22Z",
"query": null,
"name": "string"
}
],
"saved_metrics_ids": [
null
],
"filters": null,
"archived": false,
"deleted": true,
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {
"property1": null,
"property2": null
},
"role_at_organization": "engineering"
},
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"type": "web",
"exposure_criteria": {
"exposure_config": {
"event": "string",
"kind": "ExperimentEventExposureConfig",
"properties": [
{
"key": "string",
"label": null,
"operator": "exact",
"type": "event",
"value": null
}
]
},
"filterTestAccounts": null
},
"metrics": [
{
"completion_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"conversion_window": null,
"denominator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"goal": "increase",
"kind": "ExperimentMetric",
"metric_type": "funnel",
"name": null,
"numerator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"retention_window_end": null,
"retention_window_start": null,
"retention_window_unit": "second",
"series": null,
"source": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_handling": "first_seen",
"uuid": null
}
],
"metrics_secondary": [
{
"completion_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"conversion_window": null,
"denominator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"goal": "increase",
"kind": "ExperimentMetric",
"metric_type": "funnel",
"name": null,
"numerator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"retention_window_end": null,
"retention_window_start": null,
"retention_window_unit": "second",
"series": null,
"source": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_handling": "first_seen",
"uuid": null
}
],
"stats_config": null,
"scheduling_config": null,
"allow_unknown_events": false,
"_create_in_folder": "string",
"conclusion": "won",
"conclusion_comment": "string",
"primary_metrics_ordered_uuids": null,
"secondary_metrics_ordered_uuids": null,
"only_count_matured_users": true,
"update_feature_flag_params": false,
"status": "draft",
"user_access_level": "string"
}

Delete experiments

Hard delete of this model is not allowed. Use a patch API call to set "deleted" to true

Required API key scopes

experiment:write

Path parameters

  • id
    integer
  • project_id
    string

Example request

DELETE /api/projects/:project_id/experiments/:id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl -X DELETE \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/experiments/:id/

Example response

Status 405 No response body

Delete experiments

Hard delete of this model is not allowed. Use a patch API call to set "deleted" to true

Required API key scopes

experiment:write

Path parameters

  • id
    integer
  • project_id
    string

Example request

DELETE /api/projects/:project_id/experiments/:id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl -X DELETE \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/experiments/:id/

Example response

Status 405 No response body

Create experiments archive

Archive an ended experiment.

Hides the experiment from the default list view. The experiment can be restored at any time by updating archived=false. Returns 400 if the experiment is already archived or has not ended yet.

Required API key scopes

experiment:write

Path parameters

  • id
    integer
  • project_id
    string

Response


Example request

POST /api/projects/:project_id/experiments/:id/archive
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl
-H 'Content-Type: application/json'\
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/experiments/:id/archive/

Example response

Status 200
RESPONSE
{
"id": 0,
"name": "string",
"description": "string",
"start_date": "2019-08-24T14:15:22Z",
"end_date": "2019-08-24T14:15:22Z",
"feature_flag_key": "string",
"feature_flag": {
"id": 0,
"team_id": 0,
"name": "string",
"key": "string",
"filters": {
"property1": null,
"property2": null
},
"deleted": true,
"active": true,
"ensure_experience_continuity": true,
"has_encrypted_payloads": true,
"version": -2147483648,
"evaluation_runtime": "server",
"bucketing_identifier": "distinct_id",
"evaluation_contexts": [
"string"
]
},
"holdout": {
"id": 0,
"name": "string",
"description": "string",
"filters": null,
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {
"property1": null,
"property2": null
},
"role_at_organization": "engineering"
},
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z"
},
"holdout_id": 0,
"exposure_cohort": 0,
"parameters": {
"feature_flag_variants": null,
"minimum_detectable_effect": null,
"rollout_percentage": null
},
"secondary_metrics": null,
"saved_metrics": [
{
"id": 0,
"experiment": 0,
"saved_metric": 0,
"metadata": null,
"created_at": "2019-08-24T14:15:22Z",
"query": null,
"name": "string"
}
],
"saved_metrics_ids": [
null
],
"filters": null,
"archived": false,
"deleted": true,
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {
"property1": null,
"property2": null
},
"role_at_organization": "engineering"
},
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"type": "web",
"exposure_criteria": {
"exposure_config": {
"event": "string",
"kind": "ExperimentEventExposureConfig",
"properties": [
{
"key": "string",
"label": null,
"operator": "exact",
"type": "event",
"value": null
}
]
},
"filterTestAccounts": null
},
"metrics": [
{
"completion_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"conversion_window": null,
"denominator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"goal": "increase",
"kind": "ExperimentMetric",
"metric_type": "funnel",
"name": null,
"numerator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"retention_window_end": null,
"retention_window_start": null,
"retention_window_unit": "second",
"series": null,
"source": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_handling": "first_seen",
"uuid": null
}
],
"metrics_secondary": [
{
"completion_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"conversion_window": null,
"denominator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"goal": "increase",
"kind": "ExperimentMetric",
"metric_type": "funnel",
"name": null,
"numerator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"retention_window_end": null,
"retention_window_start": null,
"retention_window_unit": "second",
"series": null,
"source": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_handling": "first_seen",
"uuid": null
}
],
"stats_config": null,
"scheduling_config": null,
"allow_unknown_events": false,
"_create_in_folder": "string",
"conclusion": "won",
"conclusion_comment": "string",
"primary_metrics_ordered_uuids": null,
"secondary_metrics_ordered_uuids": null,
"only_count_matured_users": true,
"update_feature_flag_params": false,
"status": "draft",
"user_access_level": "string"
}

Create experiments archive

Archive an ended experiment.

Hides the experiment from the default list view. The experiment can be restored at any time by updating archived=false. Returns 400 if the experiment is already archived or has not ended yet.

Required API key scopes

experiment:write

Path parameters

  • id
    integer
  • project_id
    string

Response


Example request

POST /api/projects/:project_id/experiments/:id/archive
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl
-H 'Content-Type: application/json'\
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/experiments/:id/archive/

Example response

Status 200
RESPONSE
{
"id": 0,
"name": "string",
"description": "string",
"start_date": "2019-08-24T14:15:22Z",
"end_date": "2019-08-24T14:15:22Z",
"feature_flag_key": "string",
"feature_flag": {
"id": 0,
"team_id": 0,
"name": "string",
"key": "string",
"filters": {
"property1": null,
"property2": null
},
"deleted": true,
"active": true,
"ensure_experience_continuity": true,
"has_encrypted_payloads": true,
"version": -2147483648,
"evaluation_runtime": "server",
"bucketing_identifier": "distinct_id",
"evaluation_contexts": [
"string"
]
},
"holdout": {
"id": 0,
"name": "string",
"description": "string",
"filters": null,
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {
"property1": null,
"property2": null
},
"role_at_organization": "engineering"
},
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z"
},
"holdout_id": 0,
"exposure_cohort": 0,
"parameters": {
"feature_flag_variants": null,
"minimum_detectable_effect": null,
"rollout_percentage": null
},
"secondary_metrics": null,
"saved_metrics": [
{
"id": 0,
"experiment": 0,
"saved_metric": 0,
"metadata": null,
"created_at": "2019-08-24T14:15:22Z",
"query": null,
"name": "string"
}
],
"saved_metrics_ids": [
null
],
"filters": null,
"archived": false,
"deleted": true,
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {
"property1": null,
"property2": null
},
"role_at_organization": "engineering"
},
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"type": "web",
"exposure_criteria": {
"exposure_config": {
"event": "string",
"kind": "ExperimentEventExposureConfig",
"properties": [
{
"key": "string",
"label": null,
"operator": "exact",
"type": "event",
"value": null
}
]
},
"filterTestAccounts": null
},
"metrics": [
{
"completion_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"conversion_window": null,
"denominator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"goal": "increase",
"kind": "ExperimentMetric",
"metric_type": "funnel",
"name": null,
"numerator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"retention_window_end": null,
"retention_window_start": null,
"retention_window_unit": "second",
"series": null,
"source": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_handling": "first_seen",
"uuid": null
}
],
"metrics_secondary": [
{
"completion_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"conversion_window": null,
"denominator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"goal": "increase",
"kind": "ExperimentMetric",
"metric_type": "funnel",
"name": null,
"numerator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"retention_window_end": null,
"retention_window_start": null,
"retention_window_unit": "second",
"series": null,
"source": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_handling": "first_seen",
"uuid": null
}
],
"stats_config": null,
"scheduling_config": null,
"allow_unknown_events": false,
"_create_in_folder": "string",
"conclusion": "won",
"conclusion_comment": "string",
"primary_metrics_ordered_uuids": null,
"secondary_metrics_ordered_uuids": null,
"only_count_matured_users": true,
"update_feature_flag_params": false,
"status": "draft",
"user_access_level": "string"
}

Create experiments copy to project

Mixin for ViewSets to handle ApprovalRequired exceptions from decorated serializers.

This mixin intercepts ApprovalRequired exceptions raised by the @approval_gate decorator on serializer methods and converts them into proper HTTP 409 Conflict responses with change request details.

Required API key scopes

experiment:write

Path parameters

  • id
    integer
  • project_id
    string

Request parameters

  • target_team_id
    integer
  • feature_flag_key
    string
  • name
    string

Response


Example request

POST /api/projects/:project_id/experiments/:id/copy_to_project
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl
-H 'Content-Type: application/json'\
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/experiments/:id/copy_to_project/\
-d target_team_id="integer"

Example response

Status 200
RESPONSE
{
"id": 0,
"name": "string",
"description": "string",
"start_date": "2019-08-24T14:15:22Z",
"end_date": "2019-08-24T14:15:22Z",
"feature_flag_key": "string",
"feature_flag": {
"id": 0,
"team_id": 0,
"name": "string",
"key": "string",
"filters": {
"property1": null,
"property2": null
},
"deleted": true,
"active": true,
"ensure_experience_continuity": true,
"has_encrypted_payloads": true,
"version": -2147483648,
"evaluation_runtime": "server",
"bucketing_identifier": "distinct_id",
"evaluation_contexts": [
"string"
]
},
"holdout": {
"id": 0,
"name": "string",
"description": "string",
"filters": null,
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {
"property1": null,
"property2": null
},
"role_at_organization": "engineering"
},
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z"
},
"holdout_id": 0,
"exposure_cohort": 0,
"parameters": {
"feature_flag_variants": null,
"minimum_detectable_effect": null,
"rollout_percentage": null
},
"secondary_metrics": null,
"saved_metrics": [
{
"id": 0,
"experiment": 0,
"saved_metric": 0,
"metadata": null,
"created_at": "2019-08-24T14:15:22Z",
"query": null,
"name": "string"
}
],
"saved_metrics_ids": [
null
],
"filters": null,
"archived": false,
"deleted": true,
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {
"property1": null,
"property2": null
},
"role_at_organization": "engineering"
},
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"type": "web",
"exposure_criteria": {
"exposure_config": {
"event": "string",
"kind": "ExperimentEventExposureConfig",
"properties": [
{
"key": "string",
"label": null,
"operator": "exact",
"type": "event",
"value": null
}
]
},
"filterTestAccounts": null
},
"metrics": [
{
"completion_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"conversion_window": null,
"denominator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"goal": "increase",
"kind": "ExperimentMetric",
"metric_type": "funnel",
"name": null,
"numerator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"retention_window_end": null,
"retention_window_start": null,
"retention_window_unit": "second",
"series": null,
"source": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_handling": "first_seen",
"uuid": null
}
],
"metrics_secondary": [
{
"completion_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"conversion_window": null,
"denominator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"goal": "increase",
"kind": "ExperimentMetric",
"metric_type": "funnel",
"name": null,
"numerator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"retention_window_end": null,
"retention_window_start": null,
"retention_window_unit": "second",
"series": null,
"source": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_handling": "first_seen",
"uuid": null
}
],
"stats_config": null,
"scheduling_config": null,
"allow_unknown_events": false,
"_create_in_folder": "string",
"conclusion": "won",
"conclusion_comment": "string",
"primary_metrics_ordered_uuids": null,
"secondary_metrics_ordered_uuids": null,
"only_count_matured_users": true,
"update_feature_flag_params": false,
"status": "draft",
"user_access_level": "string"
}

Create experiments copy to project

Mixin for ViewSets to handle ApprovalRequired exceptions from decorated serializers.

This mixin intercepts ApprovalRequired exceptions raised by the @approval_gate decorator on serializer methods and converts them into proper HTTP 409 Conflict responses with change request details.

Required API key scopes

experiment:write

Path parameters

  • id
    integer
  • project_id
    string

Request parameters

  • target_team_id
    integer
  • feature_flag_key
    string
  • name
    string

Response


Example request

POST /api/projects/:project_id/experiments/:id/copy_to_project
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl
-H 'Content-Type: application/json'\
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/experiments/:id/copy_to_project/\
-d target_team_id="integer"

Example response

Status 200
RESPONSE
{
"id": 0,
"name": "string",
"description": "string",
"start_date": "2019-08-24T14:15:22Z",
"end_date": "2019-08-24T14:15:22Z",
"feature_flag_key": "string",
"feature_flag": {
"id": 0,
"team_id": 0,
"name": "string",
"key": "string",
"filters": {
"property1": null,
"property2": null
},
"deleted": true,
"active": true,
"ensure_experience_continuity": true,
"has_encrypted_payloads": true,
"version": -2147483648,
"evaluation_runtime": "server",
"bucketing_identifier": "distinct_id",
"evaluation_contexts": [
"string"
]
},
"holdout": {
"id": 0,
"name": "string",
"description": "string",
"filters": null,
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {
"property1": null,
"property2": null
},
"role_at_organization": "engineering"
},
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z"
},
"holdout_id": 0,
"exposure_cohort": 0,
"parameters": {
"feature_flag_variants": null,
"minimum_detectable_effect": null,
"rollout_percentage": null
},
"secondary_metrics": null,
"saved_metrics": [
{
"id": 0,
"experiment": 0,
"saved_metric": 0,
"metadata": null,
"created_at": "2019-08-24T14:15:22Z",
"query": null,
"name": "string"
}
],
"saved_metrics_ids": [
null
],
"filters": null,
"archived": false,
"deleted": true,
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {
"property1": null,
"property2": null
},
"role_at_organization": "engineering"
},
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"type": "web",
"exposure_criteria": {
"exposure_config": {
"event": "string",
"kind": "ExperimentEventExposureConfig",
"properties": [
{
"key": "string",
"label": null,
"operator": "exact",
"type": "event",
"value": null
}
]
},
"filterTestAccounts": null
},
"metrics": [
{
"completion_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"conversion_window": null,
"denominator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"goal": "increase",
"kind": "ExperimentMetric",
"metric_type": "funnel",
"name": null,
"numerator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"retention_window_end": null,
"retention_window_start": null,
"retention_window_unit": "second",
"series": null,
"source": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_handling": "first_seen",
"uuid": null
}
],
"metrics_secondary": [
{
"completion_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"conversion_window": null,
"denominator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"goal": "increase",
"kind": "ExperimentMetric",
"metric_type": "funnel",
"name": null,
"numerator": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"retention_window_end": null,
"retention_window_start": null,
"retention_window_unit": "second",
"series": null,
"source": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_event": {
"event": null,
"id": null,
"kind": "EventsNode",
"properties": null
},
"start_handling": "first_seen",
"uuid": null
}
],
"stats_config": null,
"scheduling_config": null,
"allow_unknown_events": false,
"_create_in_folder": "string",
"conclusion": "won",
"conclusion_comment": "string",
"primary_metrics_ordered_uuids": null,
"secondary_metrics_ordered_uuids": null,
"only_count_matured_users": true,
"update_feature_flag_params": false,
"status": "draft",
"user_access_level": "string"
}

Create experiments create exposure cohort for experiment

Mixin for ViewSets to handle ApprovalRequired exceptions from decorated serializers.

This mixin intercepts ApprovalRequired exceptions raised by the @approval_gate decorator on serializer methods and converts them into proper HTTP 409 Conflict responses with change request details.

Required API key scopes

experiment:write

Path parameters

  • id
    integer
  • project_id
    string

Request parameters

  • name
    string
  • description
    string
  • start_date
    string
  • end_date
    string
  • feature_flag_key
    string
  • holdout_id
    integer
  • parameters
  • secondary_metrics
  • saved_metrics_ids
    array
  • filters
  • archived
    boolean
    Default: false
  • deleted
    boolean
  • type
  • exposure_criteria
  • metrics
  • metrics_secondary
  • stats_config
  • scheduling_config
  • allow_unknown_events
    boolean
    Default: false
  • _create_in_folder
    string
  • conclusion
  • conclusion_comment
    string
  • primary_metrics_ordered_uuids
  • secondary_metrics_ordered_uuids
  • only_count_matured_users
    boolean
  • update_feature_flag_params
    boolean
    Default: false

Example request

POST /api/projects/:project_id/experiments/:id/create_exposure_cohort_for_experiment
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl
-H 'Content-Type: application/json'\
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/experiments/:id/create_exposure_cohort_for_experiment/\
-d name="string",\
-d feature_flag_key="string"

Example response

Status 200 No response body

Create experiments create exposure cohort for experiment

Mixin for ViewSets to handle ApprovalRequired exceptions from decorated serializers.

This mixin intercepts ApprovalRequired exceptions raised by the @approval_gate decorator on serializer methods and converts them into proper HTTP 409 Conflict responses with change request details.

Required API key scopes

experiment:write

Path parameters

  • id
    integer
  • project_id
    string

Request parameters

  • name
    string
  • description
    string
  • start_date
    string
  • end_date
    string
  • feature_flag_key
    string
  • holdout_id
    integer
  • parameters
  • secondary_metrics
  • saved_metrics_ids
    array
  • filters
  • archived
    boolean
    Default: false
  • deleted
    boolean
  • type
  • exposure_criteria
  • metrics
  • metrics_secondary
  • stats_config
  • scheduling_config
  • allow_unknown_events
    boolean
    Default: false
  • _create_in_folder
    string
  • conclusion
  • conclusion_comment
    string
  • primary_metrics_ordered_uuids
  • secondary_metrics_ordered_uuids
  • only_count_matured_users
    boolean
  • update_feature_flag_params
    boolean
    Default: false

Example request

POST /api/projects/:project_id/experiments/:id/create_exposure_cohort_for_experiment
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl
-H 'Content-Type: application/json'\
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/experiments/:id/create_exposure_cohort_for_experiment/\
-d name="string",\
-d feature_flag_key="string"

Example response

Status 200 No response body

Create experiments duplicate

Mixin for ViewSets to handle ApprovalRequired exceptions from decorated serializers.

This mixin intercepts ApprovalRequired exceptions raised by the @approval_gate decorator on serializer methods and converts them into proper HTTP 409 Conflict responses with change request details.

Required API key scopes

experiment:write

Path parameters

  • id
    integer
  • project_id
    string

Request parameters

  • name
    string
  • description
    string
  • start_date
    string
  • end_date
    string
  • feature_flag_key
    string
  • holdout_id
    integer
  • parameters
  • secondary_metrics
  • saved_metrics_ids
    array
  • filters
  • archived
    boolean
    Default: false
  • deleted
    boolean
  • type
  • exposure_criteria
  • metrics
  • metrics_secondary
  • stats_config
  • scheduling_config
  • allow_unknown_events
    boolean
    Default: false
  • _create_in_folder
    string
  • conclusion
  • conclusion_comment
    string
  • primary_metrics_ordered_uuids
  • secondary_metrics_ordered_uuids
  • only_count_matured_users
    boolean
  • update_feature_flag_params
    boolean
    Default: false

Example request

POST /api/projects/:project_id/experiments/:id/duplicate
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl
-H 'Content-Type: application/json'\
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/experiments/:id/duplicate/\
-d name="string",\
-d feature_flag_key="string"

Example response

Status 200 No response body

Create experiments duplicate

Mixin for ViewSets to handle ApprovalRequired exceptions from decorated serializers.

This mixin intercepts ApprovalRequired exceptions raised by the @approval_gate decorator on serializer methods and converts them into proper HTTP 409 Conflict responses with change request details.

Required API key scopes

experiment:write

Path parameters

  • id
    integer
  • project_id
    string

Request parameters

  • name
    string
  • description
    string
  • start_date
    string
  • end_date
    string
  • feature_flag_key
    string
  • holdout_id
    integer
  • parameters
  • secondary_metrics
  • saved_metrics_ids
    array
  • filters
  • archived
    boolean
    Default: false
  • deleted
    boolean
  • type
  • exposure_criteria
  • metrics
  • metrics_secondary
  • stats_config
  • scheduling_config
  • allow_unknown_events
    boolean
    Default: false
  • _create_in_folder
    string
  • conclusion
  • conclusion_comment
    string
  • primary_metrics_ordered_uuids
  • secondary_metrics_ordered_uuids
  • only_count_matured_users
    boolean
  • update_feature_flag_params
    boolean
    Default: false

Example request

POST /api/projects/:project_id/experiments/:id/duplicate
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl
-H 'Content-Type: application/json'\
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/experiments/:id/duplicate/\
-d name="string",\
-d feature_flag_key="string"

Example response

Status 200 No response body
Next page →

Community questions

Questions about this page? or post a community question.