List Experiments
curl --request GET \
--url https://statsigapi.net/console/v1/experiments \
--header 'STATSIG-API-KEY: <api-key>'import requests
url = "https://statsigapi.net/console/v1/experiments"
headers = {"STATSIG-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'STATSIG-API-KEY': '<api-key>'}};
fetch('https://statsigapi.net/console/v1/experiments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://statsigapi.net/console/v1/experiments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"STATSIG-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://statsigapi.net/console/v1/experiments"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("STATSIG-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://statsigapi.net/console/v1/experiments")
.header("STATSIG-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://statsigapi.net/console/v1/experiments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["STATSIG-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"message": "Experiments listed successfully.",
"data": [
{
"id": "a_experiment",
"name": "a_experiment",
"description": "description",
"idType": "userID",
"lastModifierID": "1vaQaBoLlkauH9iiuOSBP2",
"lastModifiedTime": 1707427635442,
"lastModifierName": "CONSOLE API",
"lastModifierEmail": null,
"creatorID": "1vaQaBoLlkauH9iiuOSBP2",
"createdTime": 1707427634717,
"creatorName": "CONSOLE API",
"creatorEmail": null,
"targetApps": [],
"holdoutIDs": [],
"tags": [],
"status": "setup",
"launchedGroupID": null,
"startTime": null,
"endTime": null,
"layerID": null,
"hypothesis": "This will be a good feature :)",
"primaryMetrics": [
{
"name": "d1_retention_rate",
"type": "user"
}
],
"primaryMetricTags": [],
"secondaryMetrics": [],
"secondaryMetricTags": [],
"groups": [
{
"name": "Control",
"id": "6sEQvUd4c6E55V6ljBYMeJ",
"size": 50,
"parameterValues": {
"assigned_group": "control"
},
"description": ""
},
{
"name": "Test",
"id": "6sEQvVS6EoNzpkEgUJUpxL",
"size": 50,
"parameterValues": {
"assigned_group": "test"
},
"description": ""
}
],
"allocation": 100,
"duration": 14,
"targetingGateID": "",
"defaultConfidenceInterval": "95",
"bonferroniCorrection": false,
"decisionReason": null,
"decisionTime": null,
"healthChecks": [],
"owner": {
"ownerType": "USER",
"ownerName": "Test User"
},
"inlineTargetingRulesJSON": "{}",
"healthCheckStatus": "PASSED"
},
{
"id": "b_experiment",
"name": "b experiment",
"description": "",
"idType": "userID",
"inlineTargetingRulesJSON": "{}",
"lastModifierID": "68ztZp2v2nFc81RAsvuvj4",
"lastModifiedTime": 1706744900374,
"lastModifierName": "jacob O'Quinn",
"lastModifierEmail": "jacob@statsig.com",
"creatorID": "68ztZp2v2nFc81RAsvuvj4",
"createdTime": 1678394676162,
"creatorName": "jacob O'Quinn",
"creatorEmail": "jacob@statsig.com",
"targetApps": [],
"holdoutIDs": [],
"tags": [
"customTag",
"asdf"
],
"status": "archived",
"launchedGroupID": null,
"startTime": null,
"endTime": null,
"layerID": null,
"hypothesis": "",
"primaryMetrics": [],
"primaryMetricTags": [],
"secondaryMetrics": [],
"secondaryMetricTags": [
"★ Core"
],
"groups": [
{
"name": "Control",
"id": "7dCnwm0by2laSOcBNKIL8r",
"size": 50,
"parameterValues": {
"control": "control value"
},
"description": ""
},
{
"name": "Test",
"id": "7dCnwnFe0kuFcdKxoSEort",
"size": 50,
"parameterValues": {
"control": "test value"
},
"description": ""
}
],
"allocation": 100,
"duration": 14,
"targetingGateID": "targeting_gate_to_select_users",
"defaultConfidenceInterval": "95",
"bonferroniCorrection": false,
"decisionReason": null,
"decisionTime": null,
"healthCheckStatus": "WAITING",
"healthChecks": [
{
"name": "Checks not yet detected",
"status": "WAITING",
"description": "This experiment has not recorded any exposure checks in production yet."
},
{
"name": "Valid unit type not yet verified",
"status": "WAITING",
"description": "Exposure checks for this experiment are pending evaluation. This experiment requires exposure checks with unit IDs of type userID"
},
{
"name": "Event metric data not yet verified",
"status": "WAITING",
"description": "This experiment has recorded no event metric with a valid unit ID yet, or these event metrics are pending evaluation. If you are importing events, this may take up to a day to reflect. This experiment requires metrics with unit IDs of type userID"
},
{
"name": "Pulse metrics not yet available",
"status": "WAITING",
"description": "Expect to see your Pulse Results within 24 hours. Statsig computes Pulse results on a daily basis."
},
{
"name": "Exposure balance not yet verified",
"status": "WAITING",
"description": "Exposure balance for this experiment is pending evaluation. As the experiment records more exposures, Statsig will continue to evaluate experiment exposure balance."
}
]
}
]
}{
"status": 401,
"message": "This endpoint only accepts an active CONSOLE key, but an invalid key was sent. Key: console-xxxXXXxxxXXXxxx"
}Experiments
List Experiments
GET
/
console
/
v1
/
experiments
List Experiments
curl --request GET \
--url https://statsigapi.net/console/v1/experiments \
--header 'STATSIG-API-KEY: <api-key>'import requests
url = "https://statsigapi.net/console/v1/experiments"
headers = {"STATSIG-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'STATSIG-API-KEY': '<api-key>'}};
fetch('https://statsigapi.net/console/v1/experiments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://statsigapi.net/console/v1/experiments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"STATSIG-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://statsigapi.net/console/v1/experiments"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("STATSIG-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://statsigapi.net/console/v1/experiments")
.header("STATSIG-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://statsigapi.net/console/v1/experiments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["STATSIG-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"message": "Experiments listed successfully.",
"data": [
{
"id": "a_experiment",
"name": "a_experiment",
"description": "description",
"idType": "userID",
"lastModifierID": "1vaQaBoLlkauH9iiuOSBP2",
"lastModifiedTime": 1707427635442,
"lastModifierName": "CONSOLE API",
"lastModifierEmail": null,
"creatorID": "1vaQaBoLlkauH9iiuOSBP2",
"createdTime": 1707427634717,
"creatorName": "CONSOLE API",
"creatorEmail": null,
"targetApps": [],
"holdoutIDs": [],
"tags": [],
"status": "setup",
"launchedGroupID": null,
"startTime": null,
"endTime": null,
"layerID": null,
"hypothesis": "This will be a good feature :)",
"primaryMetrics": [
{
"name": "d1_retention_rate",
"type": "user"
}
],
"primaryMetricTags": [],
"secondaryMetrics": [],
"secondaryMetricTags": [],
"groups": [
{
"name": "Control",
"id": "6sEQvUd4c6E55V6ljBYMeJ",
"size": 50,
"parameterValues": {
"assigned_group": "control"
},
"description": ""
},
{
"name": "Test",
"id": "6sEQvVS6EoNzpkEgUJUpxL",
"size": 50,
"parameterValues": {
"assigned_group": "test"
},
"description": ""
}
],
"allocation": 100,
"duration": 14,
"targetingGateID": "",
"defaultConfidenceInterval": "95",
"bonferroniCorrection": false,
"decisionReason": null,
"decisionTime": null,
"healthChecks": [],
"owner": {
"ownerType": "USER",
"ownerName": "Test User"
},
"inlineTargetingRulesJSON": "{}",
"healthCheckStatus": "PASSED"
},
{
"id": "b_experiment",
"name": "b experiment",
"description": "",
"idType": "userID",
"inlineTargetingRulesJSON": "{}",
"lastModifierID": "68ztZp2v2nFc81RAsvuvj4",
"lastModifiedTime": 1706744900374,
"lastModifierName": "jacob O'Quinn",
"lastModifierEmail": "jacob@statsig.com",
"creatorID": "68ztZp2v2nFc81RAsvuvj4",
"createdTime": 1678394676162,
"creatorName": "jacob O'Quinn",
"creatorEmail": "jacob@statsig.com",
"targetApps": [],
"holdoutIDs": [],
"tags": [
"customTag",
"asdf"
],
"status": "archived",
"launchedGroupID": null,
"startTime": null,
"endTime": null,
"layerID": null,
"hypothesis": "",
"primaryMetrics": [],
"primaryMetricTags": [],
"secondaryMetrics": [],
"secondaryMetricTags": [
"★ Core"
],
"groups": [
{
"name": "Control",
"id": "7dCnwm0by2laSOcBNKIL8r",
"size": 50,
"parameterValues": {
"control": "control value"
},
"description": ""
},
{
"name": "Test",
"id": "7dCnwnFe0kuFcdKxoSEort",
"size": 50,
"parameterValues": {
"control": "test value"
},
"description": ""
}
],
"allocation": 100,
"duration": 14,
"targetingGateID": "targeting_gate_to_select_users",
"defaultConfidenceInterval": "95",
"bonferroniCorrection": false,
"decisionReason": null,
"decisionTime": null,
"healthCheckStatus": "WAITING",
"healthChecks": [
{
"name": "Checks not yet detected",
"status": "WAITING",
"description": "This experiment has not recorded any exposure checks in production yet."
},
{
"name": "Valid unit type not yet verified",
"status": "WAITING",
"description": "Exposure checks for this experiment are pending evaluation. This experiment requires exposure checks with unit IDs of type userID"
},
{
"name": "Event metric data not yet verified",
"status": "WAITING",
"description": "This experiment has recorded no event metric with a valid unit ID yet, or these event metrics are pending evaluation. If you are importing events, this may take up to a day to reflect. This experiment requires metrics with unit IDs of type userID"
},
{
"name": "Pulse metrics not yet available",
"status": "WAITING",
"description": "Expect to see your Pulse Results within 24 hours. Statsig computes Pulse results on a daily basis."
},
{
"name": "Exposure balance not yet verified",
"status": "WAITING",
"description": "Exposure balance for this experiment is pending evaluation. As the experiment records more exposures, Statsig will continue to evaluate experiment exposure balance."
}
]
}
]
}{
"status": 401,
"message": "This endpoint only accepts an active CONSOLE key, but an invalid key was sent. Key: console-xxxXXXxxxXXXxxx"
}Authorizations
Headers
Optional header to respect review settings for mutation endpoints.
Query Parameters
Which layer to place the experiment into.
The idType the experiment will be performed on
The current status of the experiment
Name of the creator.
ID of the user who created the entity.
Filter by tags
Results per page
Example:
10
Page number
Example:
1
Response
List Experiments Success
⌘I

