---
title: List holdouts across projects
slug: feature-experimentation/api/list-holdouts-across-projects
docTags: 
createdAt: 2026-10-13T18:16:15.508Z
---

{
  "id": "xOMZXCPZNXBK5NqFsRzPI",
  "type": "api-oas-v2",
  "data": {
    "method": "GET",
    "url": "https://api.optimizely.com/flags/v1//holdouts",
    "servers": [
      {
        "url": "https://api.optimizely.com/flags/v1//holdouts"
      }
    ],
    "name": "List holdouts across projects",
    "description": "<p>Returns a paginated list of holdouts across all projects the authenticated\nuser has permission to view. Supports optional filtering by project, status,\narchived state, and search query.</p>\n<p>Gated behind the <code>holdouts-m2</code> feature flag.</p>",
    "contentType": "application/json",
    "request": {
      "pathParameters": [],
      "headerParameters": [],
      "queryParameters": [
        {
          "kind": "required",
          "name": "project_id",
          "type": "integer",
          "description": "The project context for authorization. Always required to seed\nauth context for permission and feature flag checks.\n"
        },
        {
          "kind": "optional",
          "name": "project_scope",
          "type": "string",
          "description": "<p>Controls which projects' holdouts are returned.\n\"current\" returns only holdouts owned by the given project_id.\n\"all\" returns holdouts across all projects the user has permission to view.</p>",
          "default": "all",
          "enum": [
            "all",
            "current"
          ]
        },
        {
          "kind": "optional",
          "name": "archived",
          "type": "boolean",
          "description": "Filter the Holdouts by archived status.\n"
        },
        {
          "kind": "optional",
          "name": "status",
          "type": "array",
          "description": "",
          "customType": "status[]",
          "schema": [],
          "modelRef": "#/components/schemas/Holdout/properties/status"
        },
        {
          "kind": "optional",
          "name": "query",
          "type": "string",
          "description": "<p>Search for Holdouts by name, description, or key.</p>"
        },
        {
          "kind": "optional",
          "name": "sort",
          "type": "array",
          "description": "Sort the Holdouts by one or more attributes.\n",
          "schema": [],
          "itemType": "string",
          "customType": "string[]"
        },
        {
          "kind": "optional",
          "name": "page",
          "type": "integer<int64>",
          "description": "Page number for pagination",
          "format": "int64"
        },
        {
          "kind": "optional",
          "name": "per_page",
          "type": "integer<int64>",
          "description": "The max number of items to include per page or results.",
          "format": "int64"
        },
        {
          "kind": "optional",
          "name": "page_token",
          "type": "string",
          "description": "<p>Pagination page token. Implements prev, next, last, first</p>"
        },
        {
          "kind": "optional",
          "name": "page_window",
          "type": "integer",
          "description": "<p>Number of previous and next page links to supply for the request (defaults to 1).</p>"
        }
      ],
      "bodyDataParameters": [],
      "formDataParameters": [],
      "oAuthParameters": [
        {
          "id": "apiKey",
          "name": "apiKey",
          "kind": "optional",
          "type": "http",
          "scheme": "bearer"
        },
        {
          "id": "OAuth2",
          "name": "OAuth2",
          "kind": "optional",
          "type": "oauth2",
          "description": "Write applications that authenticate with the REST API via OAuth 2.0.",
          "oauth2Flows": {
            "authorizationCode": {
              "authorizationUrl": "https://app.optimizely.com/oauth2/authorize",
              "tokenUrl": "https://app.optimizely.com/oauth2/token",
              "scopes": {
                "all": "Grants all access"
              }
            }
          },
          "requiredScopes": [
            "read",
            "write"
          ]
        }
      ],
      "cookieParameters": []
    },
    "responses": [
      {
        "statusCode": "200",
        "description": "<p>Successful retrieval of a list of holdouts.</p>\n<p>The response includes RESTful JSON (<a href=\"https://restfuljson.org/\" target=\"_blank\">https://restfuljson.org/</a>) styled links. If a\nlink is not present in the response, it indicates a user is not authorized to access\nthe related resource.</p>",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "example": "{\"count\":2,\"filter_url\":\"/projects/98765/holdouts{?archived}\",\"first_url\":\"/projects/98765/holdouts?page_token=gASVCQAAAAAAAACMBTF8MnwylC4%3D#1\",\"items\":[{\"archived\":false,\"created_time\":\"2023-12-15T10:00:00.000Z\",\"description\":\"Control group for measuring overall impact of Q4 growth experiments\",\"environment_key\":\"production\",\"holdout_results_api_token\":\"SampleToken.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9\",\"id\":12345,\"key\":\"growth_experiment_holdout\",\"name\":\"Q4 Growth Experiment Control\",\"project_id\":98765,\"revision\":2,\"scope\":\"global\",\"start_time\":\"2024-01-01T00:00:00.000Z\",\"status\":\"running\",\"traffic_allocation\":1000,\"updated_time\":\"2024-01-01T10:00:00.000Z\"},{\"archived\":false,\"created_time\":\"2024-01-20T14:30:00.000Z\",\"description\":\"Holdout for measuring checkout conversion experiments\",\"environment_key\":\"production\",\"holdout_results_api_token\":\"SampleToken.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9\",\"id\":12346,\"key\":\"checkout_flow_holdout\",\"name\":\"Checkout Flow Holdout Group\",\"project_id\":98765,\"revision\":1,\"scope\":\"global\",\"start_time\":\"2024-02-01T00:00:00.000Z\",\"status\":\"draft\",\"traffic_allocation\":500,\"updated_time\":\"2024-01-20T14:30:00.000Z\"}],\"last_url\":\"/projects/98765/holdouts?page_token=gASVCQAAAAAAAACMBTF8MnwylC4%3D#13\",\"next_url\":[\"/projects/98765/holdouts?page_token=gASVCQAAAAAAAACMBTF8MnwylC4%3D#2\",\"/projects/98765/holdouts?page_token=gASVCQAAAAAAAACMBTF8MnwylC4%3D#3\"],\"page\":1,\"reset_url\":\"/projects/98765/holdouts\",\"total_count\":25,\"total_pages\":13,\"url\":\"/projects/98765/holdouts\"}",
            "description": "<p>Paginated response structure for holdout collections with navigation links and metadata.</p>\n<p>This response format follows the standard pagination pattern used across the API,\nproviding navigation URLs and counts for efficient browsing of large holdout collections.</p>",
            "customType": "HoldoutsPaginatedList",
            "schema": [
              {
                "name": "count",
                "kind": "required",
                "type": "integer",
                "description": "<p>Number of holdouts returned on the current page (length of items array).</p>",
                "example": 2,
                "minimum": 0
              },
              {
                "name": "filter_url",
                "kind": "optional",
                "type": "object",
                "description": "<p>URL template for applying filters to the holdouts list. Replace the placeholder\nwith filter parameters like 'archived=false' to filter results.</p>",
                "complexType": "allOf",
                "complexItems": [
                  {
                    "name": "UrlValue",
                    "description": "",
                    "modelRef": "#/components/schemas/UrlValue",
                    "schema": []
                  }
                ],
                "schema": []
              },
              {
                "name": "first_url",
                "kind": "required",
                "type": "object",
                "description": "Link to the first page of holdouts in the result set. Always points to page 1\nwith the same query parameters as the current request.\n",
                "complexType": "allOf",
                "complexItems": [
                  {
                    "name": "UrlValue",
                    "description": "",
                    "modelRef": "#/components/schemas/UrlValue",
                    "schema": []
                  }
                ],
                "schema": []
              },
              {
                "name": "items",
                "kind": "required",
                "type": "array",
                "description": "Array of holdout objects for the current page.",
                "modelRef": "#/components/schemas/Holdout",
                "customType": "Holdout[]",
                "schema": [
                  {
                    "name": "archived",
                    "kind": "optional",
                    "type": "boolean",
                    "description": "Whether the holdout is archived. Archived holdouts are hidden from normal views\nbut retain their historical data and configuration.\n",
                    "example": false
                  },
                  {
                    "name": "audience_conditions",
                    "kind": "optional",
                    "type": "array",
                    "description": "<p>Defines which audiences this holdout applies to. If omitted, the holdout applies to all users.\nUses logical operators like 'and', 'or', 'not' to combine multiple audience conditions.</p>",
                    "example": "[\"[\"or\",{\"audience_id\":5340810295},{\"audience_id\":1234567890}]\"]",
                    "itemType": "object",
                    "customType": "object[]",
                    "itemExample": "[\"or\",{\"audience_id\":5340810295},{\"audience_id\":1234567890}]",
                    "itemDefault": ""
                  },
                  {
                    "name": "audience_ids",
                    "kind": "optional",
                    "type": "array",
                    "deprecated": true,
                    "description": "Warning: Deprecated\n<p>DEPRECATED: Use audience_conditions instead. List of audience IDs that this holdout applies to.\nThis field is maintained for backward compatibility.</p>",
                    "example": "[5340810295,1234567890]",
                    "itemType": "integer",
                    "customType": "integer[]",
                    "itemExample": "",
                    "itemDefault": ""
                  },
                  {
                    "name": "created_by_user_email",
                    "kind": "optional",
                    "type": "string",
                    "readOnly": true,
                    "description": "Email address of the user who created the holdout.",
                    "example": "user@company.com"
                  },
                  {
                    "name": "created_time",
                    "kind": "optional",
                    "type": "string<date-time>",
                    "readOnly": true,
                    "nullable": true,
                    "description": "Timestamp when the holdout was originally created.",
                    "example": "2023-12-15T10:00:00.000Z",
                    "format": "date-time"
                  },
                  {
                    "name": "description",
                    "kind": "optional",
                    "type": "string",
                    "description": "Optional detailed description explaining the purpose and context of this holdout.\nHelps team members understand what this holdout is measuring.\n",
                    "example": "Holdout group to measure the overall impact of our growth experiments throughout the year",
                    "maxLength": 1000
                  },
                  {
                    "name": "end_time",
                    "kind": "optional",
                    "type": "string<date-time>",
                    "readOnly": true,
                    "nullable": true,
                    "description": "Timestamp when the holdout finished or will finish.\nNull for holdouts that are still running or have no defined end time.\n",
                    "example": "2024-12-31T23:59:59.000Z",
                    "format": "date-time"
                  },
                  {
                    "name": "environment_key",
                    "kind": "optional",
                    "type": "string",
                    "description": "<p>The environment where this holdout is active (e.g., 'production', 'staging').\nThe holdout only affects traffic in this specific environment.</p>",
                    "example": "production"
                  },
                  {
                    "name": "environment_name",
                    "kind": "optional",
                    "type": "string",
                    "readOnly": true,
                    "description": "<p>The human-readable name of the environment where this holdout is active.</p>",
                    "example": "Production"
                  },
                  {
                    "name": "exclude_targeted_deliveries",
                    "kind": "optional",
                    "type": "boolean",
                    "description": "<p>When true, Targeted Delivery rules are excluded from this holdout, so\nholdout users are not withheld from them. Targeted Deliveries represent\npermanent ship decisions rather than active experiments, so there is\nnothing to measure by withholding them.\nApplies to global holdouts only; ignored for local holdouts.\nCan only be changed while the holdout is in draft status.\nDefaults to false.</p>",
                    "example": false,
                    "default": false
                  },
                  {
                    "name": "holdout_results_api_token",
                    "kind": "optional",
                    "type": "string",
                    "readOnly": true,
                    "description": "<p>API token for accessing holdout results and analytics data.\nThis token is dynamically generated for each API response and provides\nsecure access to holdout-specific results endpoints.</p>",
                    "example": "SampleToken.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"
                  },
                  {
                    "name": "id",
                    "kind": "required",
                    "type": "integer",
                    "readOnly": true,
                    "description": "<p>System-generated unique identifier for the holdout.</p>",
                    "example": 12345
                  },
                  {
                    "name": "key",
                    "kind": "required",
                    "type": "string",
                    "description": "<p>Unique user-defined identifier for the holdout within the project.\nMust contain only alphanumeric characters, underscores, and hyphens.</p>",
                    "example": "annual_growth_holdout",
                    "maxLength": 64,
                    "pattern": "^[a-zA-Z0-9_\\-]+$"
                  },
                  {
                    "name": "metrics",
                    "kind": "optional",
                    "type": "array",
                    "description": "List of metrics being tracked and analyzed for this holdout.\nThese metrics help measure the impact of experiments on the control group.\n",
                    "modelRef": "#/components/schemas/Metric",
                    "customType": "Metric[]",
                    "schema": [
                      {
                        "name": "aggregator",
                        "kind": "required",
                        "type": "string<unique | count | sum | ratio>",
                        "description": "<p>The aggregation function for the numerator of the metric. 'unique' measures the number of unique visitors/sessions that include the specified Event. 'count' measures the total number of occurrences of Event for the scope (visitor/session). 'sum' is the sum of the 'field' value</p>",
                        "enum": [
                          "unique",
                          "count",
                          "sum",
                          "ratio"
                        ]
                      },
                      {
                        "name": "display_title",
                        "kind": "optional",
                        "type": "string",
                        "description": "<p>An optional title for the unique metric configuration. If not provided, the event name will be used.</p>"
                      },
                      {
                        "name": "display_unit",
                        "kind": "optional",
                        "type": "string",
                        "description": "An optional name for the unit of the unique metric configuration."
                      },
                      {
                        "name": "event_id",
                        "kind": "optional",
                        "type": "integer<int64>",
                        "description": "<p>The ID for the Event to select data from. Omitted for global metrics that are not relative to a specific Event, i.e. \"overall revenue\"</p>",
                        "example": 32334454244,
                        "format": "int64"
                      },
                      {
                        "name": "event_properties",
                        "kind": "optional",
                        "type": "object",
                        "description": "",
                        "example": "",
                        "schema": [
                          {
                            "name": "filter",
                            "kind": "optional",
                            "type": "object",
                            "description": "",
                            "example": "",
                            "schema": [
                              {
                                "name": "combine_operator",
                                "kind": "optional",
                                "type": "string<or | and>",
                                "description": "",
                                "enum": [
                                  "or",
                                  "and"
                                ]
                              },
                              {
                                "name": "conditions",
                                "kind": "optional",
                                "type": "array",
                                "description": "",
                                "modelRef": "#/components/schemas/EventPropertyCondition",
                                "customType": "EventPropertyCondition[]",
                                "schema": [
                                  {
                                    "name": "name",
                                    "kind": "required",
                                    "type": "string",
                                    "description": ""
                                  },
                                  {
                                    "name": "operator",
                                    "kind": "required",
                                    "type": "string<equal_to | not_equal_to | greater_than | greater_than_or_equal_to | less_than | less_than_or_equal_to | contains | does_not_contain>",
                                    "description": "",
                                    "enum": [
                                      "equal_to",
                                      "not_equal_to",
                                      "greater_than",
                                      "greater_than_or_equal_to",
                                      "less_than",
                                      "less_than_or_equal_to",
                                      "contains",
                                      "does_not_contain"
                                    ]
                                  },
                                  {
                                    "name": "type",
                                    "kind": "required",
                                    "type": "string<string | number | boolean>",
                                    "description": "",
                                    "enum": [
                                      "string",
                                      "number",
                                      "boolean"
                                    ]
                                  },
                                  {
                                    "name": "value",
                                    "kind": "required",
                                    "type": "string",
                                    "description": ""
                                  }
                                ]
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "name": "event_type",
                        "kind": "optional",
                        "type": "string",
                        "description": ""
                      },
                      {
                        "name": "field",
                        "kind": "optional",
                        "type": "string<revenue | value>",
                        "nullable": true,
                        "description": "<p>The field to aggregate for the numerator of the metric. Required when 'aggregator' = 'sum', otherwise omitted</p>",
                        "enum": [
                          "revenue",
                          "value"
                        ]
                      },
                      {
                        "name": "id",
                        "kind": "optional",
                        "type": "string",
                        "description": "A unique identifier for the metric configuration."
                      },
                      {
                        "name": "metrics",
                        "kind": "optional",
                        "type": "array",
                        "description": "",
                        "modelRef": "#/components/schemas/SubMetric",
                        "customType": "SubMetric[]",
                        "schema": [
                          {
                            "name": "aggregator",
                            "kind": "optional",
                            "type": "string",
                            "description": ""
                          },
                          {
                            "name": "display_title",
                            "kind": "optional",
                            "type": "string",
                            "nullable": true,
                            "description": ""
                          },
                          {
                            "name": "event_id",
                            "kind": "optional",
                            "type": "integer",
                            "description": ""
                          },
                          {
                            "name": "event_type",
                            "kind": "optional",
                            "type": "string",
                            "description": ""
                          },
                          {
                            "name": "field",
                            "kind": "optional",
                            "type": "string",
                            "nullable": true,
                            "description": ""
                          },
                          {
                            "name": "role",
                            "kind": "optional",
                            "type": "string<numerator | denominator>",
                            "description": "",
                            "enum": [
                              "numerator",
                              "denominator"
                            ]
                          },
                          {
                            "name": "scope",
                            "kind": "optional",
                            "type": "string",
                            "description": ""
                          }
                        ]
                      },
                      {
                        "name": "project_id",
                        "kind": "optional",
                        "type": "integer",
                        "description": "A unique identifier for the project associated with the metric."
                      },
                      {
                        "name": "scope",
                        "kind": "optional",
                        "type": "string<session | visitor | event>",
                        "description": "<p>Specifies how Events should be grouped together. Can also be thought of as the denonimator of the metric. 'session' divides by the number of sessions. \"Influenced sessions\", or sessions that do not contain a decision Event but carry a decision from a previous session are not included in counts for numerator or denominator. 'visitor' divides by the number of visitors. 'event' divides by the total occurrences (impressions) of the specified Event</p>",
                        "enum": [
                          "session",
                          "visitor",
                          "event"
                        ]
                      },
                      {
                        "name": "visibility",
                        "kind": "optional",
                        "type": "string<account | experiment | project>",
                        "description": "The visibility of the metric.",
                        "enum": [
                          "account",
                          "experiment",
                          "project"
                        ]
                      },
                      {
                        "name": "winning_direction",
                        "kind": "required",
                        "type": "string<increasing | decreasing>",
                        "description": "The winning direction of this metric",
                        "enum": [
                          "increasing",
                          "decreasing"
                        ]
                      }
                    ]
                  },
                  {
                    "name": "name",
                    "kind": "required",
                    "type": "string",
                    "description": "<p>Human-readable name for the holdout displayed in the UI.</p>",
                    "example": "Annual Growth Control Group",
                    "maxLength": 255
                  },
                  {
                    "name": "project_id",
                    "kind": "optional",
                    "type": "integer<int64>",
                    "readOnly": true,
                    "description": "The unique identifier of the project this holdout belongs to.",
                    "example": 98765,
                    "format": "int64"
                  },
                  {
                    "name": "projects",
                    "kind": "optional",
                    "type": "array",
                    "readOnly": true,
                    "description": "<p>Project objects returned by cross-project GET endpoints.\nFor global-scope holdouts, lists target project IDs.\nEmpty array for local-scope holdouts.\nFrontend resolves project names via entity-management API.</p>",
                    "example": "[{\"id\":123}]",
                    "itemType": "object",
                    "customType": "object[]",
                    "schema": [
                      {
                        "name": "id",
                        "kind": "optional",
                        "type": "integer<int64>",
                        "description": "Project ID.",
                        "format": "int64"
                      }
                    ]
                  },
                  {
                    "name": "revision",
                    "kind": "optional",
                    "type": "integer",
                    "readOnly": true,
                    "description": "Revision number that increments with each change to the holdout.\nUsed for tracking modifications and ensuring data consistency.\n",
                    "example": 3
                  },
                  {
                    "name": "rules",
                    "kind": "optional",
                    "type": "array",
                    "readOnly": true,
                    "description": "<p>Enriched rule objects returned by cross-project GET endpoints.\nFor local-scope holdouts, lists target rules with metadata.\nEmpty array for global-scope holdouts.</p>",
                    "example": "[{\"flag_key\":\"my_flag\",\"id\":456,\"key\":\"experiment_rule_a\",\"name\":\"Experiment Rule A\",\"project_id\":123}]",
                    "itemType": "object",
                    "customType": "object[]",
                    "schema": [
                      {
                        "name": "flag_id",
                        "kind": "optional",
                        "type": "integer<int64>",
                        "description": "ID of the flag containing this rule.",
                        "format": "int64"
                      },
                      {
                        "name": "flag_key",
                        "kind": "optional",
                        "type": "string",
                        "description": "Key of the flag containing this rule."
                      },
                      {
                        "name": "flag_name",
                        "kind": "optional",
                        "type": "string",
                        "description": "Name of the flag containing this rule."
                      },
                      {
                        "name": "id",
                        "kind": "optional",
                        "type": "integer<int64>",
                        "description": "Rule ID.",
                        "format": "int64"
                      },
                      {
                        "name": "key",
                        "kind": "optional",
                        "type": "string",
                        "description": "Rule key."
                      },
                      {
                        "name": "name",
                        "kind": "optional",
                        "type": "string",
                        "description": "Rule name."
                      },
                      {
                        "name": "project_id",
                        "kind": "optional",
                        "type": "integer<int64>",
                        "description": "ID of the project this rule belongs to.",
                        "format": "int64"
                      }
                    ]
                  },
                  {
                    "name": "scope",
                    "kind": "optional",
                    "type": "string<global | local>",
                    "description": "<p>Defines the scope of the holdout:</p>\n<ul>\n<li>'global': Affects all experiments across the entire project</li>\n<li>'local': Affects only specific experiments or flags</li>\n</ul>",
                    "example": "global",
                    "enum": [
                      "global",
                      "local"
                    ]
                  },
                  {
                    "name": "start_time",
                    "kind": "optional",
                    "type": "string<date-time>",
                    "description": "Timestamp when the holdout became or will become active.\nWhen the holdout starts affecting traffic allocation.\n",
                    "example": "2024-01-01T00:00:00.000Z",
                    "format": "date-time"
                  },
                  {
                    "name": "status",
                    "kind": "optional",
                    "type": "string<draft | running | concluded>",
                    "description": "<p>Current operational status of the holdout:</p>\n<ul>\n<li>'draft': Holdout is configured but not yet active</li>\n<li>'running': Holdout is currently active and affecting traffic</li>\n<li>'concluded': Holdout has finished and is no longer active</li>\n</ul>",
                    "example": "running",
                    "enum": [
                      "draft",
                      "running",
                      "concluded"
                    ]
                  },
                  {
                    "name": "traffic_allocation",
                    "kind": "optional",
                    "type": "integer",
                    "description": "<p>Percentage of traffic allocated to this holdout, expressed in basis points (1/100th of a percent).\nFor example: 100 = 1%, 1000 = 10%, 5000 = 50%. The remaining traffic sees experiments normally.</p>",
                    "example": 1000,
                    "minimum": 0,
                    "maximum": 10000
                  },
                  {
                    "name": "updated_time",
                    "kind": "optional",
                    "type": "string<date-time>",
                    "readOnly": true,
                    "description": "Timestamp when the holdout was last modified.",
                    "example": "2024-01-01T10:00:00.000Z",
                    "format": "date-time"
                  },
                  {
                    "name": "url",
                    "kind": "optional",
                    "type": "string",
                    "readOnly": true,
                    "description": "<p>RESTful link to fetch this holdout's details.\nFor project-scoped endpoints: /projects/{project_id}/holdouts/{holdout_id}\nFor cross-project endpoints: /holdouts/{holdout_id}</p>",
                    "example": "/holdouts/12345"
                  },
                  {
                    "name": "urn",
                    "kind": "optional",
                    "type": "string",
                    "readOnly": true,
                    "description": "<p>Universal Resource Name (URN) for the holdout, used for global identification.</p>",
                    "example": "holdout.flag.optimizely.com::12345"
                  }
                ]
              },
              {
                "name": "last_url",
                "kind": "required",
                "type": "object",
                "description": "Link to the final page of holdouts in the result set. Points to the highest\npage number that contains results.\n",
                "complexType": "allOf",
                "complexItems": [
                  {
                    "name": "UrlValue",
                    "description": "",
                    "modelRef": "#/components/schemas/UrlValue",
                    "schema": []
                  }
                ],
                "schema": []
              },
              {
                "name": "next_url",
                "kind": "optional",
                "type": "object",
                "description": "<p>Array of links to subsequent pages in the result set. The first element is the\nimmediate next page, followed by additional pages in sequence. Empty if on the last page.</p>",
                "complexType": "allOf",
                "complexItems": [
                  {
                    "name": "UrlList",
                    "description": "",
                    "modelRef": "#/components/schemas/UrlList",
                    "schema": []
                  }
                ],
                "schema": []
              },
              {
                "name": "page",
                "kind": "required",
                "type": "integer",
                "description": "<p>Current page number (1-indexed). The first page is page 1, not page 0.\nThis corresponds to the requested page in the pagination sequence.</p>",
                "example": 1,
                "minimum": 1
              },
              {
                "name": "prev_url",
                "kind": "optional",
                "type": "object",
                "description": "<p>Array of links to previous pages in the result set. The first element is the\nimmediate previous page, followed by earlier pages in reverse sequence. Empty if on the first page.</p>",
                "complexType": "allOf",
                "complexItems": [
                  {
                    "name": "UrlList",
                    "description": "",
                    "modelRef": "#/components/schemas/UrlList",
                    "schema": []
                  }
                ],
                "schema": []
              },
              {
                "name": "reset_url",
                "kind": "optional",
                "type": "object",
                "description": "Link to reset pagination and view the default first page without any applied filters.\nUse this to return to the standard holdouts list view.\n",
                "complexType": "allOf",
                "complexItems": [
                  {
                    "name": "UrlValue",
                    "description": "",
                    "modelRef": "#/components/schemas/UrlValue",
                    "schema": []
                  }
                ],
                "schema": []
              },
              {
                "name": "total_count",
                "kind": "required",
                "type": "integer",
                "description": "Total number of holdouts matching the query criteria across all pages.\nThis count reflects any filters applied to the request.\n",
                "example": 25,
                "minimum": 0
              },
              {
                "name": "total_pages",
                "kind": "required",
                "type": "integer",
                "description": "<p>Total number of pages required to display all holdouts matching the criteria.\nCalculated as ceil(total_count / per_page).</p>",
                "example": 13,
                "minimum": 1
              },
              {
                "name": "url",
                "kind": "required",
                "type": "object",
                "description": "<p>Link to the current page (self-reference). Use this URL to refresh\nthe current page or bookmark the current view.</p>",
                "complexType": "allOf",
                "complexItems": [
                  {
                    "name": "UrlValue",
                    "description": "",
                    "modelRef": "#/components/schemas/UrlValue",
                    "schema": []
                  }
                ],
                "schema": []
              }
            ],
            "modelRef": "#/components/schemas/HoldoutsPaginatedList",
            "isExpanded": true
          }
        ]
      },
      {
        "statusCode": "401",
        "description": "Invalid credentials",
        "jsonExample": "",
        "isExpanded": true
      },
      {
        "statusCode": "403",
        "description": "Do not have permission to perform the operation",
        "jsonExample": "",
        "isExpanded": true
      }
    ],
    "hasXCodeSamples": false,
    "examples": {
      "languages": [
        {
          "id": "Iuco27_wZ2o0OnuYrgHvY",
          "language": "curl",
          "label": "cURL",
          "code": "curl --request GET \\\n     --url 'https://api.optimizely.com/flags/v1//holdouts?project_id=integer&project_scope=all' \\\n     --header 'accept: application/json'"
        },
        {
          "id": "lsqV5FzKQKF2-BpQJxmqA",
          "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/flags/v1//holdouts?project_id=integer&project_scope=all\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));"
        },
        {
          "id": "mIsK3kXmbLlqnRVzFWn-0",
          "language": "ruby",
          "label": "Ruby",
          "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.optimizely.com/flags/v1//holdouts?project_id=integer&project_scope=all\")\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": "n4U0_sEHjf830QrrcY0FS",
          "language": "python",
          "label": "Python",
          "code": "import requests\nimport json\n\nurl = \"https://api.optimizely.com/flags/v1//holdouts?project_id=integer&project_scope=all\"\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": "Iuco27_wZ2o0OnuYrgHvY"
    },
    "results": {
      "languages": [
        {
          "id": "-tq-TcbRsFX4_mPZ9yzrF",
          "language": "200",
          "code": "// Successful retrieval of a list of holdouts.\nThe response includes RESTful JSON (https://restfuljson.org/) styled links. If a\nlink is not present in the response, it indicates a user is not authorized to access\nthe related resource.\n{\n  \"count\": 2,\n  \"filter_url\": {},\n  \"first_url\": {},\n  \"items\": [\n    {\n      \"archived\": false,\n      \"audience_conditions\": [\n        {}\n      ],\n      \"audience_ids\": [\n        0\n      ],\n      \"created_by_user_email\": \"user@company.com\",\n      \"created_time\": \"2023-12-15T10:00:00.000Z\",\n      \"description\": \"Holdout group to measure the overall impact of our growth experiments throughout the year\",\n      \"end_time\": \"2024-12-31T23:59:59.000Z\",\n      \"environment_key\": \"production\",\n      \"environment_name\": \"Production\",\n      \"exclude_targeted_deliveries\": false,\n      \"holdout_results_api_token\": \"SampleToken.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9\",\n      \"id\": 12345,\n      \"key\": \"annual_growth_holdout\",\n      \"metrics\": [\n        {\n          \"aggregator\": \"\",\n          \"display_title\": \"\",\n          \"display_unit\": \"\",\n          \"event_id\": 32334454244,\n          \"event_properties\": {\n            \"filter\": {\n              \"combine_operator\": \"\",\n              \"conditions\": [\n                {\n                  \"name\": \"\",\n                  \"operator\": \"\",\n                  \"type\": \"\",\n                  \"value\": \"\"\n                }\n              ]\n            }\n          },\n          \"event_type\": \"\",\n          \"field\": \"\",\n          \"id\": \"\",\n          \"metrics\": [\n            {\n              \"aggregator\": \"\",\n              \"display_title\": \"\",\n              \"event_id\": 0,\n              \"event_type\": \"\",\n              \"field\": \"\",\n              \"role\": \"\",\n              \"scope\": \"\"\n            }\n          ],\n          \"project_id\": 0,\n          \"scope\": \"\",\n          \"visibility\": \"\",\n          \"winning_direction\": \"\"\n        }\n      ],\n      \"name\": \"Annual Growth Control Group\",\n      \"project_id\": 98765,\n      \"projects\": [\n        {\n          \"id\": \"\"\n        }\n      ],\n      \"revision\": 3,\n      \"rules\": [\n        {\n          \"flag_id\": \"\",\n          \"flag_key\": \"\",\n          \"flag_name\": \"\",\n          \"id\": \"\",\n          \"key\": \"\",\n          \"name\": \"\",\n          \"project_id\": \"\"\n        }\n      ],\n      \"scope\": \"global\",\n      \"start_time\": \"2024-01-01T00:00:00.000Z\",\n      \"status\": \"running\",\n      \"traffic_allocation\": 1000,\n      \"updated_time\": \"2024-01-01T10:00:00.000Z\",\n      \"url\": \"/holdouts/12345\",\n      \"urn\": \"holdout.flag.optimizely.com::12345\"\n    }\n  ],\n  \"last_url\": {},\n  \"next_url\": {},\n  \"page\": 1,\n  \"prev_url\": {},\n  \"reset_url\": {},\n  \"total_count\": 25,\n  \"total_pages\": 13,\n  \"url\": {}\n}"
        },
        {
          "id": "w7LouWKio9iR1bY4y3uN3",
          "language": "401",
          "code": "// Invalid credentials\n"
        },
        {
          "id": "1vkOHd-A0mevjv0sdTM5n",
          "language": "403",
          "code": "// Do not have permission to perform the operation\n"
        }
      ],
      "selectedLanguageId": "-tq-TcbRsFX4_mPZ9yzrF"
    }
  },
  "children": [
    {
      "text": ""
    }
  ]
}