# Screener

## Search Screener

**post** `/v1/screener`

Search instruments using structured filters.

Returns a columnar response where each row is an array of column objects.
Each column contains a human-readable name, a field reference, an optional
type hint (e.g. `CURR_USD`, `PERCENT`), and the value.

Use `columns` to select which columns appear in each row.
When omitted, the default field set is returned.

### Body Parameters

- `columns: optional array of FieldRef`

  Subset of fields to include in the response.

  - `name: string`

    The field name.

  - `lookback: optional FieldLookback`

    Optional historical lookback window.

    - `"ONE_DAY"`

    - `"ONE_WEEK"`

    - `"ONE_MONTH"`

    - `"THREE_MONTHS"`

    - `"SIX_MONTHS"`

    - `"YEAR_TO_DATE"`

    - `"ONE_YEAR"`

  - `period: optional FieldPeriod`

    Optional reporting period (e.g. quarter or TTM).

    - `"QUARTER"`

    - `"TRAILING_TWELVE_MONTHS"`

  - `value_type: optional FieldType`

    The data type of the field value. Present only in responses.

    - `"DECIMAL"`

    - `"INTEGER"`

    - `"STRING"`

    - `"ANALYST_RATING"`

    - `"DATE"`

- `field_filter: optional array of FieldRef`

  Deprecated: use `columns` instead. Ignored when `columns` is provided.

  - `name: string`

    The field name.

  - `lookback: optional FieldLookback`

    Optional historical lookback window.

  - `period: optional FieldPeriod`

    Optional reporting period (e.g. quarter or TTM).

  - `value_type: optional FieldType`

    The data type of the field value. Present only in responses.

- `filters: optional array of SearchFilter`

  Filter conditions to apply.

  - `left: FieldRef`

    The field to filter on.

    - `name: string`

      The field name.

    - `lookback: optional FieldLookback`

      Optional historical lookback window.

    - `period: optional FieldPeriod`

      Optional reporting period (e.g. quarter or TTM).

    - `value_type: optional FieldType`

      The data type of the field value. Present only in responses.

  - `op: optional FilterOpSpec`

    The operator and optional arguments. Omit together with `right` for an unenabled filter.

    - `name: FilterOperator`

      The operator to apply.

      - `"LESS_THAN"`

      - `"LESS_OR_EQUAL"`

      - `"GREATER_THAN"`

      - `"GREATER_OR_EQUAL"`

      - `"EQUAL"`

      - `"BETWEEN"`

      - `"NOT_BETWEEN"`

      - `"ONE_OF"`

      - `"REGEX"`

      - `"BEGINS_WITH"`

      - `"ENDS_WITH"`

      - `"CONTAINS"`

      - `"IS_NULL"`

      - `"IS_NOT_NULL"`

    - `args: optional array of OperatorArg`

      Optional arguments that modify operator behavior.

      - `"LEFT_INCLUSIVE"`

      - `"RIGHT_INCLUSIVE"`

      - `"LEFT_EXCLUSIVE"`

      - `"RIGHT_EXCLUSIVE"`

      - `"CASE_INSENSITIVE"`

  - `right: optional array of FilterValue`

    The value(s) to compare against. Omit together with `op` for an unenabled filter.

    - `value: optional number or string`

      - `number`

      - `string`

    - `variable: optional Variable`

      A variable reference.

      - `name: string`

        The variable name.

      - `lookback: optional FieldLookback`

        Optional historical lookback window.

      - `modifier: optional Modifier`

        Optional arithmetic modifier.

        - `args: array of number or string`

          - `number`

          - `string`

        - `name: ModifierOp`

          The modifier operation.

          - `"ADD"`

          - `"SUBTRACT"`

      - `period: optional FieldPeriod`

        Optional reporting period.

- `page_size: optional number`

  The number of items to return per page (only used when page_token is not provided)

- `page_token: optional string`

  Token for retrieving the next page of results. Contains encoded pagination state (limit + offset).
  When provided, page_size is ignored.

- `sort_case_sensitive: optional boolean`

  Whether string sorts should be case-sensitive (default: false).

- `sorts: optional array of SortSpec`

  Multi-field sort specifications.

  - `field: FieldRef`

    The field to sort by.

  - `direction: optional SortDirection`

    Sort direction (defaults to DESC).

    - `"ASC"`

    - `"DESC"`

### Returns

- `data: ScreenerRowList`

  - `field: FieldRef`

    Field reference (same shape as filter/sort field references)

    - `name: string`

      The field name.

    - `lookback: optional FieldLookback`

      Optional historical lookback window.

      - `"ONE_DAY"`

      - `"ONE_WEEK"`

      - `"ONE_MONTH"`

      - `"THREE_MONTHS"`

      - `"SIX_MONTHS"`

      - `"YEAR_TO_DATE"`

      - `"ONE_YEAR"`

    - `period: optional FieldPeriod`

      Optional reporting period (e.g. quarter or TTM).

      - `"QUARTER"`

      - `"TRAILING_TWELVE_MONTHS"`

    - `value_type: optional FieldType`

      The data type of the field value. Present only in responses.

      - `"DECIMAL"`

      - `"INTEGER"`

      - `"STRING"`

      - `"ANALYST_RATING"`

      - `"DATE"`

  - `name: string`

    Human-readable display name for this field

  - `value: number or string`

    - `number`

    - `string`

  - `type: optional string`

    Value format hint: "CURR_USD", "PERCENT", etc. Omitted when not applicable.
    When a null/undefined value is observed, it indicates it does not apply.

### Example

```http
curl https://api.clearstreet.com/v1/screener \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $API_KEY" \
    -d '{}'
```

#### Response

```json
{
  "data": [
    [
      {
        "field": {
          "name": "symbol"
        },
        "name": "Symbol",
        "value": "AAPL"
      },
      {
        "field": {
          "name": "price"
        },
        "name": "Price",
        "type": "CURR_USD",
        "value": 175.05
      },
      {
        "field": {
          "name": "market_cap"
        },
        "name": "Market Cap",
        "type": "CURR_USD",
        "value": 3500000000000
      },
      {
        "field": {
          "name": "beta"
        },
        "name": "Beta",
        "value": 1.2
      },
      {
        "field": {
          "lookback": "ONE_WEEK",
          "name": "change_pct"
        },
        "name": "Change (1W)",
        "type": "PERCENT",
        "value": 2.35
      },
      {
        "field": {
          "name": "consensus_rating"
        },
        "name": "Consensus Rating",
        "value": "STRONG_BUY"
      },
      {
        "field": {
          "name": "earnings_per_share",
          "period": "QUARTER"
        },
        "name": "EPS (Q)",
        "type": "CURR_USD",
        "value": 1.55
      }
    ],
    [
      {
        "field": {
          "name": "symbol"
        },
        "name": "Symbol",
        "value": "F"
      },
      {
        "field": {
          "name": "price"
        },
        "name": "Price",
        "type": "CURR_USD",
        "value": 12.5
      },
      {
        "field": {
          "name": "market_cap"
        },
        "name": "Market Cap",
        "type": "CURR_USD",
        "value": 45000000000
      },
      {
        "field": {
          "name": "beta"
        },
        "name": "Beta",
        "value": 1.5
      },
      {
        "field": {
          "lookback": "ONE_WEEK",
          "name": "change_pct"
        },
        "name": "Change (1W)",
        "type": "PERCENT",
        "value": -0.85
      },
      {
        "field": {
          "name": "consensus_rating"
        },
        "name": "Consensus Rating",
        "value": "HOLD"
      },
      {
        "field": {
          "name": "earnings_per_share",
          "period": "QUARTER"
        },
        "name": "EPS (Q)",
        "type": "CURR_USD",
        "value": 0.23
      }
    ]
  ],
  "metadata": {
    "next_page_token": "AAAAAAAAAAoAAAAAAAAAAg",
    "request_id": "abc-123"
  }
}
```

## Get Screeners

**get** `/v1/saved-screeners`

List saved screener configurations.

Returns all screener configurations for the authenticated user.

### Returns

