---
title: List Projects
slug: web-experimentation/api/list-projects
docTags: 
createdAt: 2026-10-02T13:15:18.296Z
---

{
  "id": "4O8KeJU4L9H76qL5Nyvnl",
  "type": "api-oas-v2",
  "data": {
    "method": "GET",
    "url": "https://api.optimizely.com/v2/projects",
    "servers": [
      {
        "url": "https://api.optimizely.com/v2/projects"
      }
    ],
    "name": "List Projects",
    "description": "<p>Get a list of all the Projects in your account, with associated metadata</p>",
    "contentType": "application/json",
    "request": {
      "pathParameters": [],
      "headerParameters": [
        {
          "name": "accept",
          "type": "string",
          "kind": "optional",
          "description": "Generated from available response content types",
          "enum": [
            "application/json"
          ],
          "default": "application/json"
        }
      ],
      "queryParameters": [
        {
          "kind": "optional",
          "name": "per_page",
          "type": "integer",
          "description": "Optional pagination argument that specifies the maximum number of objects to return per request",
          "default": 25,
          "maximum": 100
        },
        {
          "kind": "optional",
          "name": "page",
          "type": "integer",
          "description": "Optional pagination argument that specifies the page to return. If you have 140 objects and you choose to return 100 objects per page you will be able to access the last 40 objects on page 2. The default value is 1.\n",
          "default": 1
        }
      ],
      "bodyDataParameters": [],
      "formDataParameters": [],
      "oAuthParameters": [
        {
          "id": "apiKey",
          "name": "apiKey",
          "kind": "optional",
          "type": "http",
          "scheme": "bearer"
        },
        {
          "id": "OAuth2",
          "name": "OAuth2",
          "kind": "optional",
          "type": "oauth2",
          "description": "<p>Write applications that authenticate with the REST API via OAuth 2.0. Or, to authenticate using a personal token, see <a href=\"https://docs.developers.optimizely.com/web/docs/personal-token\" target=\"_blank\">https://docs.developers.optimizely.com/web/docs/personal-token</a></p>",
          "oauth2Flows": {
            "authorizationCode": {
              "authorizationUrl": "https://app.optimizely.com/oauth2/authorize",
              "tokenUrl": "https://app.optimizely.com/oauth2/token",
              "scopes": {
                "all": "Full access to your account"
              }
            }
          },
          "requiredScopes": [
            "read",
            "write"
          ]
        }
      ],
      "cookieParameters": []
    },
    "responses": [
      {
        "statusCode": "200",
        "description": "Return all Projects",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "array",
            "description": "",
            "customType": "Project[]",
            "schema": [
              {
                "name": "account_id",
                "kind": "optional",
                "type": "integer<int64>",
                "readOnly": true,
                "description": "The account the Project is associated with",
                "example": 12345,
                "format": "int64"
              },
              {
                "name": "confidence_threshold",
                "kind": "optional",
                "type": "number<double>",
                "description": "<p>The significance level at which you would like to declare winning and losing variations. A lower number minimizes the time needed to declare a winning or losing variation, but increases the risk that your results aren't true winners and losers. The precision for this number is up to 4 decimal places</p>",
                "example": 0.9,
                "format": "double",
                "minimum": 0.5,
                "maximum": 1
              },
              {
                "name": "created",
                "kind": "optional",
                "type": "string<date-time>",
                "readOnly": true,
                "description": "The time that the Project was originally created",
                "format": "date-time"
              },
              {
                "name": "dcp_service_id",
                "kind": "optional",
                "type": "integer<int64>",
                "description": "The ID of a Dynamic Customer Profile Service associated with this Project",
                "example": 121234,
                "format": "int64"
              },
              {
                "name": "description",
                "kind": "optional",
                "type": "string",
                "description": "A short description of the Project",
                "example": "Project for user sign up flow"
              },
              {
                "name": "id",
                "kind": "optional",
                "type": "integer<int64>",
                "readOnly": true,
                "description": "The unique identifier for the Project",
                "example": 1000,
                "format": "int64"
              },
              {
                "name": "is_classic",
                "kind": "optional",
                "type": "boolean",
                "readOnly": true,
                "description": "<p>If <code>is_classic</code> is true it means that the project doesn't have Optimizely X enabled. In other words: this project is Optimizely Classic only. The v2 REST API can only be used for Optimizely X objects (with the exception of Audiences and Projects, which can be shared between Optimizely X and Classic), so when <code>is_classic</code> is set to true you will need to use the v1 API</p>"
              },
              {
                "name": "is_flags_enabled",
                "kind": "optional",
                "type": "boolean",
                "description": "<p>If is_flags_enabled is true, this project uses the new Flags-First user experience and will use the <a href=\"https://library.optimizely.com/docs/api/flags/v1/index.html\" target=\"_blank\">Flags API</a> to make changes to entities.</p>"
              },
              {
                "name": "last_modified",
                "kind": "optional",
                "type": "string<date-time>",
                "readOnly": true,
                "description": "The time the Project was last modified",
                "format": "date-time"
              },
              {
                "name": "name",
                "kind": "required",
                "type": "string",
                "description": "The name of the Project",
                "example": "Test Project"
              },
              {
                "name": "platform",
                "kind": "optional",
                "type": "string<web | ios | android | custom>",
                "description": "The platform of the Project",
                "default": "web",
                "enum": [
                  "web",
                  "ios",
                  "android",
                  "custom"
                ]
              },
              {
                "name": "sdks",
                "kind": "optional",
                "type": "array",
                "description": "<p>For Full Stack, Mobile, and OTT projects, the language used for the SDK</p>",
                "example": "",
                "itemType": "string",
                "customType": "string[]",
                "itemExample": "",
                "itemDefault": ""
              },
              {
                "name": "socket_token",
                "kind": "optional",
                "type": "string",
                "readOnly": true,
                "description": "<p>The token used to identify your mobile app to Optimizely (mobile only)</p>",
                "example": "AABBCCDD~123456789"
              },
              {
                "name": "status",
                "kind": "optional",
                "type": "string<active | archived>",
                "description": "The current status of the Project",
                "default": "active",
                "enum": [
                  "active",
                  "archived"
                ]
              },
              {
                "name": "third_party_platform",
                "kind": "optional",
                "type": "string<salesforce>",
                "nullable": true,
                "description": "<p>The third party platform with which the project is intended to be used. When this is set, a project might have special restrictions. This can have a value of \"salesforce\" but defaults to null. In order to set this field, an account must have the third party platforms feature and be a fullstack project.</p>",
                "enum": [
                  "salesforce"
                ]
              },
              {
                "name": "web_snippet",
                "kind": "optional",
                "type": "object",
                "description": "",
                "modelRef": "#/components/schemas/WebSnippet",
                "customType": "WebSnippet",
                "schema": [
                  {
                    "name": "code_revision",
                    "kind": "optional",
                    "type": "integer",
                    "readOnly": true,
                    "description": "The current revision number of the Project snippet"
                  },
                  {
                    "name": "enable_force_variation",
                    "kind": "optional",
                    "type": "boolean",
                    "description": "Enables the option to force yourself into a specific variation on any page",
                    "default": false
                  },
                  {
                    "name": "exclude_disabled_experiments",
                    "kind": "optional",
                    "type": "boolean",
                    "description": "Set to true to remove paused and draft Experiment from the snippet",
                    "default": false
                  },
                  {
                    "name": "exclude_names",
                    "kind": "optional",
                    "type": "boolean",
                    "description": "Set to true to mask descriptive names",
                    "default": true
                  },
                  {
                    "name": "include_jquery",
                    "kind": "optional",
                    "type": "boolean",
                    "description": "Set to true to include jQuery in your snippet",
                    "default": true
                  },
                  {
                    "name": "ip_anonymization",
                    "kind": "optional",
                    "type": "boolean",
                    "description": "Set to true to change the last octet of IP addresses to 0 prior to logging",
                    "default": false
                  },
                  {
                    "name": "ip_filter",
                    "kind": "optional",
                    "type": "string",
                    "description": "<p>A regular expression (max 1500 characters) matching ip addresses for filtering out visitors. Matching visitors will still see the Experiment, but they won't be counted in results.</p>",
                    "example": "^206\\.23\\.100\\.([5-9][0-9]|1([0-4][0-9]|50))$"
                  },
                  {
                    "name": "js_file_size",
                    "kind": "optional",
                    "type": "integer",
                    "readOnly": true,
                    "description": "The current size in bytes of the Project snippet",
                    "example": 63495
                  },
                  {
                    "name": "library",
                    "kind": "optional",
                    "type": "string<jquery-1.11.3-trim | jquery-1.11.3-full | jquery-1.6.4-trim | jquery-1.6.4-full | none>",
                    "description": "<p>The prefered jQuery library version you would like to use with your snippet. If you do not want to include jQuery, set include_jquery to false</p>",
                    "default": "jquery-1.11.3-trim",
                    "enum": [
                      "jquery-1.11.3-trim",
                      "jquery-1.11.3-full",
                      "jquery-1.6.4-trim",
                      "jquery-1.6.4-full",
                      "none"
                    ]
                  },
                  {
                    "name": "project_javascript",
                    "kind": "optional",
                    "type": "string",
                    "description": "<p>The javascript code which runs before Optimizely on all pages, regardless of whether or not there is a running Experiment</p>",
                    "example": "alert(\"Active Experiment\")"
                  },
                  {
                    "name": "visitor_id_locator_name",
                    "kind": "optional",
                    "type": "string",
                    "nullable": true,
                    "description": "<p>(BETA) The name of said identifier that locates the visitor id</p>",
                    "example": "cookie_name"
                  },
                  {
                    "name": "visitor_id_locator_type",
                    "kind": "optional",
                    "type": "string<cookie | query | localStorage | js>",
                    "nullable": true,
                    "description": "<p>(BETA) The type of identifer where the visitor id is located (e.g. cookies, query param)</p>",
                    "enum": [
                      "cookie",
                      "query",
                      "localStorage",
                      "js"
                    ]
                  }
                ]
              }
            ],
            "modelRef": "#/components/schemas/Project",
            "isExpanded": true
          }
        ]
      },
      {
        "statusCode": "401",
        "description": "Invalid credentials",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "description": "",
            "customType": "Error",
            "schema": [
              {
                "name": "code",
                "kind": "optional",
                "type": "string",
                "description": ""
              },
              {
                "name": "message",
                "kind": "optional",
                "type": "string",
                "description": ""
              },
              {
                "name": "messages",
                "kind": "optional",
                "type": "object",
                "description": "",
                "example": "",
                "schema": []
              },
              {
                "name": "uuid",
                "kind": "optional",
                "type": "string<uuid>",
                "description": "",
                "format": "uuid"
              }
            ],
            "modelRef": "#/components/schemas/Error",
            "isExpanded": true
          }
        ]
      },
      {
        "statusCode": "default",
        "description": "Unexpected error",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "description": "",
            "customType": "Error",
            "schema": [
              {
                "name": "code",
                "kind": "optional",
                "type": "string",
                "description": ""
              },
              {
                "name": "message",
                "kind": "optional",
                "type": "string",
                "description": ""
              },
              {
                "name": "messages",
                "kind": "optional",
                "type": "object",
                "description": "",
                "example": "",
                "schema": []
              },
              {
                "name": "uuid",
                "kind": "optional",
                "type": "string<uuid>",
                "description": "",
                "format": "uuid"
              }
            ],
            "modelRef": "#/components/schemas/Error",
            "isExpanded": true
          }
        ]
      }
    ],
    "hasXCodeSamples": false,
    "examples": {
      "languages": [
        {
          "id": "F-7xeiFHNvNNW3VI5Hqcr",
          "language": "curl",
          "label": "cURL",
          "code": "curl --request GET \\\n     --url 'https://api.optimizely.com/v2/projects?per_page=25&page=1' \\\n     --header 'accept: application/json'"
        },
        {
          "id": "RWHHa3Ux1KxeSy-Jba_DY",
          "language": "javascript",
          "label": "javascript",
          "code": "var myHeaders = new Headers();\nmyHeaders.append(\"accept\", \"application/json\");\nmyHeaders.append(\"content-type\", \"application/json\");\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.optimizely.com/v2/projects?per_page=25&page=1\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));"
        },
        {
          "id": "FjtTTJMNpFg5YEgrcLeLs",
          "language": "ruby",
          "label": "Ruby",
          "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.optimizely.com/v2/projects?per_page=25&page=1\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"accept\"] = \"application/json\"\nrequest[\"content-type\"] = \"application/json\"\n\nresponse = https.request(request)\nputs response.read_body\n"
        },
        {
          "id": "7hsZ6U90RT3Icc1MH_n1Z",
          "language": "python",
          "label": "Python",
          "code": "import requests\nimport json\n\nurl = \"https://api.optimizely.com/v2/projects?per_page=25&page=1\"\n\npayload = {}\nheaders = {\n   'accept': 'application/json',\n   'content-type': 'application/json'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n"
        }
      ],
      "selectedLanguageId": "F-7xeiFHNvNNW3VI5Hqcr"
    },
    "results": {
      "languages": [
        {
          "id": "response-0-200",
          "language": "200",
          "code": "// Return all Projects\n[\n  {\n    \"account_id\": 12345,\n    \"confidence_threshold\": 0.9,\n    \"created\": \"\",\n    \"dcp_service_id\": 121234,\n    \"description\": \"Project for user sign up flow\",\n    \"id\": 1000,\n    \"is_classic\": false,\n    \"is_flags_enabled\": false,\n    \"last_modified\": \"\",\n    \"name\": \"Test Project\",\n    \"platform\": \"\",\n    \"sdks\": [\n      \"\"\n    ],\n    \"socket_token\": \"AABBCCDD~123456789\",\n    \"status\": \"\",\n    \"third_party_platform\": \"\",\n    \"web_snippet\": {\n      \"code_revision\": 0,\n      \"enable_force_variation\": false,\n      \"exclude_disabled_experiments\": false,\n      \"exclude_names\": false,\n      \"include_jquery\": false,\n      \"ip_anonymization\": false,\n      \"ip_filter\": \"^206\\\\.23\\\\.100\\\\.([5-9][0-9]|1([0-4][0-9]|50))$\",\n      \"js_file_size\": 63495,\n      \"library\": \"\",\n      \"project_javascript\": \"alert(\\\"Active Experiment\\\")\",\n      \"visitor_id_locator_name\": \"cookie_name\",\n      \"visitor_id_locator_type\": \"\"\n    }\n  }\n]"
        },
        {
          "id": "response-1-401",
          "language": "401",
          "code": "// Invalid credentials\n{\n  \"code\": \"\",\n  \"message\": \"\",\n  \"messages\": {},\n  \"uuid\": \"\"\n}"
        },
        {
          "id": "response-2-default",
          "language": "default",
          "code": "// Unexpected error\n{\n  \"code\": \"\",\n  \"message\": \"\",\n  \"messages\": {},\n  \"uuid\": \"\"\n}"
        }
      ],
      "selectedLanguageId": "response-0-200"
    }
  },
  "children": [
    {
      "text": ""
    }
  ]
}