## Patch Screener

`v1.screener.patch_screener(strscreener_id, ScreenerPatchScreenerParams**kwargs)  -> ScreenerPatchScreenerResponse`

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

Partially update a saved screener configuration.

Every field is optional. Omitting a field, or sending it as `null`,
leaves the stored value unchanged. Sending a field's empty value clears
it: `columns: []` clears the stored columns, `sorts: []` clears the
stored sort, and `filters: []` clears the stored filters. `name: ""` is
rejected -- a screener's name cannot be cleared. `shared: false` sets it
to `false`; it is a value, not a clear.

Unknown fields are rejected with a 422.

### Parameters

- `screener_id: str`

- `columns: Optional[Iterable[FieldRefParam]]`

  Structured field references to include when running this screener.
  Omit or send `null` to leave unchanged; `[]` clears the stored columns.

  - `name: str`

    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"`

    - `"ANNUAL"`

  - `value_type: Optional[FieldType]`

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

    - `"DECIMAL"`

    - `"INTEGER"`

    - `"STRING"`

    - `"ANALYST_RATING"`

    - `"DATE"`

- `filters: Optional[Iterable[SearchFilterParam]]`

  Structured search filter criteria. Omit or send `null` to leave
  unchanged; `[]` clears the stored filters.

  - `left: FieldRef`

    The field to filter on.

    - `name: str`

      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[List[OperatorArg]]`

      Optional arguments that modify operator behavior.

      - `"LEFT_INCLUSIVE"`

      - `"RIGHT_INCLUSIVE"`

      - `"LEFT_EXCLUSIVE"`

      - `"RIGHT_EXCLUSIVE"`

      - `"CASE_INSENSITIVE"`

  - `right: Optional[List[FilterValue]]`

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

    - `value: Optional[Union[float, str, null]]`

      - `float`

      - `str`

    - `variable: Optional[Variable]`

      A variable reference.

      - `name: str`

        The variable name.

      - `lookback: Optional[FieldLookback]`

        Optional historical lookback window.

      - `modifier: Optional[Modifier]`

        Optional arithmetic modifier.

        - `args: List[Union[float, str]]`

          - `float`

          - `str`

        - `name: ModifierOp`

          The modifier operation.

          - `"ADD"`

          - `"SUBTRACT"`

      - `period: Optional[FieldPeriod]`

        Optional reporting period.

- `name: Optional[str]`

  The name for this screener configuration. Omit or send `null` to
  leave unchanged. Cannot be set to an empty string.

- `shared: Optional[bool]`

  Whether any user may fetch this screener by id. Omit or send `null`
  to leave unchanged. `false` is a value, not a clear.

- `sorts: Optional[Iterable[SortSpecParam]]`

  Multi-field sort specifications. Omit or send `null` to leave
  unchanged; `[]` clears the stored sort.

  - `field: FieldRef`

    The field to sort by.

  - `direction: Optional[SortDirection]`

    Sort direction (defaults to DESC).

    - `"ASC"`

    - `"DESC"`

### Returns

- `class ScreenerPatchScreenerResponse: …`

  - `data: ScreenerEntry`

    A saved screener configuration entry

    - `id: str`

    - `created_at: datetime`

    - `filters: List[SearchFilter]`

      - `left: FieldRef`

        The field to filter on.

        - `name: str`

          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"`

          - `"ANNUAL"`

        - `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[List[OperatorArg]]`

          Optional arguments that modify operator behavior.

          - `"LEFT_INCLUSIVE"`

          - `"RIGHT_INCLUSIVE"`

          - `"LEFT_EXCLUSIVE"`

          - `"RIGHT_EXCLUSIVE"`

          - `"CASE_INSENSITIVE"`

      - `right: Optional[List[FilterValue]]`

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

        - `value: Optional[Union[float, str, null]]`

          - `float`

          - `str`

        - `variable: Optional[Variable]`

          A variable reference.

          - `name: str`

            The variable name.

          - `lookback: Optional[FieldLookback]`

            Optional historical lookback window.

          - `modifier: Optional[Modifier]`

            Optional arithmetic modifier.

            - `args: List[Union[float, str]]`

              - `float`

              - `str`

            - `name: ModifierOp`

              The modifier operation.

              - `"ADD"`

              - `"SUBTRACT"`

          - `period: Optional[FieldPeriod]`

            Optional reporting period.

    - `name: str`

    - `shared: bool`

      Whether any user may fetch this screener by id.

    - `updated_at: datetime`

    - `columns: Optional[List[FieldRef]]`

      Field references included when running this screener.

      - `name: str`

        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[List[SortSpec]]`

      - `field: FieldRef`

        The field to sort by.

      - `direction: Optional[SortDirection]`

        Sort direction (defaults to DESC).

        - `"ASC"`

        - `"DESC"`

### Example

```python
from clearstreet import ClearStreet

client = ClearStreet(
    api_key="My API Key",
)
response = client.v1.screener.patch_screener(
    screener_id="550e8400-e29b-41d4-a716-446655440000",
)
print(response)
```

#### 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"
  }
}
```