- `data: ScreenerEntryList`

  - `id: string`

  - `created_at: string`

  - `filters: array of SearchFilter`

    - `left: FieldRef`

      The field to filter on.

      - `name: string`

        The field name.

      - `lookback: optional FieldLookback`

        Optional historical lookback window.

        - `"ONE_DAY"`

        - `"ONE_WEEK"`

        - `"ONE_MONTH"`

        - `"THREE_MONTHS"`

        - `"SIX_MONTHS"`

        - `"YEAR_TO_DATE"`

        - `"ONE_YEAR"`

      - `period: optional FieldPeriod`

        Optional reporting period (e.g. quarter or TTM).

        - `"QUARTER"`

        - `"TRAILING_TWELVE_MONTHS"`

      - `value_type: optional FieldType`

        The data type of the field value. Present only in responses.

        - `"DECIMAL"`

        - `"INTEGER"`

        - `"STRING"`

        - `"ANALYST_RATING"`

        - `"DATE"`

    - `op: optional FilterOpSpec`

      The operator and optional arguments. Omit together with `right` for an unenabled filter.

      - `name: FilterOperator`

        The operator to apply.

        - `"LESS_THAN"`

        - `"LESS_OR_EQUAL"`

        - `"GREATER_THAN"`

        - `"GREATER_OR_EQUAL"`

        - `"EQUAL"`

        - `"BETWEEN"`

        - `"NOT_BETWEEN"`

        - `"ONE_OF"`

        - `"REGEX"`

        - `"BEGINS_WITH"`

        - `"ENDS_WITH"`

        - `"CONTAINS"`

        - `"IS_NULL"`

        - `"IS_NOT_NULL"`

      - `args: optional array of OperatorArg`

        Optional arguments that modify operator behavior.

        - `"LEFT_INCLUSIVE"`

        - `"RIGHT_INCLUSIVE"`

        - `"LEFT_EXCLUSIVE"`

        - `"RIGHT_EXCLUSIVE"`

        - `"CASE_INSENSITIVE"`

    - `right: optional array of FilterValue`

      The value(s) to compare against. Omit together with `op` for an unenabled filter.

      - `value: optional number or string`

        - `number`

        - `string`

      - `variable: optional Variable`

        A variable reference.

        - `name: string`

          The variable name.

        - `lookback: optional FieldLookback`

          Optional historical lookback window.

        - `modifier: optional Modifier`

          Optional arithmetic modifier.

          - `args: array of number or string`

            - `number`

            - `string`

          - `name: ModifierOp`

            The modifier operation.

            - `"ADD"`

            - `"SUBTRACT"`

        - `period: optional FieldPeriod`

          Optional reporting period.

  - `name: string`

  - `updated_at: string`

  - `columns: optional array of FieldRef`

    Field references included when running this screener.

    - `name: string`

      The field name.

    - `lookback: optional FieldLookback`

      Optional historical lookback window.

    - `period: optional FieldPeriod`

      Optional reporting period (e.g. quarter or TTM).

    - `value_type: optional FieldType`

      The data type of the field value. Present only in responses.

  - `field_filter: optional array of FieldRef`

    Deprecated: use `columns` instead. Mirrors `columns`.

    - `name: string`

      The field name.

    - `lookback: optional FieldLookback`

      Optional historical lookback window.

    - `period: optional FieldPeriod`

      Optional reporting period (e.g. quarter or TTM).

    - `value_type: optional FieldType`

      The data type of the field value. Present only in responses.

  - `sorts: optional array of SortSpec`

    - `field: FieldRef`

      The field to sort by.

    - `direction: optional SortDirection`

      Sort direction (defaults to DESC).

      - `"ASC"`

      - `"DESC"`

### Example

```http
curl https://api.clearstreet.com/v1/saved-screeners \
    -H "Authorization: Bearer $API_KEY"
```

#### Response

```json
{
  "data": [
    {
      "created_at": "2026-03-20T14:30:00Z",
      "filters": [
        {
          "left": {
            "name": "market_cap"
          },
          "op": {
            "name": "GREATER_OR_EQUAL"
          },
          "right": [
            {
              "value": 1000000000
            }
          ]
        }
      ],
      "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "name": "Tech Large Caps",
      "sorts": [
        {
          "direction": "DESC",
          "field": {
            "name": "market_cap"
          }
        }
      ],
      "updated_at": "2026-03-20T14:30:00Z"
    },
    {
      "columns": [
        {
          "name": "symbol"
        },
        {
          "name": "price"
        },
        {
          "name": "volume"
        }
      ],
      "created_at": "2026-03-21T09:00:00Z",
      "filters": [
        {
          "left": {
            "name": "volume"
          },
          "op": {
            "name": "GREATER_OR_EQUAL"
          },
          "right": [
            {
              "value": 10000000
            }
          ]
        }
      ],
      "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
      "name": "High Volume",
      "updated_at": "2026-03-21T09:00:00Z"
    }
  ],
  "metadata": {
    "request_id": "1a2b3c4d-5e6f-7890-1234-5a6b7c8d9e0f"
  }
}
```

## Get Screener By ID

**get** `/v1/saved-screeners/{screener_id}`

Get a saved screener configuration by ID.

Returns a single screener configuration for the authenticated user.

### Path Parameters

- `screener_id: string`

### Returns

- `data: ScreenerEntry`

  A saved screener configuration entry

  - `id: string`

  - `created_at: string`

  - `filters: array of SearchFilter`

    - `left: FieldRef`

      The field to filter on.

      - `name: string`

        The field name.

      - `lookback: optional FieldLookback`

        Optional historical lookback window.

        - `"ONE_DAY"`

        - `"ONE_WEEK"`

        - `"ONE_MONTH"`

        - `"THREE_MONTHS"`

        - `"SIX_MONTHS"`

        - `"YEAR_TO_DATE"`

        - `"ONE_YEAR"`

      - `period: optional FieldPeriod`

        Optional reporting period (e.g. quarter or TTM).

        - `"QUARTER"`

        - `"TRAILING_TWELVE_MONTHS"`

      - `value_type: optional FieldType`

        The data type of the field value. Present only in responses.

        - `"DECIMAL"`

        - `"INTEGER"`

        - `"STRING"`

        - `"ANALYST_RATING"`

        - `"DATE"`

    - `op: optional FilterOpSpec`

      The operator and optional arguments. Omit together with `right` for an unenabled filter.

      - `name: FilterOperator`

        The operator to apply.

        - `"LESS_THAN"`

        - `"LESS_OR_EQUAL"`

        - `"GREATER_THAN"`

        - `"GREATER_OR_EQUAL"`

        - `"EQUAL"`

        - `"BETWEEN"`

        - `"NOT_BETWEEN"`

        - `"ONE_OF"`

        - `"REGEX"`

        - `"BEGINS_WITH"`

        - `"ENDS_WITH"`

        - `"CONTAINS"`

        - `"IS_NULL"`

        - `"IS_NOT_NULL"`

      - `args: optional array of OperatorArg`

        Optional arguments that modify operator behavior.

        - `"LEFT_INCLUSIVE"`

        - `"RIGHT_INCLUSIVE"`

        - `"LEFT_EXCLUSIVE"`

        - `"RIGHT_EXCLUSIVE"`

        - `"CASE_INSENSITIVE"`

    - `right: optional array of FilterValue`

      The value(s) to compare against. Omit together with `op` for an unenabled filter.

      - `value: optional number or string`

        - `number`

        - `string`

      - `variable: optional Variable`

        A variable reference.

        - `name: string`

          The variable name.

        - `lookback: optional FieldLookback`

          Optional historical lookback window.

        - `modifier: optional Modifier`

          Optional arithmetic modifier.

          - `args: array of number or string`

            - `number`

            - `string`

          - `name: ModifierOp`

            The modifier operation.

            - `"ADD"`

            - `"SUBTRACT"`

        - `period: optional FieldPeriod`

          Optional reporting period.

  - `name: string`

  - `updated_at: string`

  - `columns: optional array of FieldRef`

    Field references included when running this screener.

    - `name: string`

      The field name.

    - `lookback: optional FieldLookback`

      Optional historical lookback window.

    - `period: optional FieldPeriod`

      Optional reporting period (e.g. quarter or TTM).

    - `value_type: optional FieldType`

      The data type of the field value. Present only in responses.

  - `field_filter: optional array of FieldRef`

    Deprecated: use `columns` instead. Mirrors `columns`.

    - `name: string`

      The field name.

    - `lookback: optional FieldLookback`

      Optional historical lookback window.

    - `period: optional FieldPeriod`

      Optional reporting period (e.g. quarter or TTM).

    - `value_type: optional FieldType`

      The data type of the field value. Present only in responses.

  - `sorts: optional array of SortSpec`

    - `field: FieldRef`

      The field to sort by.

    - `direction: optional SortDirection`

      Sort direction (defaults to DESC).

      - `"ASC"`

      - `"DESC"`

### Example

```http
curl https://api.clearstreet.com/v1/saved-screeners/$SCREENER_ID \
    -H "Authorization: Bearer $API_KEY"
```

#### Response

```json
{
  "data": {
    "columns": [
      {
        "name": "symbol"
      },
      {
        "name": "price"
      },
      {
        "name": "market_cap"
      }
    ],
    "created_at": "2026-03-20T14:30:00Z",
    "filters": [
      {
        "left": {
          "name": "market_cap"
        },
        "op": {
          "name": "GREATER_OR_EQUAL"
        },
        "right": [
          {
            "value": 1000000000
          }
        ]
      }
    ],
    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "name": "Tech Large Caps",
    "sorts": [
      {
        "direction": "DESC",
        "field": {
          "name": "market_cap"
        }
      }
    ],
    "updated_at": "2026-03-20T14:30:00Z"
  },
  "metadata": {
    "request_id": "1a2b3c4d-5e6f-7890-1234-5a6b7c8d9e0f"
  }
}
```

## Create Screener

**post** `/v1/saved-screeners`

Create a saved screener configuration.

Persists a screener configuration for the authenticated user.

### Body Parameters

- `columns: optional array of FieldRef`

  Structured field references to include when running this screener

  - `name: string`

    The field name.

  - `lookback: optional FieldLookback`

    Optional historical lookback window.

    - `"ONE_DAY"`

    - `"ONE_WEEK"`

    - `"ONE_MONTH"`

    - `"THREE_MONTHS"`

    - `"SIX_MONTHS"`

    - `"YEAR_TO_DATE"`

    - `"ONE_YEAR"`

  - `period: optional FieldPeriod`

    Optional reporting period (e.g. quarter or TTM).

    - `"QUARTER"`

    - `"TRAILING_TWELVE_MONTHS"`

  - `value_type: optional FieldType`

    The data type of the field value. Present only in responses.

    - `"DECIMAL"`

    - `"INTEGER"`

    - `"STRING"`

    - `"ANALYST_RATING"`

    - `"DATE"`

- `field_filter: optional array of FieldRef`

  Deprecated: use `columns` instead. Ignored when `columns` is provided.

  - `name: string`

    The field name.

  - `lookback: optional FieldLookback`

    Optional historical lookback window.

  - `period: optional FieldPeriod`

    Optional reporting period (e.g. quarter or TTM).

  - `value_type: optional FieldType`

    The data type of the field value. Present only in responses.

- `filters: optional array of SearchFilter`

  Structured search filter criteria

  - `left: FieldRef`

    The field to filter on.

    - `name: string`

      The field name.

    - `lookback: optional FieldLookback`

      Optional historical lookback window.

    - `period: optional FieldPeriod`

      Optional reporting period (e.g. quarter or TTM).

    - `value_type: optional FieldType`

      The data type of the field value. Present only in responses.

  - `op: optional FilterOpSpec`

    The operator and optional arguments. Omit together with `right` for an unenabled filter.

    - `name: FilterOperator`

      The operator to apply.

      - `"LESS_THAN"`

      - `"LESS_OR_EQUAL"`

      - `"GREATER_THAN"`

      - `"GREATER_OR_EQUAL"`

      - `"EQUAL"`

      - `"BETWEEN"`

      - `"NOT_BETWEEN"`

      - `"ONE_OF"`

      - `"REGEX"`

      - `"BEGINS_WITH"`

      - `"ENDS_WITH"`

      - `"CONTAINS"`

      - `"IS_NULL"`

      - `"IS_NOT_NULL"`

    - `args: optional array of OperatorArg`

      Optional arguments that modify operator behavior.

      - `"LEFT_INCLUSIVE"`

      - `"RIGHT_INCLUSIVE"`

      - `"LEFT_EXCLUSIVE"`

      - `"RIGHT_EXCLUSIVE"`

      - `"CASE_INSENSITIVE"`

  - `right: optional array of FilterValue`

    The value(s) to compare against. Omit together with `op` for an unenabled filter.

    - `value: optional number or string`

      - `number`

      - `string`

    - `variable: optional Variable`

      A variable reference.

      - `name: string`

        The variable name.

      - `lookback: optional FieldLookback`

        Optional historical lookback window.

      - `modifier: optional Modifier`

        Optional arithmetic modifier.

        - `args: array of number or string`

          - `number`

          - `string`

        - `name: ModifierOp`

          The modifier operation.

          - `"ADD"`

          - `"SUBTRACT"`

      - `period: optional FieldPeriod`

        Optional reporting period.

- `name: optional string`

  The name for this screener configuration

- `sorts: optional array of SortSpec`

  Multi-field sort specifications

  - `field: FieldRef`

    The field to sort by.

  - `direction: optional SortDirection`

    Sort direction (defaults to DESC).

    - `"ASC"`

    - `"DESC"`

### Returns

- `data: ScreenerEntry`

  A saved screener configuration entry

  - `id: string`

  - `created_at: string`

  - `filters: array of SearchFilter`

    - `left: FieldRef`

      The field to filter on.

      - `name: string`

        The field name.

      - `lookback: optional FieldLookback`

        Optional historical lookback window.

        - `"ONE_DAY"`

        - `"ONE_WEEK"`

        - `"ONE_MONTH"`

        - `"THREE_MONTHS"`

        - `"SIX_MONTHS"`

        - `"YEAR_TO_DATE"`

        - `"ONE_YEAR"`

      - `period: optional FieldPeriod`

        Optional reporting period (e.g. quarter or TTM).

        - `"QUARTER"`

        - `"TRAILING_TWELVE_MONTHS"`

      - `value_type: optional FieldType`

        The data type of the field value. Present only in responses.

        - `"DECIMAL"`

        - `"INTEGER"`

        - `"STRING"`

        - `"ANALYST_RATING"`

        - `"DATE"`

    - `op: optional FilterOpSpec`

      The operator and optional arguments. Omit together with `right` for an unenabled filter.

      - `name: FilterOperator`

        The operator to apply.

        - `"LESS_THAN"`

        - `"LESS_OR_EQUAL"`

        - `"GREATER_THAN"`

        - `"GREATER_OR_EQUAL"`

        - `"EQUAL"`

        - `"BETWEEN"`

        - `"NOT_BETWEEN"`

        - `"ONE_OF"`

        - `"REGEX"`

        - `"BEGINS_WITH"`

        - `"ENDS_WITH"`

        - `"CONTAINS"`

        - `"IS_NULL"`

        - `"IS_NOT_NULL"`

      - `args: optional array of OperatorArg`

        Optional arguments that modify operator behavior.

        - `"LEFT_INCLUSIVE"`

        - `"RIGHT_INCLUSIVE"`

        - `"LEFT_EXCLUSIVE"`

        - `"RIGHT_EXCLUSIVE"`

        - `"CASE_INSENSITIVE"`

    - `right: optional array of FilterValue`

      The value(s) to compare against. Omit together with `op` for an unenabled filter.

      - `value: optional number or string`

        - `number`

        - `string`

      - `variable: optional Variable`

        A variable reference.

        - `name: string`

          The variable name.

        - `lookback: optional FieldLookback`

          Optional historical lookback window.

        - `modifier: optional Modifier`

          Optional arithmetic modifier.

          - `args: array of number or string`

            - `number`

            - `string`

          - `name: ModifierOp`

            The modifier operation.

            - `"ADD"`

            - `"SUBTRACT"`

        - `period: optional FieldPeriod`

          Optional reporting period.

  - `name: string`

  - `updated_at: string`

  - `columns: optional array of FieldRef`

    Field references included when running this screener.

    - `name: string`

      The field name.

    - `lookback: optional FieldLookback`

      Optional historical lookback window.

    - `period: optional FieldPeriod`

      Optional reporting period (e.g. quarter or TTM).

    - `value_type: optional FieldType`

      The data type of the field value. Present only in responses.

  - `field_filter: optional array of FieldRef`

    Deprecated: use `columns` instead. Mirrors `columns`.

    - `name: string`

      The field name.

    - `lookback: optional FieldLookback`

      Optional historical lookback window.

    - `period: optional FieldPeriod`

      Optional reporting period (e.g. quarter or TTM).

    - `value_type: optional FieldType`

      The data type of the field value. Present only in responses.

  - `sorts: optional array of SortSpec`

    - `field: FieldRef`

      The field to sort by.

    - `direction: optional SortDirection`

      Sort direction (defaults to DESC).

      - `"ASC"`

      - `"DESC"`

### Example

```http
curl https://api.clearstreet.com/v1/saved-screeners \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $API_KEY" \
    -d '{}'
```

#### Response

```json
{
  "data": {
    "columns": [
      {
        "name": "symbol"
      },
      {
        "name": "price"
      },
      {
        "name": "market_cap"
      }
    ],
    "created_at": "2026-03-20T14:30:00Z",
    "filters": [
      {
        "left": {
          "name": "market_cap"
        },
        "op": {
          "name": "GREATER_OR_EQUAL"
        },
        "right": [
          {
            "value": 1000000000
          }
        ]
      }
    ],
    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "name": "Tech Large Caps",
    "sorts": [
      {
        "direction": "DESC",
        "field": {
          "name": "market_cap"
        }
      }
    ],
    "updated_at": "2026-03-20T14:30:00Z"
  },
  "metadata": {
    "request_id": "1a2b3c4d-5e6f-7890-1234-5a6b7c8d9e0f"
  }
}
```

## Replace Screener

**put** `/v1/saved-screeners/{screener_id}`

Update a saved screener configuration.

Replaces the screener configuration for the authenticated user.
If `name` is null, the existing name is preserved.

### Path Parameters

- `screener_id: string`

### Body Parameters

- `columns: optional array of FieldRef`

  Structured field references to include when running this screener

  - `name: string`

    The field name.

  - `lookback: optional FieldLookback`

    Optional historical lookback window.

    - `"ONE_DAY"`

    - `"ONE_WEEK"`

    - `"ONE_MONTH"`

    - `"THREE_MONTHS"`

    - `"SIX_MONTHS"`

    - `"YEAR_TO_DATE"`

    - `"ONE_YEAR"`

  - `period: optional FieldPeriod`

    Optional reporting period (e.g. quarter or TTM).

    - `"QUARTER"`

    - `"TRAILING_TWELVE_MONTHS"`

  - `value_type: optional FieldType`

    The data type of the field value. Present only in responses.

    - `"DECIMAL"`

    - `"INTEGER"`

    - `"STRING"`

    - `"ANALYST_RATING"`

    - `"DATE"`

- `field_filter: optional array of FieldRef`

  Deprecated: use `columns` instead. Ignored when `columns` is provided.

  - `name: string`

    The field name.

  - `lookback: optional FieldLookback`

    Optional historical lookback window.

  - `period: optional FieldPeriod`

    Optional reporting period (e.g. quarter or TTM).

  - `value_type: optional FieldType`

    The data type of the field value. Present only in responses.

- `filters: optional array of SearchFilter`

  Structured search filter criteria

  - `left: FieldRef`

    The field to filter on.

    - `name: string`

      The field name.

    - `lookback: optional FieldLookback`

      Optional historical lookback window.

    - `period: optional FieldPeriod`

      Optional reporting period (e.g. quarter or TTM).

    - `value_type: optional FieldType`

      The data type of the field value. Present only in responses.

  - `op: optional FilterOpSpec`

    The operator and optional arguments. Omit together with `right` for an unenabled filter.

    - `name: FilterOperator`

      The operator to apply.

      - `"LESS_THAN"`

      - `"LESS_OR_EQUAL"`

      - `"GREATER_THAN"`

      - `"GREATER_OR_EQUAL"`

      - `"EQUAL"`

      - `"BETWEEN"`

      - `"NOT_BETWEEN"`

      - `"ONE_OF"`

      - `"REGEX"`

      - `"BEGINS_WITH"`

      - `"ENDS_WITH"`

      - `"CONTAINS"`

      - `"IS_NULL"`

      - `"IS_NOT_NULL"`

    - `args: optional array of OperatorArg`

      Optional arguments that modify operator behavior.

      - `"LEFT_INCLUSIVE"`

      - `"RIGHT_INCLUSIVE"`

      - `"LEFT_EXCLUSIVE"`

      - `"RIGHT_EXCLUSIVE"`

      - `"CASE_INSENSITIVE"`

  - `right: optional array of FilterValue`

    The value(s) to compare against. Omit together with `op` for an unenabled filter.

    - `value: optional number or string`

      - `number`

      - `string`

    - `variable: optional Variable`

      A variable reference.

      - `name: string`

        The variable name.

      - `lookback: optional FieldLookback`

        Optional historical lookback window.

      - `modifier: optional Modifier`

        Optional arithmetic modifier.

        - `args: array of number or string`

          - `number`

          - `string`

        - `name: ModifierOp`

          The modifier operation.

          - `"ADD"`

          - `"SUBTRACT"`

      - `period: optional FieldPeriod`

        Optional reporting period.

- `name: optional string`

  The name for this screener configuration

- `sorts: optional array of SortSpec`

  Multi-field sort specifications

  - `field: FieldRef`

    The field to sort by.

  - `direction: optional SortDirection`

    Sort direction (defaults to DESC).

    - `"ASC"`

    - `"DESC"`

### Returns

- `data: ScreenerEntry`

  A saved screener configuration entry

  - `id: string`

  - `created_at: string`

  - `filters: array of SearchFilter`

    - `left: FieldRef`

      The field to filter on.

      - `name: string`

        The field name.

      - `lookback: optional FieldLookback`

        Optional historical lookback window.

        - `"ONE_DAY"`

        - `"ONE_WEEK"`

        - `"ONE_MONTH"`

        - `"THREE_MONTHS"`

        - `"SIX_MONTHS"`

        - `"YEAR_TO_DATE"`

        - `"ONE_YEAR"`

      - `period: optional FieldPeriod`

        Optional reporting period (e.g. quarter or TTM).

        - `"QUARTER"`

        - `"TRAILING_TWELVE_MONTHS"`

      - `value_type: optional FieldType`

        The data type of the field value. Present only in responses.

        - `"DECIMAL"`

        - `"INTEGER"`

        - `"STRING"`

        - `"ANALYST_RATING"`

        - `"DATE"`

    - `op: optional FilterOpSpec`

      The operator and optional arguments. Omit together with `right` for an unenabled filter.

      - `name: FilterOperator`

        The operator to apply.

        - `"LESS_THAN"`

        - `"LESS_OR_EQUAL"`

        - `"GREATER_THAN"`

        - `"GREATER_OR_EQUAL"`

        - `"EQUAL"`

        - `"BETWEEN"`

        - `"NOT_BETWEEN"`

        - `"ONE_OF"`

        - `"REGEX"`

        - `"BEGINS_WITH"`

        - `"ENDS_WITH"`

        - `"CONTAINS"`

        - `"IS_NULL"`

        - `"IS_NOT_NULL"`

      - `args: optional array of OperatorArg`

        Optional arguments that modify operator behavior.

        - `"LEFT_INCLUSIVE"`

        - `"RIGHT_INCLUSIVE"`

        - `"LEFT_EXCLUSIVE"`

        - `"RIGHT_EXCLUSIVE"`

        - `"CASE_INSENSITIVE"`

    - `right: optional array of FilterValue`

      The value(s) to compare against. Omit together with `op` for an unenabled filter.

      - `value: optional number or string`

        - `number`

        - `string`

      - `variable: optional Variable`

        A variable reference.

        - `name: string`

          The variable name.

        - `lookback: optional FieldLookback`

          Optional historical lookback window.

        - `modifier: optional Modifier`

          Optional arithmetic modifier.

          - `args: array of number or string`

            - `number`

            - `string`

          - `name: ModifierOp`

            The modifier operation.

            - `"ADD"`

            - `"SUBTRACT"`

        - `period: optional FieldPeriod`

          Optional reporting period.

  - `name: string`

  - `updated_at: string`

  - `columns: optional array of FieldRef`

    Field references included when running this screener.

    - `name: string`

      The field name.

    - `lookback: optional FieldLookback`

      Optional historical lookback window.

    - `period: optional FieldPeriod`

      Optional reporting period (e.g. quarter or TTM).

    - `value_type: optional FieldType`

      The data type of the field value. Present only in responses.

  - `field_filter: optional array of FieldRef`

    Deprecated: use `columns` instead. Mirrors `columns`.

    - `name: string`

      The field name.

    - `lookback: optional FieldLookback`

      Optional historical lookback window.

    - `period: optional FieldPeriod`

      Optional reporting period (e.g. quarter or TTM).

    - `value_type: optional FieldType`

      The data type of the field value. Present only in responses.

  - `sorts: optional array of SortSpec`

    - `field: FieldRef`

      The field to sort by.

    - `direction: optional SortDirection`

      Sort direction (defaults to DESC).

      - `"ASC"`

      - `"DESC"`

### Example

```http
curl https://api.clearstreet.com/v1/saved-screeners/$SCREENER_ID \
    -X PUT \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $API_KEY" \
    -d '{}'
```

#### Response

```json
{
  "data": {
    "columns": [
      {
        "name": "symbol"
      },
      {
        "name": "price"
      },
      {
        "name": "market_cap"
      }
    ],
    "created_at": "2026-04-23T13:37:04.041398Z",
    "filters": [
      {
        "left": {
          "name": "market_cap"
        },
        "op": {
          "name": "GREATER_OR_EQUAL"
        },
        "right": [
          {
            "value": 1000000000
          }
        ]
      }
    ],
    "id": "69fcb40a-1812-4856-b2d3-97dec805efee",
    "name": "Tech Large Caps",
    "sorts": [
      {
        "direction": "ASC",
        "field": {
          "name": "market_cap"
        }
      }
    ],
    "updated_at": "2026-04-23T13:37:21.860106Z"
  },
  "metadata": {
    "request_id": "71ac58a8-9b12-49b9-8301-6239febe4e56"
  }
}
```

## Delete Screener

**delete** `/v1/saved-screeners/{screener_id}`

Delete a saved screener configuration.

Deletes the screener configuration for the authenticated user.

### Path Parameters

- `screener_id: string`

### Example

```http
curl https://api.clearstreet.com/v1/saved-screeners/$SCREENER_ID \
    -X DELETE \
    -H "Authorization: Bearer $API_KEY"
```

#### Response

```json
{
  "error": {
    "code": 404,
    "message": "Some requested entity was not found"
  },
  "metadata": {
    "request_id": "aafc54ec-939e-49a9-ab6e-bbabca005cb2"
  }
}
```

## Domain Types

### Field Lookback

- `FieldLookback = "ONE_DAY" or "ONE_WEEK" or "ONE_MONTH" or 4 more`

  Historical lookback window for price/change fields.

  - `"ONE_DAY"`

  - `"ONE_WEEK"`

  - `"ONE_MONTH"`

  - `"THREE_MONTHS"`

  - `"SIX_MONTHS"`

  - `"YEAR_TO_DATE"`

  - `"ONE_YEAR"`

### Field Period

- `FieldPeriod = "QUARTER" or "TRAILING_TWELVE_MONTHS"`

  Reporting period for financial data fields.

  - `"QUARTER"`

  - `"TRAILING_TWELVE_MONTHS"`

### Field Ref

- `FieldRef object { name, lookback, period, value_type }`

  A reference to a screener field.

  - `name: string`

    The field name.

  - `lookback: optional FieldLookback`

    Optional historical lookback window.

    - `"ONE_DAY"`

    - `"ONE_WEEK"`

    - `"ONE_MONTH"`

    - `"THREE_MONTHS"`

    - `"SIX_MONTHS"`

    - `"YEAR_TO_DATE"`

    - `"ONE_YEAR"`

  - `period: optional FieldPeriod`

    Optional reporting period (e.g. quarter or TTM).

    - `"QUARTER"`

    - `"TRAILING_TWELVE_MONTHS"`

  - `value_type: optional FieldType`

    The data type of the field value. Present only in responses.

    - `"DECIMAL"`

    - `"INTEGER"`

    - `"STRING"`

    - `"ANALYST_RATING"`

    - `"DATE"`

### Field Type

- `FieldType = "DECIMAL" or "INTEGER" or "STRING" or 2 more`

  The data type of a screener field value.

  - `"DECIMAL"`

  - `"INTEGER"`

  - `"STRING"`

  - `"ANALYST_RATING"`

  - `"DATE"`

### Filter Op Spec

- `FilterOpSpec object { name, args }`

  Operator specification with optional behavioral arguments.

  - `name: FilterOperator`

    The operator to apply.

    - `"LESS_THAN"`

    - `"LESS_OR_EQUAL"`

    - `"GREATER_THAN"`

    - `"GREATER_OR_EQUAL"`

    - `"EQUAL"`

    - `"BETWEEN"`

    - `"NOT_BETWEEN"`

    - `"ONE_OF"`

    - `"REGEX"`

    - `"BEGINS_WITH"`

    - `"ENDS_WITH"`

    - `"CONTAINS"`

    - `"IS_NULL"`

    - `"IS_NOT_NULL"`

  - `args: optional array of OperatorArg`

    Optional arguments that modify operator behavior.

    - `"LEFT_INCLUSIVE"`

    - `"RIGHT_INCLUSIVE"`

    - `"LEFT_EXCLUSIVE"`

    - `"RIGHT_EXCLUSIVE"`

    - `"CASE_INSENSITIVE"`

### Filter Operator

- `FilterOperator = "LESS_THAN" or "LESS_OR_EQUAL" or "GREATER_THAN" or 11 more`

  Filter operators supported by the screener.

  Abbreviated and lowercase forms are accepted as serde aliases for backward
  compatibility with earlier API revisions; the canonical wire form is the
  SCREAMING_SNAKE_CASE rendering.

  - `"LESS_THAN"`

  - `"LESS_OR_EQUAL"`

  - `"GREATER_THAN"`

  - `"GREATER_OR_EQUAL"`

  - `"EQUAL"`

  - `"BETWEEN"`

  - `"NOT_BETWEEN"`

  - `"ONE_OF"`

  - `"REGEX"`

  - `"BEGINS_WITH"`

  - `"ENDS_WITH"`

  - `"CONTAINS"`

  - `"IS_NULL"`

  - `"IS_NOT_NULL"`

### Filter Value

- `FilterValue object { value, variable }`

  A filter value: either a literal or a variable reference.

  - `value: optional number or string`

    - `number`

    - `string`

  - `variable: optional Variable`

    A variable reference.

    - `name: string`

      The variable name.

    - `lookback: optional FieldLookback`

      Optional historical lookback window.

      - `"ONE_DAY"`

      - `"ONE_WEEK"`

      - `"ONE_MONTH"`

      - `"THREE_MONTHS"`

      - `"SIX_MONTHS"`

      - `"YEAR_TO_DATE"`

      - `"ONE_YEAR"`

    - `modifier: optional Modifier`

      Optional arithmetic modifier.

      - `args: array of number or string`

        - `number`

        - `string`

      - `name: ModifierOp`

        The modifier operation.

        - `"ADD"`

        - `"SUBTRACT"`

    - `period: optional FieldPeriod`

      Optional reporting period.

      - `"QUARTER"`

      - `"TRAILING_TWELVE_MONTHS"`

### Modifier

- `Modifier object { args, name }`

  Arithmetic modifier applied to a variable value.

  - `args: array of number or string`

    - `number`

    - `string`

  - `name: ModifierOp`

    The modifier operation.

    - `"ADD"`

    - `"SUBTRACT"`

### Modifier Op

- `ModifierOp = "ADD" or "SUBTRACT"`

  Modifier operation applied to a variable.

  - `"ADD"`

  - `"SUBTRACT"`

### Operator Arg

- `OperatorArg = "LEFT_INCLUSIVE" or "RIGHT_INCLUSIVE" or "LEFT_EXCLUSIVE" or 2 more`

  Argument that modifies operator behavior.

  - `"LEFT_INCLUSIVE"`

  - `"RIGHT_INCLUSIVE"`

  - `"LEFT_EXCLUSIVE"`

  - `"RIGHT_EXCLUSIVE"`

  - `"CASE_INSENSITIVE"`

### Screener Column

- `ScreenerColumn object { field, name, value, type }`

  A single column in the screener search response.

  - `field: FieldRef`

    Field reference (same shape as filter/sort field references)

    - `name: string`

      The field name.

    - `lookback: optional FieldLookback`

      Optional historical lookback window.

      - `"ONE_DAY"`

      - `"ONE_WEEK"`

      - `"ONE_MONTH"`

      - `"THREE_MONTHS"`

      - `"SIX_MONTHS"`

      - `"YEAR_TO_DATE"`

      - `"ONE_YEAR"`

    - `period: optional FieldPeriod`

      Optional reporting period (e.g. quarter or TTM).

      - `"QUARTER"`

      - `"TRAILING_TWELVE_MONTHS"`

    - `value_type: optional FieldType`

      The data type of the field value. Present only in responses.

      - `"DECIMAL"`

      - `"INTEGER"`

      - `"STRING"`

      - `"ANALYST_RATING"`

      - `"DATE"`

  - `name: string`

    Human-readable display name for this field

  - `value: number or string`

    - `number`

    - `string`

  - `type: optional string`

    Value format hint: "CURR_USD", "PERCENT", etc. Omitted when not applicable.
    When a null/undefined value is observed, it indicates it does not apply.

### Screener Entry

- `ScreenerEntry object { id, created_at, filters, 5 more }`

  A saved screener configuration entry

  - `id: string`

  - `created_at: string`

  - `filters: array of SearchFilter`

    - `left: FieldRef`

      The field to filter on.

      - `name: string`

        The field name.

      - `lookback: optional FieldLookback`

        Optional historical lookback window.

        - `"ONE_DAY"`

        - `"ONE_WEEK"`

        - `"ONE_MONTH"`

        - `"THREE_MONTHS"`

        - `"SIX_MONTHS"`

        - `"YEAR_TO_DATE"`

        - `"ONE_YEAR"`

      - `period: optional FieldPeriod`

        Optional reporting period (e.g. quarter or TTM).

        - `"QUARTER"`

        - `"TRAILING_TWELVE_MONTHS"`

      - `value_type: optional FieldType`

        The data type of the field value. Present only in responses.

        - `"DECIMAL"`

        - `"INTEGER"`

        - `"STRING"`

        - `"ANALYST_RATING"`

        - `"DATE"`

    - `op: optional FilterOpSpec`

      The operator and optional arguments. Omit together with `right` for an unenabled filter.

      - `name: FilterOperator`

        The operator to apply.

        - `"LESS_THAN"`

        - `"LESS_OR_EQUAL"`

        - `"GREATER_THAN"`

        - `"GREATER_OR_EQUAL"`

        - `"EQUAL"`

        - `"BETWEEN"`

        - `"NOT_BETWEEN"`

        - `"ONE_OF"`

        - `"REGEX"`

        - `"BEGINS_WITH"`

        - `"ENDS_WITH"`

        - `"CONTAINS"`

        - `"IS_NULL"`

        - `"IS_NOT_NULL"`

      - `args: optional array of OperatorArg`

        Optional arguments that modify operator behavior.

        - `"LEFT_INCLUSIVE"`

        - `"RIGHT_INCLUSIVE"`

        - `"LEFT_EXCLUSIVE"`

        - `"RIGHT_EXCLUSIVE"`

        - `"CASE_INSENSITIVE"`

    - `right: optional array of FilterValue`

      The value(s) to compare against. Omit together with `op` for an unenabled filter.

      - `value: optional number or string`

        - `number`

        - `string`

      - `variable: optional Variable`

        A variable reference.

        - `name: string`

          The variable name.

        - `lookback: optional FieldLookback`

          Optional historical lookback window.

        - `modifier: optional Modifier`

          Optional arithmetic modifier.

          - `args: array of number or string`

            - `number`

            - `string`

          - `name: ModifierOp`

            The modifier operation.

            - `"ADD"`

            - `"SUBTRACT"`

        - `period: optional FieldPeriod`

          Optional reporting period.

  - `name: string`

  - `updated_at: string`

  - `columns: optional array of FieldRef`

    Field references included when running this screener.

    - `name: string`

      The field name.

    - `lookback: optional FieldLookback`

      Optional historical lookback window.

    - `period: optional FieldPeriod`

      Optional reporting period (e.g. quarter or TTM).

    - `value_type: optional FieldType`

      The data type of the field value. Present only in responses.

  - `field_filter: optional array of FieldRef`

    Deprecated: use `columns` instead. Mirrors `columns`.

    - `name: string`

      The field name.

    - `lookback: optional FieldLookback`

      Optional historical lookback window.

    - `period: optional FieldPeriod`

      Optional reporting period (e.g. quarter or TTM).

    - `value_type: optional FieldType`

      The data type of the field value. Present only in responses.

  - `sorts: optional array of SortSpec`

    - `field: FieldRef`

      The field to sort by.

    - `direction: optional SortDirection`

      Sort direction (defaults to DESC).

      - `"ASC"`

      - `"DESC"`

### Screener Entry List

- `ScreenerEntryList = array of ScreenerEntry`

  - `id: string`

  - `created_at: string`

  - `filters: array of SearchFilter`

    - `left: FieldRef`

      The field to filter on.

      - `name: string`

        The field name.

      - `lookback: optional FieldLookback`

        Optional historical lookback window.

        - `"ONE_DAY"`

        - `"ONE_WEEK"`

        - `"ONE_MONTH"`

        - `"THREE_MONTHS"`

        - `"SIX_MONTHS"`

        - `"YEAR_TO_DATE"`

        - `"ONE_YEAR"`

      - `period: optional FieldPeriod`

        Optional reporting period (e.g. quarter or TTM).

        - `"QUARTER"`

        - `"TRAILING_TWELVE_MONTHS"`

      - `value_type: optional FieldType`

        The data type of the field value. Present only in responses.

        - `"DECIMAL"`

        - `"INTEGER"`

        - `"STRING"`

        - `"ANALYST_RATING"`

        - `"DATE"`

    - `op: optional FilterOpSpec`

      The operator and optional arguments. Omit together with `right` for an unenabled filter.

      - `name: FilterOperator`

        The operator to apply.

        - `"LESS_THAN"`

        - `"LESS_OR_EQUAL"`

        - `"GREATER_THAN"`

        - `"GREATER_OR_EQUAL"`

        - `"EQUAL"`

        - `"BETWEEN"`

        - `"NOT_BETWEEN"`

        - `"ONE_OF"`

        - `"REGEX"`

        - `"BEGINS_WITH"`

        - `"ENDS_WITH"`

        - `"CONTAINS"`

        - `"IS_NULL"`

        - `"IS_NOT_NULL"`

      - `args: optional array of OperatorArg`

        Optional arguments that modify operator behavior.

        - `"LEFT_INCLUSIVE"`

        - `"RIGHT_INCLUSIVE"`

        - `"LEFT_EXCLUSIVE"`

        - `"RIGHT_EXCLUSIVE"`

        - `"CASE_INSENSITIVE"`

    - `right: optional array of FilterValue`

      The value(s) to compare against. Omit together with `op` for an unenabled filter.

      - `value: optional number or string`

        - `number`

        - `string`

      - `variable: optional Variable`

        A variable reference.

        - `name: string`

          The variable name.

        - `lookback: optional FieldLookback`

          Optional historical lookback window.

        - `modifier: optional Modifier`

          Optional arithmetic modifier.

          - `args: array of number or string`

            - `number`

            - `string`

          - `name: ModifierOp`

            The modifier operation.

            - `"ADD"`

            - `"SUBTRACT"`

        - `period: optional FieldPeriod`

          Optional reporting period.

  - `name: string`

  - `updated_at: string`

  - `columns: optional array of FieldRef`

    Field references included when running this screener.

    - `name: string`

      The field name.

    - `lookback: optional FieldLookback`

      Optional historical lookback window.

    - `period: optional FieldPeriod`

      Optional reporting period (e.g. quarter or TTM).

    - `value_type: optional FieldType`

      The data type of the field value. Present only in responses.

  - `field_filter: optional array of FieldRef`

    Deprecated: use `columns` instead. Mirrors `columns`.

    - `name: string`

      The field name.

    - `lookback: optional FieldLookback`

      Optional historical lookback window.

    - `period: optional FieldPeriod`

      Optional reporting period (e.g. quarter or TTM).

    - `value_type: optional FieldType`

      The data type of the field value. Present only in responses.

  - `sorts: optional array of SortSpec`

    - `field: FieldRef`

      The field to sort by.

    - `direction: optional SortDirection`

      Sort direction (defaults to DESC).

      - `"ASC"`

      - `"DESC"`

### Screener Filter

- `ScreenerFilter object { field, operator, value }`

  A single filter criterion for the screener.

  - `field: string`

    Field to filter on (e.g., "market_cap", "sector", "price")

  - `operator: string`

    Comparison operator (e.g., "eq", "gte", "lte", "in")

  - `value: unknown`

    Filter value

### Screener Row

- `ScreenerRow = array of ScreenerColumn`

  A single row of screener columns for one instrument.

  - `field: FieldRef`

    Field reference (same shape as filter/sort field references)

    - `name: string`

      The field name.

    - `lookback: optional FieldLookback`

      Optional historical lookback window.

      - `"ONE_DAY"`

      - `"ONE_WEEK"`

      - `"ONE_MONTH"`

      - `"THREE_MONTHS"`

      - `"SIX_MONTHS"`

      - `"YEAR_TO_DATE"`

      - `"ONE_YEAR"`

    - `period: optional FieldPeriod`

      Optional reporting period (e.g. quarter or TTM).

      - `"QUARTER"`

      - `"TRAILING_TWELVE_MONTHS"`

    - `value_type: optional FieldType`

      The data type of the field value. Present only in responses.

      - `"DECIMAL"`

      - `"INTEGER"`

      - `"STRING"`

      - `"ANALYST_RATING"`

      - `"DATE"`

  - `name: string`

    Human-readable display name for this field

  - `value: number or string`

    - `number`

    - `string`

  - `type: optional string`

    Value format hint: "CURR_USD", "PERCENT", etc. Omitted when not applicable.
    When a null/undefined value is observed, it indicates it does not apply.

### Screener Row List

- `ScreenerRowList = array of ScreenerRow`

  - `field: FieldRef`

    Field reference (same shape as filter/sort field references)

    - `name: string`

      The field name.

    - `lookback: optional FieldLookback`

      Optional historical lookback window.

      - `"ONE_DAY"`

      - `"ONE_WEEK"`

      - `"ONE_MONTH"`

      - `"THREE_MONTHS"`

      - `"SIX_MONTHS"`

      - `"YEAR_TO_DATE"`

      - `"ONE_YEAR"`

    - `period: optional FieldPeriod`

      Optional reporting period (e.g. quarter or TTM).

      - `"QUARTER"`

      - `"TRAILING_TWELVE_MONTHS"`

    - `value_type: optional FieldType`

      The data type of the field value. Present only in responses.

      - `"DECIMAL"`

      - `"INTEGER"`

      - `"STRING"`

      - `"ANALYST_RATING"`

      - `"DATE"`

  - `name: string`

    Human-readable display name for this field

  - `value: number or string`

    - `number`

    - `string`

  - `type: optional string`

    Value format hint: "CURR_USD", "PERCENT", etc. Omitted when not applicable.
    When a null/undefined value is observed, it indicates it does not apply.

### Search Filter

- `SearchFilter object { left, op, right }`

  A single filter condition.

  When `op` and `right` are both absent, the filter is "unenabled":
  it persists a `left` field reference without applying any predicate.
  Unenabled filters are skipped during search execution but still
  round-trip through save/load so callers can preserve draft state.

  - `left: FieldRef`

    The field to filter on.

    - `name: string`

      The field name.

    - `lookback: optional FieldLookback`

      Optional historical lookback window.

      - `"ONE_DAY"`

      - `"ONE_WEEK"`

      - `"ONE_MONTH"`

      - `"THREE_MONTHS"`

      - `"SIX_MONTHS"`

      - `"YEAR_TO_DATE"`

      - `"ONE_YEAR"`

    - `period: optional FieldPeriod`

      Optional reporting period (e.g. quarter or TTM).

      - `"QUARTER"`

      - `"TRAILING_TWELVE_MONTHS"`

    - `value_type: optional FieldType`

      The data type of the field value. Present only in responses.

      - `"DECIMAL"`

      - `"INTEGER"`

      - `"STRING"`

      - `"ANALYST_RATING"`

      - `"DATE"`

  - `op: optional FilterOpSpec`

    The operator and optional arguments. Omit together with `right` for an unenabled filter.

    - `name: FilterOperator`

      The operator to apply.

      - `"LESS_THAN"`

      - `"LESS_OR_EQUAL"`

      - `"GREATER_THAN"`

      - `"GREATER_OR_EQUAL"`

      - `"EQUAL"`

      - `"BETWEEN"`

      - `"NOT_BETWEEN"`

      - `"ONE_OF"`

      - `"REGEX"`

      - `"BEGINS_WITH"`

      - `"ENDS_WITH"`

      - `"CONTAINS"`

      - `"IS_NULL"`

      - `"IS_NOT_NULL"`

    - `args: optional array of OperatorArg`

      Optional arguments that modify operator behavior.

      - `"LEFT_INCLUSIVE"`

      - `"RIGHT_INCLUSIVE"`

      - `"LEFT_EXCLUSIVE"`

      - `"RIGHT_EXCLUSIVE"`

      - `"CASE_INSENSITIVE"`

  - `right: optional array of FilterValue`

    The value(s) to compare against. Omit together with `op` for an unenabled filter.

    - `value: optional number or string`

      - `number`

      - `string`

    - `variable: optional Variable`

      A variable reference.

      - `name: string`

        The variable name.

      - `lookback: optional FieldLookback`

        Optional historical lookback window.

      - `modifier: optional Modifier`

        Optional arithmetic modifier.

        - `args: array of number or string`

          - `number`

          - `string`

        - `name: ModifierOp`

          The modifier operation.

          - `"ADD"`

          - `"SUBTRACT"`

      - `period: optional FieldPeriod`

        Optional reporting period.

### Sort Spec

- `SortSpec object { field, direction }`

  A sort specification pairing a field with a direction.

  - `field: FieldRef`

    The field to sort by.

    - `name: string`

      The field name.

    - `lookback: optional FieldLookback`

      Optional historical lookback window.

      - `"ONE_DAY"`

      - `"ONE_WEEK"`

      - `"ONE_MONTH"`

      - `"THREE_MONTHS"`

      - `"SIX_MONTHS"`

      - `"YEAR_TO_DATE"`

      - `"ONE_YEAR"`

    - `period: optional FieldPeriod`

      Optional reporting period (e.g. quarter or TTM).

      - `"QUARTER"`

      - `"TRAILING_TWELVE_MONTHS"`

    - `value_type: optional FieldType`

      The data type of the field value. Present only in responses.

      - `"DECIMAL"`

      - `"INTEGER"`

      - `"STRING"`

      - `"ANALYST_RATING"`

      - `"DATE"`

  - `direction: optional SortDirection`

    Sort direction (defaults to DESC).

    - `"ASC"`

    - `"DESC"`

### Variable

- `Variable object { name, lookback, modifier, period }`

  A variable reference (field or built-in like `today`).

  - `name: string`

    The variable name.

  - `lookback: optional FieldLookback`

    Optional historical lookback window.

    - `"ONE_DAY"`

    - `"ONE_WEEK"`

    - `"ONE_MONTH"`

    - `"THREE_MONTHS"`

    - `"SIX_MONTHS"`

    - `"YEAR_TO_DATE"`

    - `"ONE_YEAR"`

  - `modifier: optional Modifier`

    Optional arithmetic modifier.

    - `args: array of number or string`

      - `number`

      - `string`

    - `name: ModifierOp`

      The modifier operation.

      - `"ADD"`

      - `"SUBTRACT"`

  - `period: optional FieldPeriod`

    Optional reporting period.

    - `"QUARTER"`

    - `"TRAILING_TWELVE_MONTHS"`

### Screener Search Screener Response

- `ScreenerSearchScreenerResponse = BaseResponse`

  - `data: ScreenerRowList`

    - `field: FieldRef`

      Field reference (same shape as filter/sort field references)

      - `name: string`

        The field name.

      - `lookback: optional FieldLookback`

        Optional historical lookback window.

        - `"ONE_DAY"`

        - `"ONE_WEEK"`

        - `"ONE_MONTH"`

        - `"THREE_MONTHS"`

        - `"SIX_MONTHS"`

        - `"YEAR_TO_DATE"`

        - `"ONE_YEAR"`

      - `period: optional FieldPeriod`

        Optional reporting period (e.g. quarter or TTM).

        - `"QUARTER"`

        - `"TRAILING_TWELVE_MONTHS"`

      - `value_type: optional FieldType`

        The data type of the field value. Present only in responses.

        - `"DECIMAL"`

        - `"INTEGER"`

        - `"STRING"`

        - `"ANALYST_RATING"`

        - `"DATE"`

    - `name: string`

      Human-readable display name for this field

    - `value: number or string`

      - `number`

      - `string`

    - `type: optional string`

      Value format hint: "CURR_USD", "PERCENT", etc. Omitted when not applicable.
      When a null/undefined value is observed, it indicates it does not apply.

### Screener Get Screeners Response

- `ScreenerGetScreenersResponse = BaseResponse`

  - `data: ScreenerEntryList`

    - `id: string`

    - `created_at: string`

    - `filters: array of SearchFilter`

      - `left: FieldRef`

        The field to filter on.

        - `name: string`

          The field name.

        - `lookback: optional FieldLookback`

          Optional historical lookback window.

          - `"ONE_DAY"`

          - `"ONE_WEEK"`

          - `"ONE_MONTH"`

          - `"THREE_MONTHS"`

          - `"SIX_MONTHS"`

          - `"YEAR_TO_DATE"`

          - `"ONE_YEAR"`

        - `period: optional FieldPeriod`

          Optional reporting period (e.g. quarter or TTM).

          - `"QUARTER"`

          - `"TRAILING_TWELVE_MONTHS"`

        - `value_type: optional FieldType`

          The data type of the field value. Present only in responses.

          - `"DECIMAL"`

          - `"INTEGER"`

          - `"STRING"`

          - `"ANALYST_RATING"`

          - `"DATE"`

      - `op: optional FilterOpSpec`

        The operator and optional arguments. Omit together with `right` for an unenabled filter.

        - `name: FilterOperator`

          The operator to apply.

          - `"LESS_THAN"`

          - `"LESS_OR_EQUAL"`

          - `"GREATER_THAN"`

          - `"GREATER_OR_EQUAL"`

          - `"EQUAL"`

          - `"BETWEEN"`

          - `"NOT_BETWEEN"`

          - `"ONE_OF"`

          - `"REGEX"`

          - `"BEGINS_WITH"`

          - `"ENDS_WITH"`

          - `"CONTAINS"`

          - `"IS_NULL"`

          - `"IS_NOT_NULL"`

        - `args: optional array of OperatorArg`

          Optional arguments that modify operator behavior.

          - `"LEFT_INCLUSIVE"`

          - `"RIGHT_INCLUSIVE"`

          - `"LEFT_EXCLUSIVE"`

          - `"RIGHT_EXCLUSIVE"`

          - `"CASE_INSENSITIVE"`

      - `right: optional array of FilterValue`

        The value(s) to compare against. Omit together with `op` for an unenabled filter.

        - `value: optional number or string`

          - `number`

          - `string`

        - `variable: optional Variable`

          A variable reference.

          - `name: string`

            The variable name.

          - `lookback: optional FieldLookback`

            Optional historical lookback window.

          - `modifier: optional Modifier`

            Optional arithmetic modifier.

            - `args: array of number or string`

              - `number`

              - `string`

            - `name: ModifierOp`

              The modifier operation.

              - `"ADD"`

              - `"SUBTRACT"`

          - `period: optional FieldPeriod`

            Optional reporting period.

    - `name: string`

    - `updated_at: string`

    - `columns: optional array of FieldRef`

      Field references included when running this screener.

      - `name: string`

        The field name.

      - `lookback: optional FieldLookback`

        Optional historical lookback window.

      - `period: optional FieldPeriod`

        Optional reporting period (e.g. quarter or TTM).

      - `value_type: optional FieldType`

        The data type of the field value. Present only in responses.

    - `field_filter: optional array of FieldRef`

      Deprecated: use `columns` instead. Mirrors `columns`.

      - `name: string`

        The field name.

      - `lookback: optional FieldLookback`

        Optional historical lookback window.

      - `period: optional FieldPeriod`

        Optional reporting period (e.g. quarter or TTM).

      - `value_type: optional FieldType`

        The data type of the field value. Present only in responses.

    - `sorts: optional array of SortSpec`

      - `field: FieldRef`

        The field to sort by.

      - `direction: optional SortDirection`

        Sort direction (defaults to DESC).

        - `"ASC"`

        - `"DESC"`

### Screener Get Screener By ID Response

- `ScreenerGetScreenerByIDResponse = BaseResponse`

  - `data: ScreenerEntry`

    A saved screener configuration entry

    - `id: string`

    - `created_at: string`

    - `filters: array of SearchFilter`

      - `left: FieldRef`

        The field to filter on.

        - `name: string`

          The field name.

        - `lookback: optional FieldLookback`

          Optional historical lookback window.

          - `"ONE_DAY"`

          - `"ONE_WEEK"`

          - `"ONE_MONTH"`

          - `"THREE_MONTHS"`

          - `"SIX_MONTHS"`

          - `"YEAR_TO_DATE"`

          - `"ONE_YEAR"`

        - `period: optional FieldPeriod`

          Optional reporting period (e.g. quarter or TTM).

          - `"QUARTER"`

          - `"TRAILING_TWELVE_MONTHS"`

        - `value_type: optional FieldType`

          The data type of the field value. Present only in responses.

          - `"DECIMAL"`

          - `"INTEGER"`

          - `"STRING"`

          - `"ANALYST_RATING"`

          - `"DATE"`

      - `op: optional FilterOpSpec`

        The operator and optional arguments. Omit together with `right` for an unenabled filter.

        - `name: FilterOperator`

          The operator to apply.

          - `"LESS_THAN"`

          - `"LESS_OR_EQUAL"`

          - `"GREATER_THAN"`

          - `"GREATER_OR_EQUAL"`

          - `"EQUAL"`

          - `"BETWEEN"`

          - `"NOT_BETWEEN"`

          - `"ONE_OF"`

          - `"REGEX"`

          - `"BEGINS_WITH"`

          - `"ENDS_WITH"`

          - `"CONTAINS"`

          - `"IS_NULL"`

          - `"IS_NOT_NULL"`

        - `args: optional array of OperatorArg`

          Optional arguments that modify operator behavior.

          - `"LEFT_INCLUSIVE"`

          - `"RIGHT_INCLUSIVE"`

          - `"LEFT_EXCLUSIVE"`

          - `"RIGHT_EXCLUSIVE"`

          - `"CASE_INSENSITIVE"`

      - `right: optional array of FilterValue`

        The value(s) to compare against. Omit together with `op` for an unenabled filter.

        - `value: optional number or string`

          - `number`

          - `string`

        - `variable: optional Variable`

          A variable reference.

          - `name: string`

            The variable name.

          - `lookback: optional FieldLookback`

            Optional historical lookback window.

          - `modifier: optional Modifier`

            Optional arithmetic modifier.

            - `args: array of number or string`

              - `number`

              - `string`

            - `name: ModifierOp`

              The modifier operation.

              - `"ADD"`

              - `"SUBTRACT"`

          - `period: optional FieldPeriod`

            Optional reporting period.

    - `name: string`

    - `updated_at: string`

    - `columns: optional array of FieldRef`

      Field references included when running this screener.

      - `name: string`

        The field name.

      - `lookback: optional FieldLookback`

        Optional historical lookback window.

      - `period: optional FieldPeriod`

        Optional reporting period (e.g. quarter or TTM).

      - `value_type: optional FieldType`

        The data type of the field value. Present only in responses.

    - `field_filter: optional array of FieldRef`

      Deprecated: use `columns` instead. Mirrors `columns`.

      - `name: string`

        The field name.

      - `lookback: optional FieldLookback`

        Optional historical lookback window.

      - `period: optional FieldPeriod`

        Optional reporting period (e.g. quarter or TTM).

      - `value_type: optional FieldType`

        The data type of the field value. Present only in responses.

    - `sorts: optional array of SortSpec`

      - `field: FieldRef`

        The field to sort by.

      - `direction: optional SortDirection`

        Sort direction (defaults to DESC).

        - `"ASC"`

        - `"DESC"`

### Screener Create Screener Response

- `ScreenerCreateScreenerResponse = BaseResponse`

  - `data: ScreenerEntry`

    A saved screener configuration entry

    - `id: string`

    - `created_at: string`

    - `filters: array of SearchFilter`

      - `left: FieldRef`

        The field to filter on.

        - `name: string`

          The field name.

        - `lookback: optional FieldLookback`

          Optional historical lookback window.

          - `"ONE_DAY"`

          - `"ONE_WEEK"`

          - `"ONE_MONTH"`

          - `"THREE_MONTHS"`

          - `"SIX_MONTHS"`

          - `"YEAR_TO_DATE"`

          - `"ONE_YEAR"`

        - `period: optional FieldPeriod`

          Optional reporting period (e.g. quarter or TTM).

          - `"QUARTER"`

          - `"TRAILING_TWELVE_MONTHS"`

        - `value_type: optional FieldType`

          The data type of the field value. Present only in responses.

          - `"DECIMAL"`

          - `"INTEGER"`

          - `"STRING"`

          - `"ANALYST_RATING"`

          - `"DATE"`

      - `op: optional FilterOpSpec`

        The operator and optional arguments. Omit together with `right` for an unenabled filter.

        - `name: FilterOperator`

          The operator to apply.

          - `"LESS_THAN"`

          - `"LESS_OR_EQUAL"`

          - `"GREATER_THAN"`

          - `"GREATER_OR_EQUAL"`

          - `"EQUAL"`

          - `"BETWEEN"`

          - `"NOT_BETWEEN"`

          - `"ONE_OF"`

          - `"REGEX"`

          - `"BEGINS_WITH"`

          - `"ENDS_WITH"`

          - `"CONTAINS"`

          - `"IS_NULL"`

          - `"IS_NOT_NULL"`

        - `args: optional array of OperatorArg`

          Optional arguments that modify operator behavior.

          - `"LEFT_INCLUSIVE"`

          - `"RIGHT_INCLUSIVE"`

          - `"LEFT_EXCLUSIVE"`

          - `"RIGHT_EXCLUSIVE"`

          - `"CASE_INSENSITIVE"`

      - `right: optional array of FilterValue`

        The value(s) to compare against. Omit together with `op` for an unenabled filter.

        - `value: optional number or string`

          - `number`

          - `string`

        - `variable: optional Variable`

          A variable reference.

          - `name: string`

            The variable name.

          - `lookback: optional FieldLookback`

            Optional historical lookback window.

          - `modifier: optional Modifier`

            Optional arithmetic modifier.

            - `args: array of number or string`

              - `number`

              - `string`

            - `name: ModifierOp`

              The modifier operation.

              - `"ADD"`

              - `"SUBTRACT"`

          - `period: optional FieldPeriod`

            Optional reporting period.

    - `name: string`

    - `updated_at: string`

    - `columns: optional array of FieldRef`

      Field references included when running this screener.

      - `name: string`

        The field name.

      - `lookback: optional FieldLookback`

        Optional historical lookback window.

      - `period: optional FieldPeriod`

        Optional reporting period (e.g. quarter or TTM).

      - `value_type: optional FieldType`

        The data type of the field value. Present only in responses.

    - `field_filter: optional array of FieldRef`

      Deprecated: use `columns` instead. Mirrors `columns`.

      - `name: string`

        The field name.

      - `lookback: optional FieldLookback`

        Optional historical lookback window.

      - `period: optional FieldPeriod`

        Optional reporting period (e.g. quarter or TTM).

      - `value_type: optional FieldType`

        The data type of the field value. Present only in responses.

    - `sorts: optional array of SortSpec`

      - `field: FieldRef`

        The field to sort by.

      - `direction: optional SortDirection`

        Sort direction (defaults to DESC).

        - `"ASC"`

        - `"DESC"`

### Screener Replace Screener Response

- `ScreenerReplaceScreenerResponse = BaseResponse`

  - `data: ScreenerEntry`

    A saved screener configuration entry

    - `id: string`

    - `created_at: string`

    - `filters: array of SearchFilter`

      - `left: FieldRef`

        The field to filter on.

        - `name: string`

          The field name.

        - `lookback: optional FieldLookback`

          Optional historical lookback window.

          - `"ONE_DAY"`

          - `"ONE_WEEK"`

          - `"ONE_MONTH"`

          - `"THREE_MONTHS"`

          - `"SIX_MONTHS"`

          - `"YEAR_TO_DATE"`

          - `"ONE_YEAR"`

        - `period: optional FieldPeriod`

          Optional reporting period (e.g. quarter or TTM).

          - `"QUARTER"`

          - `"TRAILING_TWELVE_MONTHS"`

        - `value_type: optional FieldType`

          The data type of the field value. Present only in responses.

          - `"DECIMAL"`

          - `"INTEGER"`

          - `"STRING"`

          - `"ANALYST_RATING"`

          - `"DATE"`

      - `op: optional FilterOpSpec`

        The operator and optional arguments. Omit together with `right` for an unenabled filter.

        - `name: FilterOperator`

          The operator to apply.

          - `"LESS_THAN"`

          - `"LESS_OR_EQUAL"`

          - `"GREATER_THAN"`

          - `"GREATER_OR_EQUAL"`

          - `"EQUAL"`

          - `"BETWEEN"`

          - `"NOT_BETWEEN"`

          - `"ONE_OF"`

          - `"REGEX"`

          - `"BEGINS_WITH"`

          - `"ENDS_WITH"`

          - `"CONTAINS"`

          - `"IS_NULL"`

          - `"IS_NOT_NULL"`

        - `args: optional array of OperatorArg`

          Optional arguments that modify operator behavior.

          - `"LEFT_INCLUSIVE"`

          - `"RIGHT_INCLUSIVE"`

          - `"LEFT_EXCLUSIVE"`

          - `"RIGHT_EXCLUSIVE"`

          - `"CASE_INSENSITIVE"`

      - `right: optional array of FilterValue`

        The value(s) to compare against. Omit together with `op` for an unenabled filter.

        - `value: optional number or string`

          - `number`

          - `string`

        - `variable: optional Variable`

          A variable reference.

          - `name: string`

            The variable name.

          - `lookback: optional FieldLookback`

            Optional historical lookback window.

          - `modifier: optional Modifier`

            Optional arithmetic modifier.

            - `args: array of number or string`

              - `number`

              - `string`

            - `name: ModifierOp`

              The modifier operation.

              - `"ADD"`

              - `"SUBTRACT"`

          - `period: optional FieldPeriod`

            Optional reporting period.

    - `name: string`

    - `updated_at: string`

    - `columns: optional array of FieldRef`

      Field references included when running this screener.

      - `name: string`

        The field name.

      - `lookback: optional FieldLookback`

        Optional historical lookback window.

      - `period: optional FieldPeriod`

        Optional reporting period (e.g. quarter or TTM).

      - `value_type: optional FieldType`

        The data type of the field value. Present only in responses.

    - `field_filter: optional array of FieldRef`

      Deprecated: use `columns` instead. Mirrors `columns`.

      - `name: string`

        The field name.

      - `lookback: optional FieldLookback`

        Optional historical lookback window.

      - `period: optional FieldPeriod`

        Optional reporting period (e.g. quarter or TTM).

      - `value_type: optional FieldType`

        The data type of the field value. Present only in responses.

    - `sorts: optional array of SortSpec`

      - `field: FieldRef`

        The field to sort by.

      - `direction: optional SortDirection`

        Sort direction (defaults to DESC).

        - `"ASC"`

        - `"DESC"`
